zoukankan      html  css  js  c++  java
  • 详解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 }
    View Code

    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">

  • 相关阅读:
    win7 重装 docker 启动后无法启动错误解决
    ASP.NET MVC 播放远程服务器上的MP3文件
    ubuntu+mono+PetaPoco+Oracle+.net 程序部署
    .NET Core 2.0 问题杂记
    博客园挂了吗?
    Content-Type: application/vnd.ms-excel">
    Storm
    Razor语法
    类型后面加问号 int?
    Apache vue site configuration
  • 原文地址:https://www.cnblogs.com/xiadongqing/p/5245192.html
Copyright © 2011-2022 走看看