详解struts2中配置action的方法
如何解决action太多的问题??
我们因为需要不同的方法,所以往往建立很多不同的类,但是每个类中往往仅仅几行代码,不仅浪费了时间,而且配置起来也很繁琐,所以,建立一个共有的类,然后根据以下方式来操作,从而解决类太多的问题。
1.method方式:建立一个Action类,在类中编写不同的方法,在不同的方法中处理不同的请求。
在struts.xml中配置method属性,让不同的action指向同一个Action类的不同方法。
2.感叹号方式:
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
不需要配置method,直接用!方法名的方式来调用。
DynamicMethodInvocation =动态方法调用
3.通配符方式(官网推荐) “约定大于配置”
checkLogin
checkExists
add
delete
modify
<action name="*" class="myuser.UserAction" method={1}>
</action>
以用户注册的方式,来和大家具体的讲解:
totalaction类:
1 package user; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 import javax.servlet.http.HttpSession; 10 11 import org.apache.struts2.ServletActionContext; 12 13 import com.opensymphony.xwork2.ActionSupport; 14 15 public class TotalAction extends ActionSupport { 16 HttpServletResponse response= ServletActionContext.getResponse(); 17 HttpServletRequest request=ServletActionContext.getRequest(); 18 HttpSession session= request.getSession(); 19 private User user; 20 21 public User getUser() { 22 return user; 23 } 24 25 public void setUser(User user) { 26 this.user = user; 27 } 28 //添加用户到用户列表中。 29 public String add() throws Exception { 30 // TODO Auto-generated method stub 31 UserDAO dao =new UserDAO(); 32 //System.out.println("::"+user.getID()); 33 //System.out.println(""+user.getUserName()); 34 //System.out.println("用户名::"+user.getPwd()); 35 dao.addUser(user); 36 return this.SUCCESS; 37 } 38 //登录时检查用户名是否存在 39 public String checkLogin() throws Exception { 40 // TODO Auto-generated method stub 41 UserDAO dao =new UserDAO(); 42 try { 43 PrintWriter out= response.getWriter(); 44 if(dao.checkLogin(user)) 45 { 46 //如果用户名字和密码输入正确,则将用户名和密码保存在session中,用于用户登录后用户名在列表的显示。 47 session.setAttribute("USERS",user); 48 out.print("1"); 49 } 50 else 51 { 52 out.print("0"); 53 } 54 } catch (IOException e) { 55 // TODO Auto-generated catch block 56 e.printStackTrace(); 57 } 58 return null; 59 } 60 //检查注册的用户名是否重复 61 public String checkExists() throws Exception { 62 // TODO Auto-generated method stub 63 UserDAO dao = new UserDAO(); 64 PrintWriter out = response.getWriter(); 65 if(dao.checkExists(user)) 66 { 67 //如果用户名存在则返回1,并在前端显示用户名已存在。 68 out.print("1"); 69 } 70 else 71 { 72 out.print("0"); 73 } 74 return null; 75 } 76 77 //修改用户名和密码 78 public String modify() throws Exception { 79 // TODO Auto-generated method stub 80 return super.execute(); 81 } 82 //删除用户名和密码 83 public String delete() throws Exception { 84 // TODO Auto-generated method stub 85 return super.execute(); 86 } 87 88 }
method的方法中struts的配置:
1 <struts> 2 <constant name="struts.action.extension" value="action,,"></constant> 3 <constant name="struts.devMode " value="true"></constant> 4 <package name="user" namespace="/" extends="struts-default"> 5 <action name="checklogin" class="user.TotalAction" method="checkLogin"> 6 </action> 7 <action name="CheckUser" class="user.TotalAction" method="checkExists"> 8 </action> 9 <action name="add" class="user.TotalAction" method="add"> 10 <result name="success">/userlist.jsp</result> 11 </action> 12 </package> 13 </struts>
2,感叹号方式struts的配置。
1 <struts> 2 <constant name="struts.action.extension" value="action,,"></constant> 3 <constant name="struts.devMode " value="true"></constant> 4 <constant name="struts.enable.DynamicMethodInvocation" value="true" /> //需要配置 5 <package name="user" namespace="/" extends="struts-default"> 6 <action name="user" class="user.TotalAction">//不需要method方法,只需在jsp页面加载时用!表示。 7 <result name="success">/userlist.jsp</result> 8 </action> 9 </package> 10 </struts>
如:$.post("user!checkExists",。。。。。
3.通配符方式(官网推荐) “约定大于配置”
1 <struts> 2 <constant name="struts.action.extension" value="action,,"></constant> 3 <constant name="struts.devMode " value="true"></constant> 4 <constant name="struts.enable.DynamicMethodInvocation" value="true" /> 5 <package name="user" namespace="/" extends="struts-default"> 6 <action name="*" class="user.TotalAction" method="{1}" >//只需要将其改变成此方式。而jsp页面改变为方法名即可。此方式较为常用。 7 <result name="success">/userlist.jsp</result> 8 </action> 9 </package> 10 </struts>
如::<form action="add" method="post">