Struts2之Action请求方式与参数传递的方式总结

Easter79
• 阅读 698

在struts2中关于action的请求url请求基本上由三种情况:

首先要先提下struts在发送请求的处理流程:

客户端请求(http://localhost:8080/HelloWorld/stu/stuadd)->tomcat接收请求->根据HelloWorld这个项目来加载处理web.xml->把请求交给strutstfilter来处理,strutsfilter交给doFilter处理->doFilter根据struts.xml找到对应的namespace、action,及action处理完成返回的信息来显示调用对应的result页面->返回给客户端

struts.xml配置如下:

    

        #1:不指定 由StudentAction中的默认函数execute来处理

       
            /Student_index.jsp
       

        #2:指定 来处理
       
            /Student_index.jsp
       

    
             
       
            /Student_add.jsp
            /Student_add_error.jsp
       

          #3:
       
            /user_add.jsp
       

        #4:通配符处理
       
            /{1}_{2}.jsp
       

   

参数传递:struts中参数传递有基本三种方法:

1:Action接收参数:
    1:由Action中的getXXX(),setXXX()来处理参数的接收,其中的Action的属性名称不一定要传递的参数的名称一样,但是getXXX后面的名称一定要一致。

代码:

public class UserAction extends ActionSupport {
    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;
    }

    //参数和成员变量时一一对应的 类型自动转换
    private String name;
    private int age;

    public String add(){
        return "add_user";
    }
}

    2:域模型对象

创建一个域模型对象接收参数此时参数的传递:user.name=.....

同时由于可能域模型字段比要接收的字段少比如password的输入的验证,这时可以使用DTO(数据传输对象)

作为中间的数据接收然后再传递来处理

    DTO:数据传输对象 
    DO:数据对象
    3:modeldriven 模型驱动
代码:使用的是com.opensymphony.xwork2.ModelDriven;模型驱动类

这是请求的url地址:http://localhost:8080//HelloWorld/stu/stuadd?name=liujijun&age=27 就能填充到

Student类中,这是需要单独的new出来一个student对象

public class StudentAction extends ActionSupport implements ModelDriven {
    
    private Student student = new Student();
    
    public String index(){
        
        return SUCCESS;
    }
    
    public String add(){
        
        if(true){
            this.addFieldError("name", "name is error");
            this.addFieldError("name", "name is too long");
            return "add_student_error";
        }
        return "add_student";
    }

    @Override
    public Student getModel() {
        // TODO Auto-generated method stub
        return student;
    }
    
    @Override
    public String execute(){
        return SUCCESS;
    }

}

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
SSH基础的面试题1
1.简述struts2的执行流程!(http://static.oschina.net/uploads/space/2016/0311/155522_1MzX_2646795.jpg)1)客户端初始化一个指向Servlet容器请求;2)这个请求经过一系列的过滤器(Filter)3)接着Filter
Wesley13 Wesley13
2年前
P2P技术揭秘.P2P网络技术原理与典型系统开发
Modular.Java(2009.06)\.Craig.Walls.文字版.pdf:http://www.t00y.com/file/59501950(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.t00y.com%2Ffile%2F59501950)\More.E
Easter79 Easter79
2年前
SpringMvc接受特殊符号参数被转义
WEB开发时,在前端通过get/post方法传递参数的时候 如果实参附带特殊符号,后端接收到的值中特殊符号就会被转义例如该请求: http://localhost:10001/demo/index.do?name张三(1)注:中文()不会出现此种情况后台就收到的实际name值为:  张三&40;1&41;&40;其实为h
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
2年前
ActionContext和ServletActionContext区别以及action访问servlet API的三种方法
1\.ActionContext在Struts2开发中,除了将请求参数自动设置到Action的字段中,我们往往也需要在Action里直接获取请求(Request)或会话(Session)的一些信息,甚至需要直接对JavaServletHttp的请求(HttpServletRequest),响应(HttpServletResponse)操作.我们需要
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k