struts.xml处理同个action不同方法

来源:互联网 发布:怎样在淘宝开店铺介绍 编辑:程序博客网 时间:2024/06/05 13:22
struts2的关于method=“{1}"意思详解<action name= "Login_* " method= "{1} " class= "mailreader2.Login ">中Login_*带*是什么意思?method= "{1} "带{}这个是什么意思?====================================================name= "Login_* "代表这个action处理所有以Login_开头的请求method= "{1} "根据前面请求Login_methodname,调用action中的以methodname命名的方法class= "mailreader2.Login "action的类名称如jsp文件中请求Login_validateUser的action名称,根据上面配置,调用action类mailreader2.Login类中方法validateUser()又如:对于Login_update请求,将会调用mailreader2.Login的update()方法。它的用法同webwork中的!符号的作用,相当于是一个通配符。+++++++++++++++++++++++++++++++++++++++++++++++++++++++Struts2 学习笔记4--Action Method--接收参数文章分类:Java编程struts2中的路径问题注意:在jsp中”/”表示tomcat服务器的根目录,在struts.xml配置文件中”/”表示webapp的根路径,即MyEclipse web项目中的WebRoot路径。总结:struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径 。虽然可以用redirect方式解决,但redirect方式并非必要。解决办法非常简单,统一使用绝对路径。 (在jsp中用request.getContextRoot方式来拿到webapp的路径)或者使用myeclipse经常用的,指定basePath。Action Method配置:<package name="user" extends="struts-default" namespace="/user"><action name="userAdd" class="com.bjsxt.struts2.user.action.UserAction" method="add"><result>/user_add_success.jsp</result></action><action name="user" class="com.bjsxt.struts2.user.action.UserAction"><result>/user_add_success.jsp</result></action></package>总结:Action执行的时候并不一定要执行execute方法1、可以在配置文件中配置Action的时候用method=来指定执行哪个方法2、也可以在url地址中动态指定(动态方法调用DMI )(推荐)<a href="<%=context %>/user/userAdd">添加用户</a><br /><a href="<%=context %>/user/user!add">添加用户</a><br />前者会产生太多的action,所以不推荐使用。(注:<% String context = request.getContextPath(); %>)Action Wildcard(Action 通配符)配置:<package name="actions" extends="struts-default" namespace="/actions"><action name="Student*" class="com.bjsxt.struts2.action.StudentAction" method="{1}"><result>/Student{1}_success.jsp</result></action><action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}"><result>/{1}_{2}_success.jsp</result><!-- {0}_success.jsp --></action></package>{1}、{2}表示第一第二个占位符*为通配符通过action name的通配匹配,获得占位符,可以使用占位符放在result和method、class中替代匹配的字符。总结:使用通配符,将配置量降到最低。<a href="<%=context %>/actions/Studentadd">添加学生</a><a href="<%=context %>/actions/Studentdelete">删除学生</a>不过,一定要遵守"约定优于配置"的原则。<a href="<%=context %>/actions/Teacher_add">添加老师</a><a href="<%=context %>/actions/Teacher_delete">删除老师</a><a href="<%=context %>/actions/Course_add">添加课程</a><a href="<%=context %>/actions/Course_delete">删除课程</a>接收参数值1、使用action属性接收参数只需在action加入getter/setter方法,如参数name=a,接受到参数必须有getName/setName方法。链接:<a href="user/user!add?name=a&age=8">public class UserAction extends ActionSupport {private String name;private int age;public String add() {System.out.println("name=" + name);System.out.println("age=" + age);return SUCCESS;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}2、使用Domain Model接收参数将之前的属性放入到POJO ,并设置属性的setter/getter方法链接:使用Domain Model接收参数<a href="user/user!add?user.name=a&user.age=8">添加用户</a>public class UserAction extends ActionSupport {private User user;//private UserDTO userDTO;public String add() {System.out.println("name=" + user.getName());System.out.println("age=" + user.getAge());return SUCCESS;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}}public class User {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}3、使用ModelDriven接收参数Action实现ModelDriven接口,实现getModel()方法。这样user需要自己new出来,getModel返回user。链接:使用ModelDriven接收参数<a href="user/user!add?name=a&age=8">添加用户</a>public class UserAction extends ActionSupport implements ModelDriven<User> {private User user = new User();public String add() {System.out.println("name=" + user.getName());System.out.println("age=" + user.getAge());return SUCCESS;}@Overridepublic User getModel() {return user;}}字符编码配置:<constant name="struts.i18n.encoding" value="GBK" /> <!-- internationalization -->在struts2.1.6中不起作用,属于bug,在struts2.1.7中修改。解决方案:修改web.xml 中:<filter><filter-name>struts2</filter-name><!-- struts2.1中使用filter --><!--<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>--><!-- struts2.0中使用的filter --><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter>


原创粉丝点击