`
TravelAllRound
  • 浏览: 2157 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts 的action请求方式

 
阅读更多
在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配置如下:

<package name="student" namespace='/stu' extends="struts-default">
    

        #1:不指定 <action method="methodName">由StudentAction中的默认函数execute来处理

        <action name="default" class="com.hupu.action.StudentAction" >
            <result>/Student_index.jsp</result>
        </action>

        #2:指定<action method="methodName"> 来处理
        <action name="index" class="com.hupu.action.StudentAction" method="index"  >
            <result>/Student_index.jsp</result>
        </action>
    
             <!-- method 请求时 回调用 method=add的方法 -->
        <action name="stuadd" class="com.hupu.action.StudentAction" method="add"  >
            <result name='add_student'>/Student_add.jsp</result>
            <result name='add_student_error'>/Student_add_error.jsp</result>
        </action>

          #3: <!-- DMI 动态方法调用 user!add  这样 就可以只配置这一样action 就能处理相似的请求-->
        <action name="user" class="com.hupu.action.UserAction">
            <result name='add_user'>/user_add.jsp</result>
        </action>

        #4:通配符处理
        <action name="*_*" class="com.hupu.action.{1}Action" method="{2}">
            <result>/{1}_{2}.jsp</result>
        </action>
    </package>




参数传递: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<Student> {
   
    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;
    }

}
分享到:
评论

相关推荐

    struts2一个action处理多个请求 struts2实例

    struts2一个action处理多个请求

    Struts2请求处理方法的处理

    Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射

    Struts2从一个带参数action跳转到另一个action

    资源中示例了一个struts2的配置文件中配置的action的result结果为另外一个action的配置,该跳转的过程中是带所有参赛调整的,在另外一个action中可以接受到当前action的所有参数,此配置文件是我日常开发中的经验...

    解决struts2请求转发或重定向时,一个结果码无法对应多个视图的问题

    通过两个自定义结果集,解决struts2请求转发或重定向时,一个结果码无法对应多个视图的问题。以前的做法,是在配置Action时使用通配符解决,但这样需要JSP页面名称和Action的方法名称一致,如果命名不一致或不规范,...

    一个struts的action跳转大全

    首先,Struts的ActionServlet接收到一个请求,然后根据struts-config.xml的配置定位到相应的mapping (映射);接下来如果form的范围是request或者在定义的范围中找不到这个form,创建一个新的form实例;取得form...

    js 原始ajax请求实现 struts2

    js ajax请求实现 struts2 action js ajax请求实现 struts2 action js ajax请求实现 struts2 action js ajax请求实现 struts2 action js ajax请求实现 struts2 action

    android接收json例子struts2Action返回json格式数据

    androind http 请求 struts2 action 返回 json 数据 例子

    Struts2 处理多个请求

    Struts2一个Action内包含多个请求处理方法的处理

    Struts1与Struts2本质区别

    2 线程模式方面的对比:Struts 1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts 1 Action能做的事,并且要在开发时特别小心。Action资源必须是线程安全的...

    Struts2 in action中文版

    4.1 为什么要拦截请求 61 4.1.1 清理MVC 61 4.1.2 从拦截器受益 63 4.1.3 开发拦截器 64 4.2 拦截器的工作原理 64 4.2.1 总指挥ActionInvocation 64 4.2.2 如何触发拦截器 64 4.3 研究内建的Struts 2拦截器 67 4.3.1...

    struts2 使用action属性接收中文参数(post提交)

    NULL 博文链接:https://cdxs2.iteye.com/blog/1925245

    使用Struts的Action来对数据库进行增、删、改、查四项操作(源码)

    使用Struts的Action来对数据库进行增、删、改、查四项操作 &lt;br/&gt;1、数据库MySQL,创建数据库 Pagination MySQL.sql用来创建表结构 &lt;br/&gt;连接方式有两种,一种直接JDBC,一种通过连接池,代码中有说明...

    Struts2请求处理流程及源码分析

    b)根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助(SiteMeshPlugin),主要清理当前线程的ActionContext和Dispatcher;c)请求经过插件...

    Struts_1_Dyna动态实现登录

    利用struts_1编写代码实现简单登录功能,学了Struts之后,是在action中编写请求处理代码,为什么这样做呢?因为Struts作者帮我们写好了一个actionServlet,他写这个servlet的目的是希望所有请求都交给它预处理,它...

    Struts2正则表达式校验总结

    Struts2正则表达式校验总结正则表达式验证如下,注意验证框架的XML文件中如下写

    struts2利用通配符调用同一个Action里面不同的方法

    struts2利用通配符调用同一个Action里面不同的方法,在struts.xml配置文件中将请求方法的不相同部分抽象成“*".

    struts2 详解文档

    Struts 2的处理流程与Action的管理方式 为应用指定多个配置文件 动态方法调用和使用通配符定义action 请求参数接收 自定义类型转换器 全局类型转换器 访问或添加几个属性 文件上传 多文件上传 自定义拦截...

    struts2 拦截器写法

    Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.

    Struts2架构剖析

    action command在穿越了一系列Struts2和XWork的拦截器之后,最后执行用户编写的Action类,在Action执行之后,响应还会穿越相同的拦截器(按照与请求相反的顺序),最后通过Struts2的HttpServletResponse转换成Web可...

Global site tag (gtag.js) - Google Analytics