`
black000
  • 浏览: 1569 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Struts2要注意问题

阅读更多

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标签的注意事项,并介绍了学习Struts 2标签比较权威的网站。

    struts2 Demo

    这是一个struts2框架的处理流程的demo,里面有struts2基本的配置和模拟登录的例子,以及...相信对于初学者,通过这个demo可以基本掌握struts2的使用,注意,该demo是纯粹的struts2,没有其他框架内容,请注意甄别......

    Struts2框架及注释和用法

    Struts2的框架及注释和使用法,希望大家支持,我们一起努力,谢谢!

    整合struts2和spring源代码(可以直接在tomcat中运行)

    可以直接运行,并对整合spring和struts2步骤及需要注意的事项进行类总结 整合spring和struts2总结 1.将struts2和spring中的库文件复制到项目下(可以查看WEB-INF\lib目录下的文件) 注意:struts2-spring-...

    struts2使用json注意事项

    struts2使用json注意事项 struts2使用json注意事项 struts2使用json注意事项 struts2使用json注意事项

    struts2中导入类库时需要注意的问题

    本篇文章主要讲解如何在struts2中导入相关的jar包,同时解决在导入jar时出现错误的方法

    struts2文件上传

    利用struts2上传文件 环境配置JDK1.8 Eclipse 版本 Version: Mars Release (4.5.0) tomcat版本7.0.40 注意的问题是文件上传的时候的enctype="multipart/form-data" 如果设置错误会报错 今天初次使用Struts 2做文件...

    Struts2属性文件详解

    Struts2属性文件详解 struts.configuration 该属性指定加载Struts 2配置文件的配置文件管理器.该属性的默认值是org.apache.Struts2.config.DefaultConfiguration, 这是Struts 2默认的配置文件管理器.如果需要实现...

    struts2上传注意问题

    NULL 博文链接:https://zhangzhi199129.iteye.com/blog/1685629

    struts2流程与流程图

    一个请求在Struts 2框架中的处理大概分为以下几个步骤。  客户端提交一个(HttpServletRequest)请求,如上文在浏览器中输入 http://localhost: 8080/bookcode/ch2/Reg.action就是提交一个(HttpServletRequest)...

    struts2 spring hibernate整合的简单登录代码

    使用mysql数据库的struts2 spring hibernate整合简单示例,也可参考我的:“struts2 spring hibernate整合要点、注意点”这篇文档来配置

    struts2-dojo-plugin-2.2.1.jar

    struts2-dojo-plugin-2.2.1.jar, 直接导入到Struts2项目里即可,注意版本。

    struts2_jar.zip

    以前总是在myeclipse中添加jar包的,由于现在转向了eclipse,原本以为自己对ssh2已经比较熟悉了,但是很多细节的问题在自己平时生活中没有注意到。下面就介绍我自己觉得容易疏漏的几点 第一、struts2很多网上的人都...

    struts2入门教程(PPT)

    Struts2是在WebWork2基础发展而来的。和struts1一样, Struts2也属于MVC框架。不过有一点大家需要注意的是:尽管Struts2和struts1在名字上的差别不是很大,但Struts2和struts1在代码编写风格上几乎是不一样的。

    struts2+spring2+ibates

    2、在sping配置中注意单元测试里,xml文件的路径问题,要用绝对路径。 3、struts.xml中命名空间和拦截器的使用。 4、sqlmapconfig.xml中传入参数和result的设置,只需要将得到的值result映射到有此属性的类对象. 5、...

    Struts2整合SiteMesh技巧

    &lt;filter-class&gt;org.apache.struts2.dispatcher.ActionContextCleanUp&lt;/filter-class&gt; filter&gt; &lt;filter&gt; &lt;filter-name&gt;sitemesh&lt;/filter-name&gt; &lt;filter-class&gt;...

    Struts2正则表达式校验总结

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

    struts2源码

    struts2源代码及API帮助文档。...跟读struts2源码的时候注意两条主线:一条是初始化;另外一条是监听http请求。学习初始化过程是如何获取配置构造容器,其中的巧妙构思和设计模式的运用非常值得学习。

    基于struts2的即时通讯web应用

    struts2 在线聊天 互传文件 注意数据库用mySQL 表要自己建

    struts2+spring+hibernate整合示例

    b 在struts.xml中添加action,使用通配符的方式 , 注意这里和单独struts2不同的地方: class属性指向的是bean 的 id ,这里我们配置bean采用spring ioc注解的方式, 所以默认的bean的id 为 类名(首字母小写) ...

Global site tag (gtag.js) - Google Analytics