`
laoer
  • 浏览: 52221 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2小结

阅读更多
天乙社区8.0(http://www.laoer.com)已经完全用Struts2实现,在使用Struts的过程中也遇到了一些问题,现在总结一下。

1、在web.xml中EncodingFilter的位置应该在Struts2的FilterDispatcher之前,道理很简单,要先调整字符集,再进入Action。

2、如果使用Urlrewrite,要指定filter-mapping的dispatcher方式,如下
<filter-mapping>
    <filter-name>Struts2</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

3、在做上传文件的时候,要在web.xml中增加ActionContextCleanUp这个filter,如果不增加,会发生第一次上传取不到文件的情况
<filter>
  <filter-name>struts-cleanup</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts-cleanup</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
按照Struts2的API,filter的顺序是
struts-cleanup filter
SiteMesh filter
FilterDispatcher

4、在Apache+Resin的情况下,要在WEB-INF下增加resin-web.xml,该文件只针对Resin有效,作用是指定后缀与Resin的Servlet引擎匹配,要不然从Apache转发过去的请求到Resin后会出现404的情况,resin-web.xml举例如下:
<web-app xmlns="http://caucho.com/ns/resin">
<servlet-mapping url-pattern='*.bbscs' servlet-name='plugin_match'/>        
</web-app>

5、在使用<s:url/>标签的时候,会出现将get或post数值带入url参数的情况,如果不需要这些参数,可以在struts.properties文件中设置
struts.url.includeParams=none
或是在<s:url/>标记中将includeParams属性设为none
另外还有两个值
all,是把get和post中的参数加入到url参数中
get,是只把get中的参数加入到url参数中

6、与webwork基本相同,Struts2提供了几种ui.theme,有xhtml、css_xhtml、simple等等,在struts.properties中可以设置使用何种theme,这一点很关键,不同的theme,struts的tag会生成不同的html代码,而且在某些情况下这些theme不能满足页面要求,则需要自己进行扩展了,这些theme都是由freemarker写的,仿照这写就可以。

7、单个checkbox的标记库好像只能返回boolean的值,如果在数据库中设计为int型,则需要做一些转换,这一点我觉得不如Struts1.x的方便。

8、总体来说Struts2的标记库使用上比Struts1.x的方便,页面整体也比较简洁,Struts2采用stack的方式存取数据,与Struts1相比各有千秋吧。

Struts2主要延续自webwork,以前使用webwork的朋友转过来并不困难,Struts2的几个核心的部分,比如拦截器、Result Configuration、OGNL stack等等还是需要仔细的体会,深入了解,才能做出优秀的系统。
分享到:
评论
41 楼 crazycow 2007-08-23  
laoer也在javaeye混啊,真不错,呵呵
40 楼 kevin002 2007-08-23  
laoer 写道
天乙社区8.0(http://www.laoer.com)已经完全用Struts2实现,在使用Struts的过程中也遇到了一些问题,现在总结一下。

1、在web.xml中EncodingFilter的位置应该在Struts2的FilterDispatcher之前,道理很简单,要先调整字符集,再进入Action。

2、如果使用Urlrewrite,要指定filter-mapping的dispatcher方式,如下
<filter-mapping>
    <filter-name>Struts2</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

3、在做上传文件的时候,要在web.xml中增加ActionContextCleanUp这个filter,如果不增加,会发生第一次上传取不到文件的情况
<filter>
  <filter-name>struts-cleanup</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts-cleanup</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
按照Struts2的API,filter的顺序是
struts-cleanup filter
SiteMesh filter
FilterDispatcher

4、在Apache+Resin的情况下,要在WEB-INF下增加resin-web.xml,该文件只针对Resin有效,作用是指定后缀与Resin的Servlet引擎匹配,要不然从Apache转发过去的请求到Resin后会出现404的情况,resin-web.xml举例如下:
<web-app xmlns="http://caucho.com/ns/resin">
<servlet-mapping url-pattern='*.bbscs' servlet-name='plugin_match'/>        
</web-app>

5、在使用<s:url/>标签的时候,会出现将get或post数值带入url参数的情况,如果不需要这些参数,可以在struts.properties文件中设置
struts.url.includeParams=none
或是在<s:url/>标记中将includeParams属性设为none
另外还有两个值
all,是把get和post中的参数加入到url参数中
get,是只把get中的参数加入到url参数中

6、与webwork基本相同,Struts2提供了几种ui.theme,有xhtml、css_xhtml、simple等等,在struts.properties中可以设置使用何种theme,这一点很关键,不同的theme,struts的tag会生成不同的html代码,而且在某些情况下这些theme不能满足页面要求,则需要自己进行扩展了,这些theme都是由freemarker写的,仿照这写就可以。

7、单个checkbox的标记库好像只能返回boolean的值,如果在数据库中设计为int型,则需要做一些转换,这一点我觉得不如Struts1.x的方便。

8、总体来说Struts2的标记库使用上比Struts1.x的方便,页面整体也比较简洁,Struts2采用stack的方式存取数据,与Struts1相比各有千秋吧。

Struts2主要延续自webwork,以前使用webwork的朋友转过来并不困难,Struts2的几个核心的部分,比如拦截器、Result Configuration、OGNL stack等等还是需要仔细的体会,深入了解,才能做出优秀的系统。
39 楼 e3002 2007-08-15  
能吧struts2的标签的的使用给说说吧
38 楼 wpf_00 2007-08-15  
...
37 楼 zdonking 2007-07-04  
我们的系统也是struts2开发的。struts2有很多struts1。x没有的优点,当然也有很多莫名其妙的问题。希望能开个专门的专区讨论
36 楼 xuehongliang 2007-06-12  
struts2.0g一直也没有真正的去学,在项目中还是用1.2的.有机会也得对技术升升级了!
35 楼 whistler 2007-06-12  
struts2文件上传时遇到个问题:
单文件上传时,可以用html的<input type="file" >
多文件上传时用多个name值相同的<input type="file" >失败

我是用struts2自带的例子测试的,把多文件上传的页面的3个<s:file /> 替换成3个<input type="file" >就不行了
34 楼 cwx123147 2007-06-07  
请问struts2与jstl怎么样配置才行。。我现在页面一直得不到值。。但用struts的就可以
33 楼 liujun999999 2007-06-05  
厉害,呵呵
32 楼 netnova 2007-05-25  
Struts2 + Hibernate 己经很好用了。为什么要再加一个Spring
31 楼 sun_cat 2007-05-18  
laoer
我看了下你的天乙社区 是有一些简单的theme
但是好像没有支持客户端校验的theme
struts2 的xhtml 等是支持客户端校验的 但是如果将theme改为xhtml 后 它还会主动加上一些 <tr><td> 之类的东西 页面就很不好控制了

不知道 大家是不是有同感
是不是可以写个theme 来支持客户端校验并且不会添加多余的<tr><td>等等 ,最好能支持ajax 就更好了 呵呵 对freemaker 不熟 正打算研究下
30 楼 jljlpch 2007-05-17  
一直都在用struct1,前一段时间对struct2研究了一下。总是来说比struct1好用多了,但是自从知道了wicket后,我便放不手了。
29 楼 eonhy 2007-05-16  
打算以后的项目中MVC从Struts 1.2转换到Struts 2

学习过WW 2.2,个人觉得,披着Struts外壳的WW更容易被客户认可

毕竟他们就认主流的技术
28 楼 laoer 2007-05-15  
WinLive 写道
4、在Apache+Resin的情况下,要在WEB-INF下增加resin-web.xml,该文件只针对Resin有效,作用是指定后缀与Resin的Servlet引擎匹配,要不然从Apache转发过去的请求到Resin后会出现404的情况,resin-web.xml举例如下:
<web-app xmlns="http://caucho.com/ns/resin">
<servlet-mapping url-pattern='*.bbscs' servlet-name='plugin_match'/>
</web-app>

LZ您的意思是说resin-web.xml是Resin来使用的
web.xml才是Apache来使用的
要在Apache+Resin的情况下使用,就得建一个web.xml来配置
而不是修改resin-web.xml
是这个意思吗?


在Apache+Resin的情况下,需要独立建一个resin-web.xml文件,你本身应用的web.xml也是需要的。
27 楼 WinLive 2007-05-15  
4、在Apache+Resin的情况下,要在WEB-INF下增加resin-web.xml,该文件只针对Resin有效,作用是指定后缀与Resin的Servlet引擎匹配,要不然从Apache转发过去的请求到Resin后会出现404的情况,resin-web.xml举例如下:
<web-app xmlns="http://caucho.com/ns/resin">
<servlet-mapping url-pattern='*.bbscs' servlet-name='plugin_match'/>
</web-app>

LZ您的意思是说resin-web.xml是Resin来使用的
web.xml才是Apache来使用的
要在Apache+Resin的情况下使用,就得建一个web.xml来配置
而不是修改resin-web.xml
是这个意思吗?
26 楼 haohao 2007-05-08  
billchang010 写道
做过struts,webwork的项目,很期待可以做struts2的项目
wwww
25 楼 billchang010 2007-05-08  
做过struts,webwork的项目,很期待可以做struts2的项目
24 楼 keete 2007-05-04  
已经下载源码,抽时间研究研究。
谢谢楼主。
23 楼 hxweb 2007-04-28  
值得一读,不错!
22 楼 laoer 2007-04-24  
文鸯 写道
laoer 写道

7、单个checkbox的标记库好像只能返回boolean的值,如果在数据库中设计为int型,则需要做一些转换,这一点我觉得不如Struts1.x的方便。



默认的是boolean,可以改的。
设置该标签的fieldValue属性可以指定选中时要提交的值,通过Struts2自带的CheckboxInterceptor可以指定没有选中时提交的值。
PS:以前学习过楼主的天乙社区源码,虽只看了部分,但也受益非浅,非常感谢!


fieldValue我试过,我回头再测试一下:)

相关推荐

    Struts2学习小结

    ### Struts2学习小结 #### 一、Struts2简介及环境搭建 **Struts2** 是一款基于 **MVC**(Model-View-Controller)设计模式的开源框架,用于简化 Java Web 应用程序的开发过程。通过将业务逻辑、用户界面以及控制...

    struts2总结

    关于struts2框架的学习总结,非常实用知识对关键部分通过自己的学习总结出来非常具有实际参考价值

    struts开发小结

    这篇博客"Struts开发小结"可能涵盖了作者在使用Struts框架进行开发过程中的经验总结和一些关键点。由于没有直接的描述内容,我们将基于Struts框架的一般特性来讨论相关知识点。 1. **Struts 2框架基础**: Struts ...

    Struts2输入校验总结

    ### Struts2输入校验深度解析 #### 一、手动输入完成校验 在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中...

    Struts2知识点小结-非常实用

    Struts2是一个强大的MVC框架,它为Java开发者提供了便捷的Web应用开发工具。本文将对Struts2的核心概念和标签库进行详细讲解,帮助初学者更好地理解和掌握这个框架。 Struts2框架由两个主要部分构成:控制器和视图...

    Struts2+Hibernate+Spring项目小结――Struts2部分总结

    在Struts2中,当服务端验证失败时,通常会将错误信息保存在ActionContext中,并通过ActionSupport类中的addFieldError方法添加到字段上。此时,为了保留页面的初始状态,我们可以采取以下策略: 1. 使用`...

    Struts 2实战 Struts 2 in action 的中文版

    ### 小结 《Struts 2实战 Struts 2 in action 的中文版》这本书系统地介绍了Struts 2框架的基础知识、核心组件、工作原理以及实际开发技巧。对于希望深入学习和掌握Struts 2框架的开发者来说,这本书是一本不可多得...

    Struts2 in action中文版

    第一部分 Strut 2:一个全新的框架 第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 ...15.7 小结 332

    关于struts实验时的临时总结

    ### 关于Struts2实验时的临时总结 #### 概述 本文档是对Struts2实验过程中的几个关键问题及解决方案进行了归纳与整理。通过实际操作过程中遇到的问题及其解决办法,帮助其他开发者避免同样的错误,并提供高效的学习...

    Struts框架中struts-config.xml文件配置小结

    ### Struts框架中struts-config.xml文件配置详解 #### 一、引言 在Java Web开发领域,Struts是一个非常重要的MVC(Model-View-Controller)框架,它极大地简化了Web应用程序的开发过程。而在Struts框架中,`struts...

    flex与struts2整合

    #### 四、小结 Flex与Struts2的整合,不仅能够提升Web应用的用户体验,还能充分利用两种技术的优势,实现高效的数据处理和丰富的界面展示。通过本文的详细介绍,相信读者已经掌握了Flex与Struts2整合的基本步骤和...

    Struts2权威指南

    第1章 Struts 2概述1  1.1 MVC思想概述2  1.1.1 Web技术的发展2  1.1.2 Model 1和Model 24  1.1.3 MVC思想及其优势6  1.1.4 常用的MVC框架7  1.2 Struts 2的起源和背景8 ... 1.6 本章小结22

    深入浅出Struts2(附源码)

    1.4 小结 13 第2章初识Struts 14 2.1 Struts的优点 14 2.2 Struts的动作处理流程 15 2.3 拦截器 17 2.4 Struts配置文件 18 2.4.1 struts.xml文件 19 2.4.2 struts.properties文件 26 2.5 Struts应用程序示例...

    Struts2学习心得

    ### 小结 通过对Struts2框架的国际化功能的介绍和示例分析,我们可以看出Struts2在处理多语言应用方面具有非常强大的能力。通过合理的配置资源文件和使用Struts2提供的标签,开发者可以轻松地为用户提供多语言支持...

    Struts2入门教程(全新完整版)

    一、准备工作及实例 3 ...小结Action 14 9.使用通配符 14 10.使用0配置:ZERO Annotation 15 11.Result配置详解 15 探讨type类型: 16 Type类型值 16 作用说明 16 对应类 16 chain 16 用来处理Action链 16 ...

    关于struts的部分小结

    以上是对Struts框架的简单总结,每个知识点都涉及到Struts2的核心特性,理解和掌握这些知识点对于进行Struts2应用的开发至关重要。在实际项目中,还需要结合其他技术如Spring、Hibernate等进行更复杂的集成和配置。

    struts2+ireport学习小结(一)

    在本学习小结中,我们将探讨如何将Struts2与IReport整合,以实现在Web应用中动态生成和展示报表的功能。 首先,让我们了解Struts2的基础知识。Struts2的核心是Action类,它是处理用户请求并返回结果的核心组件。...

    struts2基本知识

    #### 五、小结 本文详细介绍了Struts2处理多个请求和域传参的相关知识点。从过滤器和拦截器的作用到动态方法调用的实现,再到具体的登录和注册请求处理示例,旨在帮助读者全面了解Struts2的基本概念和使用方法。...

    Struts2 json插件入门指南.pdf

    小结 本文介绍了如何使用Struts2的JSON插件处理JSON数据。通过不同的配置选项和示例,读者可以了解到如何灵活地控制返回的JSON数据格式。无论是使用XML配置还是注解方式,Struts2都提供了丰富的选项来满足不同的...

Global site tag (gtag.js) - Google Analytics