- 浏览: 209771 次
- 性别:
- 来自: 厦门
-
文章分类
- 全部博客 (100)
- java设计模式学习 (1)
- javascript (2)
- sqlserver (3)
- java基础 (18)
- spring (8)
- webwork (3)
- itext (4)
- xstream (1)
- freemarker (2)
- jsp (6)
- hibernate (7)
- jquery (1)
- json (1)
- poi (2)
- iprocess (1)
- bw (1)
- bpm (0)
- java2word (0)
- ireport (1)
- Struts2.0 (13)
- webservice (6)
- j2ee基础 (7)
- jms (3)
- protocol buffer (3)
- jfreechart (1)
- spring mvc (0)
- http编程机制探析 (1)
- pb (2)
- oracle (0)
- sso (0)
- mybatis (0)
- ssl与ca认证 (0)
- cas (1)
最新评论
-
mayucai:
这个博客写的我是真服,写了一大堆,结果最后来一句这是错的。
poi获取excel和word总页数 -
iris_1992:
2005年以前,国外开原报表完全碾压国产软件,但是现在国内软件 ...
ireport与jasperreports开发总结 -
高攀sky:
...
Servlet中的八大Listener -
rmn190:
多谢, 试了N多个后, 终于参考您的内容, 设置出来了。老天开 ...
ireport与jasperreports开发总结 -
辣油_:
System.out.println("草 ...
Spring-JNDI配置
1.在工程中引入SiteMesh的必要jar包,和struts2-sitemesh-plugin-2.0.8.jar(该包在strut2.0的lib目录中可以找到);
2.Struts2的所有值是保存在Stack Context或者ValueStack中的,默认情况是,
某个过滤器一旦访问了该Stack Context或ValueStack后,里面对应的值将会被清除掉,
如果先使用Struts2的FilterDispatcher来过滤用户请求,
则SiteMesh的过滤器将无法取得Stack Context或者ValueStack中的数据。
为了解决整个问题,Struts2提供了ActionContextCleanUp类。在Struts2的架构中,
标准的过滤器链(filter-chain)一般以 ActionContextCleanUp 开始,后面跟着其他需要的过滤器,
最后,由 FilterDispatcher来处理请求,FilterDispatcher通常是将请求传递给ActionMapper
但问题是:ActionContextCleanUp过滤器只能保证在FilterDispatcher之前先不清除Stack Context和ValueStack中的值。
如果将SiteMesh过滤器排在FilterDispatcher之后,这会导致SiteMesh过滤器无法访问到Stack Context和ValueStack中的值。
因此,为了让SiteMesh过滤器和FilterDispatcher都可访问到Stack Context和ValueStack中的值,
且FilterDispatcher可以在合适时机清除Stack Context和ValueStack中的值,应该使用如下的过滤器顺序:
(1)ActionContextCleanUp过滤器。
(2)SiteMesh核心过滤器。
(3)FilterDispatcher过滤器。
3.
struts2.13前配置如下:
- filter>
- <filter-name>ActionContextCleanUp</filter-name>
- <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
- </filter>
- <filter>
- <filter-name>sitemesh</filter-name>
- <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
- </filter>
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
- </filter>
从struts2.1.3开始ActionContextCleanUp 和 FilterDispatcher过滤器,已经不建议使用了。将使用StrutsPrepareFilter 和StrutsExecuteFilter拦截器替代。正确的配置方式如下:
- <filter>
- <filter-name>struts-prepare</filter-name>
- <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
- </filter>
- <filter>
- <filter-name>sitemesh</filter-name>
- <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
- </filter>
- <filter>
- <filter-name>struts-execute</filter-name>
- <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>struts-prepare</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>sitemesh</filter-name>
- <url-pattern>/*</url-pattern>
- <dispatcher>REQUEST</dispatcher>
- <dispatcher>FORWARD</dispatcher>
- <dispatcher>INCLUDE</dispatcher>
- </filter-mapping>
- <filter-mapping>
- <filter-name>struts-execute</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <servlet>
- <servlet-name>sitemesh-freemarker</servlet-name>
- <servlet-class>org.apache.struts2.sitemesh.FreemarkerDecoratorServlet</servlet-class>
- <init-param>
- <param-name>default_encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>sitemesh-freemarker</servlet-name>
- <url-pattern>*.ftl</url-pattern>
- </servlet-mapping>
- <listener>
- <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>
- </listener>
<filter> <filter-name>struts-prepare</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class> </filter> <filter> <filter-name>sitemesh</filter-name> <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class> </filter> <filter> <filter-name>struts-execute</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts-prepare</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>sitemesh</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> <filter-mapping> <filter-name>struts-execute</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>sitemesh-freemarker</servlet-name> <servlet-class>org.apache.struts2.sitemesh.FreemarkerDecoratorServlet</servlet-class> <init-param> <param-name>default_encoding</param-name> <param-value>UTF-8</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>sitemesh-freemarker</servlet-name> <url-pattern>*.ftl</url-pattern> </servlet-mapping> <listener> <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class> </listener>
注意:
1. com.opensymphony.sitemesh.webapp.SiteMeshFilter这个过滤器是必需的,否则装饰不起作用
2. 为了支持FreeMaker或Velocity,必须添加org.apache.struts2.sitemesh.FreemarkerDecoratorServlet这个Servlet,官方原话:
3. 而已从2.2.x开始,必须添加org.apache.struts2.dispatcher.ng.listener.StrutsListener这个监听器
4.在webroot目錄下面建decorators文件夾,裡面放裝飾的模型main.jsp(decorators是装饰文件默认路径)
<%@ page contentType="text/html;charset=UTF-8"%>
<%@taglib prefix="decorator"
uri="http://www.opensymphony.com/sitemesh/decorator"%>> //导入sitemesh标签库
<%@taglib prefix="page" uri="http://www.opensymphony.com/sitemesh/page"%<html>
<head>
<title><decorator:title /></title>
<decorator:head />
</head>
<body>
<p>
Add head decorator...
</p>
<decorator:body />
<p>
Add foot decorator...
</p>
</body>
</html>
5.配置decorators-file文件.該文件名称和路径为sitemesh-default.xml中 <property name="decorators-file" value="/WEB-INF/decorators.xml"/>配置的名称.所以该文件必须放在WEB-INF目录下.名称为decorators.xml.
decorators.xml配置如下:
<?xml version="1.0" encoding="utf-8"?>
<decorators defaultdir="/decorators"> //其中/decorators是装饰文件默认路径.也可以配置为其他路径
<!--excludes結點則指定了哪些路徑的請求不使用任何模板-->
<excludes>
<pattern>/index.jsp*</pattern>
<pattern>/login/*</pattern>
</excludes>
<!--decorator結點指定了模板的位置和文件名,通過pattern來指定哪些路徑引用哪個模板-->
<decorator name="main" page="mode.jsp">
<pattern>/*</pattern>
</decorator>
</decorators>
发表评论
-
Struts2 AJAX请求 Session失效处理
2014-01-17 17:01 797在Struts应用中,我们发出的请求都会经过 相应的拦截器进行 ... -
Struts2的ognl学习(转)
2011-05-17 16:53 842学习Struts2的时候,觉得OGNL表达式语言很抽象,看 ... -
struts2采用convention-plugin实现零配置(转)
2011-04-25 10:31 1117零配置并不是没有配置,而是通过约定大于配置的方式,大量通过约定 ... -
有关Struts2的标签不支持<%%>和$(EL表达式的符号)的问题
2011-04-22 18:03 0在struts2的2.0.11及以上版本的changelog里 ... -
struts2 中 OGNL表达式的使用(转)
2011-04-22 15:01 875OGNL是Object Graph Navigation ... -
Struts2 与JSON,JQUERY整合使用(转)
2011-04-12 11:14 1437请参见: Struts2.2+Spring3.1+Hibern ... -
Struts2.0中ActionInvocation使用
2011-04-08 16:18 2460Interceptor说明 Interceptor的接口定 ... -
struts2表送式符号(#、%、$)(转)
2011-04-08 11:52 1669#:从actioncontext中取值,前面加上# ... -
Struts2中OGNL,valueStack,stackContext的学习(转)
2011-04-08 10:38 1622Java代码 <s:form ac ... -
Struts2.0配置文件语法用法
2011-04-07 17:35 11121.struts2.0配置文件中可以使用El表达式(${})如 ... -
Struts2.0请求过程图解(转)
2011-04-07 17:21 1421Struts2架构图 当 ... -
Struts2.0实现文件上传
2011-04-07 17:12 11171.struts2.0上传三个关键字段 上传文件名、上传文件类 ... -
freeMarker语法
2010-12-20 09:37 1020EG.一个对象BOOK 1.输出 ...
相关推荐
将Struts2.0与Sitemesh整合,可以让Struts2处理业务逻辑,而Sitemesh负责页面的装饰和布局。这样,开发者可以专注于业务代码编写,而无需关心页面的样式细节。通常,整合步骤包括: 1. **添加依赖**:在项目中引入...
1 spring的相关包,先添加struts2.0的支持时标记的包; 2 struts2的相关包;以struts2-core-2.1.6版本为准; 注:struts2-core-2.1.8有较大变化需要注意替换相关包,注意尾号尽量不要是单号 例子:xwork-2.1.2....
- **版本更新**:本书介绍的是最新的Struts2.1版本,相比于2007年发布的Struts2.0,Struts2.1做了较多改进与新增功能。 - **新特性**: - REST支持:简化了基于RESTful Web服务的开发过程。 - Convention插件:...
`struts-cleanup`和`sitemesh`过滤器是整合SiteMesh所必需的,它们分别清理ActionContext和应用PageFilter来处理页面装饰。 3. **Struts2过滤器**: `<filter-name>struts2</filter-name>`定义了Struts2的核心过滤...
4. **易整合性**:Struts2可以轻松地与Spring、Tiles、SiteMesh等其他框架集成,增强了系统的扩展性。 5. **模板支持**:支持多种模板技术,如JSP、Freemarker、Velocity和XSLT,开发者可以根据需求选择合适的视图...
Struts与Spring、Hibernate或Ibatis的整合,使其在处理复杂业务逻辑方面表现出色。开发者应根据项目需求和团队熟悉程度选择合适的框架,不必盲目追求最新潮的技术,适用性和稳定性是首要考虑因素。 其次,...
该平台涵盖了Spring2.5、Struts2.0.14、SpringSecurity2.0、SpringAOP、Hibernate3.3GA、FCKEditor2.6、EXT3、CXF2.0、JBPM4.4GA、Compass+Lucene、JasperReport4、JavaMail等一系列前沿技术组件,以及Log4j、...