【SSH快速进阶】——struts2调用action的三种方式
来源:互联网 发布:安卓简单捕鱼源码 编辑:程序博客网 时间:2024/04/30 15:08
经过前段时间对struts2的学习与实践,总结了一下在struts2中调用action的三种方式。
1、直接调用
我前面的博客【SSH快速进阶】系列第一篇《【SSH快速进阶】——struts2简单的实例》采用的就是这种方式。
有两种情景:
(1) 在form中指定访问的action
<form action="userLogin"> username:<input type="text" name="username" /><br> password:<input type="password" name="password" /><br> <input type="submit" value="submit" /><br> </form>
struts.xml中的配置为:
<struts> <package name="struts2" extends="struts-default"> <action name="userLogin" class="com.danny.user.action.UserAction"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts>
这时,页面点击提交会直接访问UserAction.java中的execute方法:
public String execute() { if("admin".equals(username) && "admin".equals(password)) { return "success"; }else{ return "error"; } }
(2) 直接在浏览器通过地址访问action:
比如输入 http://localhost:8080/struts2/index.action
对应的struts.xml为:
<struts> <package name="struts2" extends="struts-default"> <action name="index" class="com.danny.user.action.IndexAction"> <result name="index">/index.jsp</result> </action> </package> </struts>
这时,也会直接访问IndexAction.java中的execute方法:
public String execute() { return "index"; }
2、在配置文件中指定action的方法名称
通过第一种访问action的方式可以发现一个弊端,每个action中只有一个execute方法,如果我想在一个action中处理多个请求呢? 下面这种方法就派上用场啦!
比如注册和登陆这两个场景,想在同一个action中处理,那么struts.xml可以这样配:
<struts> <package name="struts2" extends="struts-default"> <!--处理用户注册--> <action name="userRegister" class="com.danny.user.action.UserAction" method="Register"> <result name="success">/registersuccess.jsp</result> </action> <!--处理用户登录--> <action name="userLogin" class="com.danny.user.action.UserAction" method="Login"> <result name="success">/loginsuccess.jsp</result> </action> </package> </struts>
这样,在同一个action—UserAction中可以写两个方法 Register和Login:
public String Register(){ //处理注册 return "registersuccess";}public String Login(){ //处理登录 return "loginsuccess";}
然后我们处理注册时,调用userRegister这个action;处理登录时,调用userLogin这个action即可。
3、通配符方式的调用
看了上面第二种方法,还会有一个问题:处理一个请求除了再action中建立相应的方法外,还需要在struts.xml中配置一个对应的action标签,这样下来,一个系统中会有多少个调用啊?struts.xml的复杂程度大大提高了。这是可以用这种方法来简化struts.xml的复杂程度。
同样以上面的注册和登录两个场景来举例。
struts.xml中可以这样配置:
<struts> <package name="struts2" extends="struts-default"> <action name="user_*" class="com.danny.user.action.UserAction" method="{1}"> <result name="registersuccess">/registersuccess.jsp</result> <result name="loginsuccess">/loginsuccess.jsp</result> </action> </package> </struts>
UserAction不变,还是对应的Register和Login两个方法。
在action的name属性中,user_后面是 * 号,method的值是{1},代表前面第一个通配符的内容,当访问user_*时,会调用对应action(这里是UserAction)中名为 * 的方法。
比如处理用户注册时访问user_Register,那么调用的就是UserAction中的Register方法;处理用户登录时访问user_Login,那么调用的就是UserAction中的Login方法。
这种方法的好处就是,可以简化struts.xml的配置,同时还可以统一系统开发的标准,比如系统中处理用户的各种请求统一由名为“ user_* ”的action来处理,处理订单的各种请求统一由名为“ order_* “的action来处理。
【 转载请注明出处——胡玉洋《【SSH快速进阶】——struts2调用action的三种方式》】
- 【SSH快速进阶】——struts2调用action的三种方式
- 【SSH三大框架】Struts2基础第三篇:配置Action以及调用Action的三种方式
- 【Struts2进阶】Struts2的Action访问Servlet API 的 三种方式
- 【SSH快速进阶】——struts2简单的实例
- struts2创建Action的三种方式
- Struts2 action的三种实现方式
- Struts2:action的三种开发方式
- 【SSH快速进阶】——Spring IOC容器注入的几种方式
- 【SSH快速进阶】——探索Hibernate对象的三种状态:Transient、Persistent、Detached
- Struts2系统学习(6)action中方法调用的三种方式总结
- 【Struts2进阶】Struts2 多方法调用的两种方式
- SSH-----Struts2的Action开发方式
- 【SSH快速进阶】——Struts2数据校验
- struts2 ——action接受参数的三种方式总结
- struts2学习(二)—action获取表单提交数据的三种方式
- 【SSH快速进阶】——struts2的模型驱动—ModelDriven
- Struts2方法调用的三种方式
- Struts2方法调用的三种方式
- fifo实现本地简单聊天程序
- Java集合之HashMap
- Adapter的使用步骤和baseAdapter的使用以及inflater的一些运用
- 本地编译 全志a33 的步骤
- Objective-C 【完整OC项目-购票系统-系统分析-代码实现】
- 【SSH快速进阶】——struts2调用action的三种方式
- 【Java数据结构基础】对象与指针关系
- 接口IIC_SPI_URAT_USB_can
- 最小美观程度
- 网页居中
- Cocos2d-x内存管理-绕不过去的坎
- c语言-一些学习c的经典例子
- Java集合之TreeMap
- 剑指Offer-用两个栈实现队列