<thead id="dlkbl"></thead>
    <sub id="dlkbl"><del id="dlkbl"></del></sub>

  • <thead id="dlkbl"><del id="dlkbl"></del></thead>
      <blockquote id="dlkbl"><del id="dlkbl"><legend id="dlkbl"></legend></del></blockquote>

      Struts2 Action/动作

      动作是Struts2框架的核心,因为他们的任何MVC(模型 - 视图 - 控制器)框架。每个URL将被映射到一个特定的动作,它提供了来自用户的请求提供服务所需的处理逻辑。

      但动作也提供其他两个重要的能力。首先,操作从请求数据的传输中起着重要的作用,通过向视图,无论是一个JSP或其它类型的结果。二,动作必须协助的框架,在确定结果应该渲染视图,在响应该请求将被退回。

      创建动作:

      在Struts2的动作,唯一的要求是必须有一个无参数的方法返回String或结果的对象,必须是一个POJO。如果不带参数的方法是不指定,则默认动作是使用execute()方法。

      也可以选择扩展ActionSupport类实现了6个接口,包括动作界面。动作界面如下:

      public interface Action { public static final String SUCCESS = "success"; public static final String NONE = "none"; public static final String ERROR = "error"; public static final String INPUT = "input"; public static final String LOGIN = "login"; public String execute() throws Exception; }

      让我们来看看Hello World示例的操作方法:

      package com.yiibai.struts2; public class HelloWorldAction{ private String name; public String execute() throws Exception { return "success"; } public String getName() { return name; } public void setName(String name) { this.name = name; } }

      为了说明这一点,操作方法控制视图,让我们做出以下更改执行方法和扩展类ActionSupport 如下:

      package com.yiibai.struts2; import com.opensymphony.xwork2.ActionSupport; public class HelloWorldAction extends ActionSupport{ private String name; public String execute() throws Exception { if ("SECRET".equals(name)) { return SUCCESS; }else{ return ERROR; } } public String getName() { return name; } public void setName(String name) { this.name = name; } }

      在这个例子中,我们有一些在execute方法的逻辑来看待的name属性。如果属性等于字符串“SECRET”,我们返回SUCCESS 的结果,否则我们返回ERROR 的结果。因为我们已经扩展ActionSupport,所以我们可以使用字符串常量的成功和错误。现在,让我们修改我们的struts.xml文件如下:

      <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="helloworld" extends="struts-default"> <action name="hello" class="com.yiibai.struts2.HelloWorldAction" method="execute"> <result name="success">/HelloWorld.jsp</result> <result name="error">/AccessDenied.jsp</result> </action> </package> </struts>

      创建视图

      让我们创建以下JSP文件 helloWorld.jsp 的WebContent文件夹在eclipse项目。要做到这一点,右键单击WebContent文件夹在项目资源管理器,选择New >JSP File。该文件将要求返回的结果是SUCCESS,这是一个字符串常量“success”的定义在动作界面:

      <%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Hello World</title> </head> <body> Hello World, <s:property value="name"/> </body> </html>

      以下是由框架的动作的结果将被调用的文件,该文件是等于字符串常量“错误”的ERROR 。以下是AccessDenied.jsp 的内容

      <%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Access Denied</title> </head> <body> You are not authorized to view this page. </body> </html>

      我们还需要在WebContent文件夹中创建index.jsp。该文件将作为初始动作URL,用户可以直接点击告诉Struts 2框架调用HelloWorldAction类的 execute方法,并呈现 helloWorld.jsp视图。

      <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Hello World</title> </head> <body> <h1>Hello World From Struts2</h1> <form action="hello"> <label for="name">Please enter your name</label><br/> <input type="text" name="name"/> <input type="submit" value="Say Hello"/> </form> </body> </html>

      就是这样,不需要改变的web.xml文件,所以让我们用同一个web.xml,是之前我们已经创建了范例章。现在,我们已经准备好运行使用Struts 2框架的 Hello World应用程序。

      执行应用程序

      右键点击项目名称,并单击 Export > WAR File 创建一个WAR文件。然后在Tomcat 的webapps目录下部署这个WAR。最后,启动Tomcat服务器和尝试访问URL http://localhost:8080/HelloWorldStruts2/index.jsp。这会给出以下画面:

      Hello World Input

      让我们为“SECRET”,并输入一个字,应该看到以下页面:

      Success Result

      现在输入任何单词而非“SECRET”,应该看到以下页面: 

      Access Denied Result

      建立多个动作:

      经常会定义一个以上的动作,以处理不同的请求,并提供不同的用户的URL,因此可以定义不同的类定义如下:

      package com.yiibai.struts2; import com.opensymphony.xwork2.ActionSupport; class MyAction extends ActionSupport{ public static String GOOD = SUCCESS; public static String BAD = ERROR; } public class HelloWorld extends ActionSupport{ ... public String execute() { if ("SECRET".equals(name)) return MyAction.GOOD; return MyAction.BAD; } ... } public class SomeOtherClass extends ActionSupport{ ... public String execute() { return MyAction.GOOD; } ... }

      在struts.xml文件中配置这些操作如下:

      <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> struts> <constant name="struts.devMode" value="true" /> <package name="helloworld" extends="struts-default"> <action name="hello" class="com.yiibai.struts2.HelloWorld" method="execute"> <result name="success">/HelloWorld.jsp</result> <result name="error">/AccessDenied.jsp</result> </action> <action name="something" class="com.yiibai.struts2.SomeOtherClass" method="execute"> <result name="success">/Something.jsp</result> <result name="error">/AccessDenied.jsp</result> </action> </package> </struts>

      正如看到在上述假设的例子,动作的结果是重复的SUCCESS和ERROR。要解决这个问题,建议创建一个类包含结果的结果。

      相关文章
      相关标签/搜索
      4887王中王鉄算盘开奖结 株洲市| 固原市| 廊坊市| 建德市| 信宜市| 日土县| 高青县| 苏州市| 德庆县| 青神县| 平谷区| 永兴县| 洛浦县| 全州县| 运城市| 海兴县| 乌恰县| 宁明县| 富裕县| 九寨沟县| 西昌市| 屯门区| 怀集县| 乐安县| 陇川县| 临清市| 丹巴县| 民勤县| 金堂县| 拉萨市| 从江县| 如皋市| 阿勒泰市| 万载县| 新营市| 盐津县| 手游| 绥棱县| 界首市| 宝兴县| 灵寿县| 东阿县| 西林县| 昔阳县| 梓潼县| 响水县| 工布江达县| 丘北县| 于都县| 凤翔县| 哈尔滨市| 晋宁县| 自贡市| 斗六市| 河西区| 安图县| 杭锦后旗| 冀州市| 体育| 黄平县| 怀宁县| 涞源县| 钟祥市| 迁安市| 永济市| 宿州市| 鸡东县| 邯郸市| 台北市| 古浪县| 宜丰县| 房山区| 甘泉县| 兰考县| 山西省| 炉霍县| 巴彦县| 安阳市| 张掖市| 张掖市| 观塘区| 玉树县| 大同市| 遵义县| 九龙县| 林州市| 囊谦县| 泰兴市| 镇雄县| 平遥县| 恩施市| 芒康县| 贵南县| 离岛区| 图木舒克市| 昌平区| 临夏市| 鹤庆县| 千阳县| 广安市| 乌海市| 洛浦县| 海阳市| 昆山市| 增城市| 福清市| 英山县| 华宁县| 岳池县| 临沭县| 八宿县| 广饶县| 福州市| 宣化县| 德保县| 平阳县| 孝义市| 浮山县| 湘潭市| 铜梁县| 辉南县| 高密市| 专栏| 龙游县| 博白县| 柘城县| 麻阳| 浦江县| 德清县| 临西县| 邹城市| 赤峰市| 普宁市| 瑞金市| 阳高县| 林西县| 乐亭县| 南漳县| 石嘴山市| 怀化市| 广河县| 南涧| 南平市| 双牌县| 通许县| 涟水县| 尖扎县| 溆浦县| 哈尔滨市| 六枝特区| 井研县| 锡林郭勒盟| 汽车| 桐庐县| 镇原县| 齐齐哈尔市| 炉霍县| 东乡族自治县| 肥东县| 辰溪县| 兴安盟| 华亭县| 班戈县| 长顺县| 黑山县| 腾冲县| 保定市| 盘锦市| 新沂市| 鄢陵县| 丰宁| 阿拉善盟| 溧水县| 乌拉特后旗| 岳阳县| 宜春市| 惠水县| 南昌县| 开原市| 随州市| 台东县| 宜昌市| 益阳市| 桂平市| 红原县| 兴城市| 武义县| 昆明市| 金秀| 正镶白旗| 安乡县| 宣城市| 河北省| 延长县| 安阳县| 建阳市| 中山市| 澄城县| 军事| 台南市| 金寨县| 龙山县| 烟台市| 扎兰屯市| 舒兰市| 阿坝县| 柳河县| 黔江区| 黑龙江省| 福州市| 本溪| 稻城县| 乐都县| 信丰县| 新民市| 团风县| 眉山市| 中阳县| 洛浦县| 甘泉县| 左贡县| 卢龙县| 商丘市| 个旧市| 西丰县| 泌阳县| 临海市| 邵阳县| 红河县| 石景山区| 灌南县| 磴口县| 高雄县| 凤庆县| 平阴县| 开原市| 辰溪县| 原平市| 渑池县| 略阳县| 荔浦县| 五家渠市| 纳雍县| 探索| 大城县| 娱乐| 唐海县| 隆子县| 丁青县| 合江县| 威海市| 海门市| 灵寿县| 武宁县| 奉节县| 石河子市| 泸州市| 汉沽区| 利辛县| 诏安县| 万载县| 延津县| 开阳县| 德兴市| 洮南市| 深水埗区| 永宁县| 仁化县| 余江县| 偏关县| 邛崃市| 民和| 聂荣县| 奈曼旗| 延津县| 金沙县| 栾城县| 阿勒泰市| 集贤县| 新余市| 永泰县| 卓尼县| 巨野县| 聂荣县| 榕江县| 宁津县| 杭州市| 汝州市| 锡林浩特市| 湘潭市| 沙坪坝区| 苍溪县| 藁城市| 丰县| 三穗县| 砚山县| 灵川县| 剑阁县| 上饶县| 东台市| 库伦旗| 福贡县| 大同县| 厦门市| 阿克陶县| 柏乡县| 蒙阴县| 巴南区| 潞西市| 阳谷县| 上虞市| 天等县| 灵山县| 株洲县| 玉山县| 垣曲县| 年辖:市辖区| 山丹县| 于都县| 万州区| 庄浪县| 延长县| 边坝县| 桓仁| 贵南县| 佳木斯市| 沁水县| 明星| 宜春市| 盐津县| 福泉市| 湘潭市| 公主岭市| 乐清市| 綦江县| 肃南| 遵化市| 望城县| 庆阳市| 逊克县| 钟祥市| 嵩明县| 延边| 清新县| 弥勒县| 新蔡县| 砀山县| 南乐县| 胶州市| 台北市| 卢氏县| 运城市| 罗源县| 宜州市| 泗阳县| 淮滨县| 雅安市| 隆尧县| 新巴尔虎右旗| 九江市| 灵山县| 新丰县| 珠海市| 德格县| 乐山市| 治县。| 怀宁县| 定襄县| 珠海市| 城步| 锡林郭勒盟| 建湖县| 晋江市| 咸阳市| 灵武市| 财经| 万载县| 金阳县| 阿坝县| 衡阳县| 孟州市| 冷水江市| 沙河市| 旬阳县| 南丰县| 托里县| 长乐市| 凉城县| 许昌市| 聂拉木县| 河西区| 沽源县| 馆陶县| 子洲县| 循化| 乐亭县| 大悟县| 贺州市| 东宁县| 甘南县| 毕节市| 启东市| 潮州市| 梅河口市| 文化| 阿克| 雷波县| 巴林右旗| 板桥市| 措美县| 米脂县| 台北县| 安西县| 北海市| 庆元县| 托里县| 怀集县| 晋江市| 贵阳市| 文成县| 临泽县| 左权县| 新昌县| 荆州市| 丰原市| 富川| 都匀市| 贵阳市| 文成县| 健康| 鱼台县| 太谷县| 庄浪县| 马龙县| 南平市| 宁蒗| 勃利县| 合水县| 临海市| 南江县| 昭苏县| 宣化县| 杭锦旗| 岱山县| 郓城县| 汝城县| 贡觉县| 汉源县| 思南县| 新密市| 青阳县| 西贡区| 南宁市| 康平县| 水富县| 上高县| 陇川县| 定日县| 长宁县| 扎鲁特旗| 岢岚县| 舒兰市| 松溪县| 南城县| 福建省| 太和县| 舟山市| 娱乐| 阳东县| 长汀县| 澳门| 延津县| 葵青区| 垦利县| 丰台区| 肥东县| 从化市| 博湖县| 上饶市| 广东省| 连平县| 天水市| 闵行区| 永嘉县| 江都市| 岳普湖县| 城口县| 南乐县| 讷河市| 独山县| 寿光市| 乌兰察布市| 仁怀市| 镇原县| 南召县| 五指山市| 广西| 苗栗市| 甘德县| 瑞丽市| 通渭县| 阳新县| 沂源县| 德清县| 漠河县| 商洛市| 巢湖市| 精河县| 平湖市| 祁东县| http://3g.jp1860tradezarko.fun http://bbs.jp1860banko.fun http://www.jp1860avoido.fun http://www.jp1860lizito.fun http://www.jp1860guardo.fun http://www.jp1860cuto.fun http://www.jp1860broadcasto.fun http://www.jp1860respondo.fun http://www.jp1860singleo.fun http://www.jp1860narrowo.fun http://www.jp1860estizateo.fun http://www.jp1860installo.fun http://www.jp1860prepareo.fun http://www.jp1860parko.fun http://www.jp1860buttono.fun