`
black000
  • 浏览: 1604 次
  • 性别: 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标签的注意事项

    &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter &lt;filter-name&gt;struts2 &lt;url-pattern&gt;/* ``` 这段代码定义了Struts 2的核心Filter,并将其映射到所有的请求上。 其次...

    struts2 最新漏洞 S2-016、S2-017修补方案 .docx

    同时,需要注意的是,这两个漏洞的修补需要对 Struts2 的配置文件进行修改,因此需要对 Struts2 的配置文件有充分的了解和掌握。 Struts2 的 S2-016 和 S2-017 漏洞的修补需要对 Struts2 的源代码和配置文件进行...

    留言板留言板struts2留言板struts2

    11. **安全考虑**:Struts2虽然强大,但也需要注意安全性问题,例如XSS、CSRF等。开发者应确保对用户输入进行校验和过滤,使用安全的插件,及时更新Struts2版本以修补潜在的安全漏洞。 以上就是关于"留言板留言板...

    struts2上传注意问题

    在Struts2中实现文件上传功能时,开发者经常会遇到一些需要注意的问题。这篇博客文章(虽然链接不可用)可能探讨了在实现Struts2文件上传过程中的一些常见挑战和解决方案。 1. **文件大小限制**: - Struts2默认...

    Struts2框架及注释和用法

    Struts2是一个强大的Java web开发框架,它基于MVC(Model-View-Controller)设计模式,为构建可维护性高、结构清晰的Web应用程序提供了一种解决方案。这个框架旨在简化开发过程,提高代码的可测试性和可重用性。下面...

    struts2全部的jar包

    使用Struts2的全部JAR包时,要注意避免版本不兼容问题,确保所有库的版本一致。同时,正确配置web.xml文件,指定Struts2的过滤器。 9. **最佳实践**: - 为了代码整洁,推荐使用注解配置而非XML。 - 使用Maven或...

    struts2讲义 struts2讲义struts2讲义struts2讲义struts2讲义

    - 为了克服这些问题,Apache Software Foundation推出了Struts2,这是一个全新的框架,虽然名称相似,但实际上与原始的Struts框架有着本质的区别。 - **Struts2的特点**: - 更强大的MVC架构支持。 - 内置拦截器...

    Struts2实战

    5. Struts2框架的优化:在使用Struts2框架进行Web开发的过程中,开发者需要注意一些性能优化的问题。例如,可以通过合理的配置Action缓存,减少Action的创建和销毁,提高系统的性能。同时,也可以通过合理的配置结果...

    struts2 Https 配置

    Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展、模块化且易于管理的企业级应用程序。在当今网络安全日益重要的环境下,使用HTTPS协议来确保数据传输的安全性变得至关重要。Struts2支持HTTPS配置,可以...

    struts2 配置dtd 自动提示

    请注意,不同版本的Eclipse或Struts2可能需要略微调整上述步骤,以确保代码提示功能正常工作。尽管如此,大部分情况下,这种配置方法是有效的,可以帮助开发者更高效地编写和维护Struts2应用的配置文件。

    Struts2全部jar包

    Struts2是一个强大的MVC(模型-视图-控制器)框架,它在Java Web开发中广泛应用,为开发者提供了构建可维护、可扩展的Web应用程序...在实际开发中,还要注意不断学习和理解Struts2的高级特性,以提升应用的质量和效率。

    Struts2升级到2.5.30,问题解决及过程记录

    Struts2的每个新版本通常会包含对前一版本的兼容性改进,但有时也会引入一些不兼容性,因此升级过程中需要注意以下几点: 1. **依赖库的更新**:升级Struts2的同时,还需要检查和更新所有依赖的库,例如在提供的...

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

    本文主要针对在导入struts2框架的jar包时可能出现的问题提供解决方案。 首先,你需要从Apache Struts的官方网站(http://struts.apache.org/download.cgi#struts2211)下载struts-2.2.11-all.zip包。这是一个包含了...

    徒手配置Struts2

    #### 一、徒手配置Struts2环境时需注意的关键事项 在没有使用任何集成开发环境的情况下配置Struts2,可能会遇到各种问题,尤其是在配置过程中对于细节的把握至关重要。以下是配置过程中需要注意的一些关键点: 1. ...

    struts2资源下载,struts2资源下载

    但值得注意的是,Struts2历史上曾出现过严重的安全漏洞,如CVE-2017-5638,因此及时更新至最新版本至关重要。 在下载的资源中,可能会包含以下内容: 1. **官方文档**:详尽的用户指南和开发者手册,帮助初学者...

    struts2学习心得

    2. Struts2不需要注意线程同步的问题,而Struts1则面临这个问题,因为Struts1对action创建的时候只创建一次,当多个用户同时访问这个action时,则必须出现这个同步的问题。而对Struts2来说,需要action时都要重新new...

    struts2实现文件下载功能

    在这个“Struts2实现文件下载功能”的示例中,我们将深入探讨如何利用Struts2框架来实现在web应用中让用户下载文件的功能。 首先,我们需要理解文件下载的基本原理。在Web应用中,当用户点击一个链接或提交一个表单...

    struts2 发布包

    同时,要注意检查并修复任何因版本升级而引入的新问题。 总结起来,"struts2 发布包"的1.3.9版本是Struts2框架的一个早期版本,虽然它包含了一些基本的MVC架构和拦截器机制,但随着技术的发展,新版本提供了更多的...

    struts2 与 struts1的区别

    值得注意的是,在Struts2中,Action接口并不是强制性的,任何包含`execute`标记的方法所在的POJO都可以用作Action对象。 #### 二、线程安全模型 - **Struts1** 中的Action采用的是单例模式,这意味着对于所有的...

    Migrating From Struts1 To Struts2

    需要注意的是,Struts2的Action类通常包含较少的状态信息,更多地依赖于请求参数和拦截器来处理业务逻辑。 4. **转换配置文件**:将Struts1的配置文件转换为Struts2的格式。Struts2采用XML或注解的方式来配置Action...

Global site tag (gtag.js) - Google Analytics