Struts2

本文详细介绍了Struts2框架的理解,包括其作为MVC模式的实现,执行流程,以及与SpringMVC的区别。重点阐述了拦截器和过滤器的概念和区别,并提供了防止用户表单重复提交的策略。此外,还分析了Struts2如何在MVC架构中分担模型、控制器和视图的角色。
摘要由CSDN通过智能技术生成

目录

1.对struts2的理解

2.Struts2执行流程

3.拦截器和过滤器

4.Struts2与SpringMVC的区别

5.struts2如何防止用户表单重复提交?

6.MVC,分析一下struts是如何实现MVC的

1.对struts2的理解

    a.struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类。我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet再参照一个配置文件(通常为/WEB-INF/struts-config.xml)将各个请求分别分配给不同的action去处理。
    b.ActionServlet把请求交给action去处理之前,会将请求参数封装成一个formbean对象,然后调用formbean的validate方法进行校验,只有校验通过后才将这个formbean对象传递给action的execute方法,否则,它将返回一个错误页面,这个错误页面由input属性指定
    c.action执行完后要返回显示的结果视图,这个结果视图是用一个ActionForward对象来表示的,actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp页面,因为程序中使用的是在struts-config.xml配置文件为jsp页面设置的

2.Struts2执行流程

    1、客户端浏览器发出HTTP请求。
    2、根据web.xml配置,该请求被FilterDispatcher接收。
    3、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton
    4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
    5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。
    6、返回HTTP响应到客户端浏览器。

3.拦截器和过滤器

    1.拦截器是基于java反射机制的,而过滤器是基于函数回调的;
    2.过滤器依赖于servlet容器,而拦截器不依赖于servlet容器;
    3.拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用;
    4.拦截器可以访问Action上下文、值栈里的对象,而过滤器不能;
    5.在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。

4.Struts2与SpringMVC的区别

    a.Springmvc的入口是一个servlet即前端控制器,而Struts2入口是一个filter过虑器;
    b.Springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例;
    c.Struts2采用值栈存储请求和响应的数据,通过OGNL存取数据,Springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用JSTL。

5.struts2如何防止用户表单重复提交?

    第一步:在表单中加入<s:token /> 
    第二步,使用token栏截器,定义invalid.token结果集 
    要使用<s:token /> 必须要在struts.xml的action中引用token的预定义拦截器。
    <interceptor name="token" class="org.apache.struts2.interceptor.TokenInterceptor"/>
    当然还可以使用tokenSession
     <interceptor name="tokenSession" class="org.apache.struts2.interceptor.TokenSessionStoreInterceptor"

 


6.MVC,分析一下struts是如何实现MVC的

    m:JavaBean 或结合 EJB 组件或者pojo构成
    c:Action 来实现
    v:一组 JSP 文件及其标签构成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

群峦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值