由于工程是比较早的所以使用的是struts2.0,其中有很多的漏洞,所以公司要求升级struts2.3.3.
现已升级完成并上现网所以按我说的步骤做就一定OK。
1.下载struts-2.3.3-all.zip ,之所以下载all是因为目录中有例子工程。路径如:D:\share\struts-2.3.3-all\struts-2.3.3\apps\struts2-blank.war。
2.在struts2-blank.war\WEB-INF\lib文件夹下是struts-2.3.3所需要的最基本的JAR包,把这些JAR包复制到你的工程并删除同名不同版本的JAR包。
3.由于struts-2.3.3的过滤器名称有修改所以需要修改struts.xml:
a)将<interceptor-ref name="filterParams"/>修改为<interceptor-ref name="params"/>
b)将<interceptor-ref name="static-params"/>修改为<interceptor-ref name="staticParams"/>
4.最后需要为工程中的所有<s:select>标签添加name属性,如果之前没有添加的话.否则会报freemaket的错误。
5.不能在静态方法中使用#号,例 如:<s:property value="@com.jungle.enums.BillStatus@valueOf(#attr.status).name"/>,不能将#attr.status做为参数传递,需采用代码块或其它方式实现。
6.添加支持静态方法调用:<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
7、日志不能显示问题修改
<!-- ognl 调用静态方法:启动true 关闭 false -->
<constant name="struts.ognl.allowStaticMethodAccess" value="true" />
8、javaBean属性生成的getxx()和setxx()方法第一个字母要大写。
9、jsp页面定义属性name和id确保只有单一,不能重复。
1、页面里面其实有个隐藏域传了index参数,而实际js代码跳转action的时候又重复的带了index=xx参数,action跳转url可将index参数删掉。
2、检出页面是否重复定义了name相同的参数。例如:name=groupInfo.GROUPID 导致后台获取不得值,而取的默认值int=0;
3、导出excel页面日志记录两次的问题怎么解决的:把 jsp里面的submit改成button
4、报表生产图表报错:
org.apache.jasper.JasperException: /WEB-INF/pages/report/Report03AManager/ReportAChart.jsp
(line: 17, column: 47) Attribute value new String("50") is quoted with " which must be escaped when used within the value
<cewolf:param name="maxSize" value="<%= new String("50")%>"></cewolf:param>
<cewolf:param name="maxSize"
value="<%=new String(String.valueOf(Constants.MAXROW)) %>"></cewolf:param>
<!--变量值是可配置的new String("50") -->
5、<jsp:param name="start" value="<%=request.getParameter("v1") %>"/>改成 <jsp:param name="start" value='<%=request.getParameter("v1") %>'/>
6、通过tomcat打开jsp页面时,出现错误org.apache.jasper.JasperException: /check1.jsp(35,47) Attribute value request.getParameter("username") is quoted with " which must be escaped when used within the value问下,怎么解决。
“将value后面的"username”改为\"username\"具体原由有可能是tomcat的版本不同导致的。jsp在编译jsp页面时,将 <%=request.getParameter("searchtype")%>作为变量进行处理。因此,遇到里面的"会报错。”网上找的答案,是tomcat的问题,建议使用6.0以上版本的tomcat就没有问题了
7、 SessionListener.java 会话失效资源国际化特殊处理String logInfo=getResouceInfo(this.getLocale(),"ApplicationResources","opatorlog.session.invalidation","");
8、 后台的br提示信息在jsp页面显示还是br ,在error.jsp页面增加escape="false"不让jsp转义<s:actionerror escape="false"/>
9.删除的时候页面跳转到了首页:页面添加隐藏域,<input type="hidden" name="index" id="index" value='<s:property value="index" />' /> 去掉url的后面的index
input中要加上id="index"
10、获取不到定义的参数
<action name="deleteDocumentItem" class="deleteDocumentItem">
<result name="success" type="redirectAction">
<param name="actionName">listDocumentItem</param>
<param name="documentCatalogId">${documentCatalogId}</param>
</result>
</action>
struts2 跳转类型 result type=chain、dispatcher、redirect(redirect-action).dispatcher 为默认跳转类型,用于返回一个视图资源(如:jsp)
Xml代码 :
<result name="success">/main.jsp</result>
<result name="success">/main.jsp</result>
以上写法使用了两个默认,其完整的写法为:
<result name="success" type="dispatcher">
<param name="location">/maini.jsp</param>
</result>
用于页面转发,页面跳转过程一直是同一个线程,Action中的数据一直保存在。
location只能是页面,不能是另一个action(可用type="chain"解决)。
redirect 类型用于重定向到一个页面,另一个action或一个网址。
Xml代码:
<result name="success" type="redirect">aaa.jsp</result>
<result name="success" type="redirect">bbb.action</result>
<result name="success" type="redirect">www.baidu.com</result>
缺点:redirect把一个http返回码(SUCCESS)以及返回的页面位置一起重新发给web服务器,容纳后由web服务器产生一个新的HTTP请求,就会产生一个新的线程,保存在原来Action执行的线程中的数据就无法访问。
所以,result需要包含Action的数据,那么redirect不是一个可行的办法。因为新的HTTP请求时在Servlet容器的新的线程中处理的,ActionContext中的所有状态都不会存在。
处理方法:
(方法一):
<result name="topic" type="redirect">/topicAction!findTopics.do?topicId=${topicId}</result>
(方法二):
<result name="topic" type="redirect-action">
<param name="actionName">findTopics</param>
<param name="topicId">${topicId}</param>
</result>
redirect-action 结果类型使用ActionMapperFactory提供的ActionMapper来重定向请求到另外一个action
Xml代码:
<result name="err" type="redirect-action">
<param name="actionName">重定向的Action名</param>
<param name="namespace">重定向Action所在的名字空间</param>
</result>
redirect和redirect-action两种结果类型在使用上其实并没有什么区别,只是写法不同而已。
chain 用于把相关的几个action连接起来,共同完成一个功能。
Xml代码:
<action name="step1" class="test.Step1Action">
<result name="success" type="chain">step2.action</result>
</action>
<action name="step2" class="test.Step2Action">
<result name="success">finish.jsp</result>
</action>
处于chain中的action属于同一个http请求,共享一个ActionContext
结果类型用于直接在页面上显示源代码
Xml代码:
<result name="err" type="plaintext">
<param name="location">具体的位置</param>
<param name="charSet">字符规范(如GBK)</param>
</result>
转自:http://blog.csdn.net/ambili/article/details/19123459
分享到:
相关推荐
根据给定文件的信息,本文将详细介绍如何配置Struts2.1.6、Spring2.0与Hibernate3.1这三个框架的整合开发环境。这是一套经典的MVC(Model-View-Controller)架构组合,适用于构建复杂的Java Web应用程序。 ### 一、...
1. **启动失败**:如果服务器启动失败,检查项目中的`lib`文件夹是否存在重复的JAR包,例如`asm-2.3.3.jar`和`asm.jar`。这两个包的存在会导致启动失败,解决方法是删除其中之一。 2. **依赖冲突**:检查项目的...
12.1.2 Struts 2.0与Struts 1.x框架的区别 215 12.2 MyEclipse创建基于Struts 2.0框架的项目 215 12.2.1 下载Struts 2.0开发包 216 12.2.2 创建Struts 2.0项目 216 12.2.3 配置Struts 2.0项目 217 12.2.4 创建Struts...
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 定义Action映射 --> </struts> ``` ##### 2.7 整合Spring与Hibernate 在...
SSH(Spring + Struts + Hibernate)是Java Web开发中非常流行的轻量级框架组合,它将Spring作为核心容器来管理整个项目的依赖注入,Struts作为MVC框架处理用户请求与视图展示,而Hibernate则作为持久层框架实现数据...
###### 2.3.3 编写Struts2配置文件 创建Struts2的配置文件`struts.xml`,定义Action的映射关系。 ```xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ...
2.3.3 装配集合 2.3.4 装配空值 2.4 自动装配 2.4.1 四种自动装配类型 2.4.2 混合使用自动和手动装配 2.4.3 何时采用自动装配 2.5 控制Bean创建 2.5.1 Bean范围化 2.5.2 利用工厂方法来创建Bean 2.5.3 ...
2.3.3 装配集合 2.3.4 装配空值 2.4 自动装配 2.4.1 四种自动装配类型 2.4.2 混合使用自动和手动装配 2.4.3 何时采用自动装配 2.5 控制Bean创建 2.5.1 Bean范围化 2.5.2 利用工厂方法来创建Bean 2.5.3 ...
2.3.3装配集合 2.3.4装配空值 2.4自动装配 2.4.1四种自动装配类型 2.4.2混合使用自动和手动装配 2.4.3何时采用自动装配 2.5控制bean创建 2.5.1bean范围化 2.5.2利用工厂方法来创建bean 2.5.3初始化和销毁...
9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 ...
2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件...
2.3.3. 对bean命名pointcut( bean name pointcut element)的支持 2.3.4. 对AspectJ装载时织入(AspectJ load-time weaving)的支持 2.4. 中间层 2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. 对Websphere ...