Struts2是从Webwork衍生出来的框架,与Struts1有很大的不同。
它的主要优点:
1.它没有和ServletAPI紧密耦合,属于一种无侵入式的设计,可以方便地进行设测试。
2.struts2拥有拦截器的机制,可以实现一种环绕通知的AOP。
3.struts2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型。
4.Struts2提供支持多种表现层技术
5.Struts2的输入校验可以对指定方法进行校验
Struts2的处理流程简述(具体流程参见另一篇文章:Struts2源码简析)
请求到来之后,首先,经过StrutsPrepareAndExecuteFilter过滤,这是所有Struts2请求入口。然后,请求会经过各种拦截器(Interceptor)完成pre-process,有的是Struts2默认自带的拦截器,有的是自定义的。接下来执行Action中指定执行的方法(默认是execute),再执行拦截器的post-process,在次期间,无论是拦截器,还是Action,都有可能会影响到最终的Result。最后,再对Result解析,找到合适的视图并用输出信息对象与视图绑定,返回给用户。
使用Struts2的注意事项:
1.需要给Action注入属性:比如,处理文件上传的时候,文件保存的目录。可以把这个参数通过struts.xml中的<action>标签的子标签<param>来为Action注入属性。
2.Struts2对Action的管理和Struts1有很大不同。Struts1的Action是单例,创建出Action就放入缓存,以供重复使用;而Struts2的Action是原型,为每一个request建立一个Action。
3.虽然Struts2提供了文件上传的功能,可以通过设置常量struts.multipart. maxSize来设置上传文件的大小。但是,Web并不适合上传大文件,如果要上传大文件,可以考虑开发Socket网络传输软件来实现。
4.在为Struts2的单独Action设置拦截器的时候,在<action>标签下设置<interceptor-ref>标签引用拦截器,但是如果直接这么写,Struts2默认提供的拦截器就会失效。解决方法:定义一个拦截器栈。
5.利用Struts2进行校验的时候,无论是校验错误还是类型转换错误,都可能会转入“input”视图。
6.如果为某个action提供了全方法校验和指定方法校验,先读全部校验文件,再读指定方法校验文件。struts2会将校验文件的校验规则汇总(使用后面文件的校验规则,即制定方法的校验规则),用于全部action方法。如果存在继承关系,例如:UserAction继承BaseAction,则先搜索父校验规则,再搜索子校验规则。
7.可以使用OGNL访问ValueStack中的值,不用加“#”,EL表达式也可以访问,因为Struts2对request对象做了增强处理,使它能够访问值栈。
8.Struts2中的<s:url>标签中的value属性默认不会按照OGNL表达式执行,需要加上“%{}”来处理。
9.在使用Model来进行参数传递的时候,Model不仅要有对应的setter,还有有对应的getter。如:Action中有一个User类的域,那么Action中要有setUser和getUser方法。
10.在进行声名式的异常处理时,可以使用OGNL在错误页面显示错误信息<s:property value="exception.message">
分享到:
相关推荐
本文讲述了使用Struts 2标签的注意事项,并介绍了学习Struts 2标签比较权威的网站。
这是一个struts2框架的处理流程的demo,里面有struts2基本的配置和模拟登录的例子,以及...相信对于初学者,通过这个demo可以基本掌握struts2的使用,注意,该demo是纯粹的struts2,没有其他框架内容,请注意甄别......
Struts2的框架及注释和使用法,希望大家支持,我们一起努力,谢谢!
可以直接运行,并对整合spring和struts2步骤及需要注意的事项进行类总结 整合spring和struts2总结 1.将struts2和spring中的库文件复制到项目下(可以查看WEB-INF\lib目录下的文件) 注意:struts2-spring-...
struts2使用json注意事项 struts2使用json注意事项 struts2使用json注意事项 struts2使用json注意事项
本篇文章主要讲解如何在struts2中导入相关的jar包,同时解决在导入jar时出现错误的方法
利用struts2上传文件 环境配置JDK1.8 Eclipse 版本 Version: Mars Release (4.5.0) tomcat版本7.0.40 注意的问题是文件上传的时候的enctype="multipart/form-data" 如果设置错误会报错 今天初次使用Struts 2做文件...
Struts2属性文件详解 struts.configuration 该属性指定加载Struts 2配置文件的配置文件管理器.该属性的默认值是org.apache.Struts2.config.DefaultConfiguration, 这是Struts 2默认的配置文件管理器.如果需要实现...
NULL 博文链接:https://zhangzhi199129.iteye.com/blog/1685629
一个请求在Struts 2框架中的处理大概分为以下几个步骤。 客户端提交一个(HttpServletRequest)请求,如上文在浏览器中输入 http://localhost: 8080/bookcode/ch2/Reg.action就是提交一个(HttpServletRequest)...
使用mysql数据库的struts2 spring hibernate整合简单示例,也可参考我的:“struts2 spring hibernate整合要点、注意点”这篇文档来配置
struts2-dojo-plugin-2.2.1.jar, 直接导入到Struts2项目里即可,注意版本。
以前总是在myeclipse中添加jar包的,由于现在转向了eclipse,原本以为自己对ssh2已经比较熟悉了,但是很多细节的问题在自己平时生活中没有注意到。下面就介绍我自己觉得容易疏漏的几点 第一、struts2很多网上的人都...
Struts2是在WebWork2基础发展而来的。和struts1一样, Struts2也属于MVC框架。不过有一点大家需要注意的是:尽管Struts2和struts1在名字上的差别不是很大,但Struts2和struts1在代码编写风格上几乎是不一样的。
2、在sping配置中注意单元测试里,xml文件的路径问题,要用绝对路径。 3、struts.xml中命名空间和拦截器的使用。 4、sqlmapconfig.xml中传入参数和result的设置,只需要将得到的值result映射到有此属性的类对象. 5、...
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> filter> <filter> <filter-name>sitemesh</filter-name> <filter-class>...
Struts2正则表达式校验总结正则表达式验证如下,注意验证框架的XML文件中如下写
struts2源代码及API帮助文档。...跟读struts2源码的时候注意两条主线:一条是初始化;另外一条是监听http请求。学习初始化过程是如何获取配置构造容器,其中的巧妙构思和设计模式的运用非常值得学习。
struts2 在线聊天 互传文件 注意数据库用mySQL 表要自己建
b 在struts.xml中添加action,使用通配符的方式 , 注意这里和单独struts2不同的地方: class属性指向的是bean 的 id ,这里我们配置bean采用spring ioc注解的方式, 所以默认的bean的id 为 类名(首字母小写) ...