昨天想把自己学习的项目加个sitemesh,没用过,网上找了些资料,照着做了一个,碰到了些问题,写下来做备忘
第一个问题
缺少部分jar包,除了struts2-sitemesh2.1.6、sitemesh2.3,还需要其它的jar,去官方网站下了个完整的sitemesh2.3,将里面的包全部导入,结果就出现了个异常,找来找去,发现是crimson.jar惹的祸,删除jar就OK
另外一个问题是提示struts2-sitemesh的过滤器找不到,明明就在那里的jar,非说找不到,很费解,不管那么多,肯定是和哪个包冲突了,将spring多余的包删除后ok,也不知道是哪个包的问题
终于运行成功啦,结果发现html是乱码,还有项目中的一个jsTree出不来,当场崩溃
html的乱码网上一堆说法,试了半天,只有重写过滤器才是最有效的终极解决办法
代码如下:
package com.cool.filter;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.util.ClassUtils;
import org.springframework.web.filter.OncePerRequestFilter;
// Referenced classes of package org.springframework.web.filter:
// OncePerRequestFilter
public class MyCharacterEncodingFilter extends OncePerRequestFilter
{
private static final boolean responseSetCharacterEncodingAvailable;
private String requestEncoding;
private String responseEncoding;
private boolean forceEncoding;
public void setResponseEncoding(String responseEncoding) {
this.responseEncoding = responseEncoding;
}
public MyCharacterEncodingFilter()
{
forceEncoding = false;
}
public void setRequestEncoding(String requestEncoding) {
this.requestEncoding = requestEncoding;
}
public void setForceEncoding(boolean forceEncoding)
{
this.forceEncoding = forceEncoding;
}
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException
{
if(requestEncoding != null && (forceEncoding || request.getCharacterEncoding() == null))
{
request.setCharacterEncoding(requestEncoding);
if(responseEncoding!=null&&!responseEncoding.equals(""))
{
response.setCharacterEncoding(responseEncoding);
}
}
filterChain.doFilter(request, response);
}
static
{
responseSetCharacterEncodingAvailable = ClassUtils.hasMethod(javax.servlet.http.HttpServletResponse.class, "setCharacterEncoding", new Class[] {
java.lang.String.class
});
}
}
web配置文件如下:
<!-- 乱码配置 -->
<filter>
<filter-name>encodingFilter </filter-name>
<filter-class>com.cool.filter.MyCharacterEncodingFilter </filter-class>
<init-param>
<param-name>requestEncoding </param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>responseEncoding </param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter </filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
jQuery+json+struts2+spring3(事务,AOP,IoC即DI)+hibernte3+EhCache+oscache+proxool+MySQL+SiteMesh+Gzip lj例子
它们各自承担着不同的职责,并且在实际项目中经常被整合使用,形成了所谓的"SSH2"(Struts2 + Spring + Hibernate)框架组合,加上JPA和SiteMesh,进一步提升了开发效率和应用的可维护性。 1. **Struts2**:这是一...
总结来说,这个网上拍卖系统利用了SSH架构的强大功能,通过SiteMesh优化了页面布局,使用Ajax技术提供了流畅的用户交互。对于学习和理解Java Web开发,特别是SSH框架和前端动态更新技术,这是一个很好的实践案例。
这个"SSH2"项目是一个基于Sitemesh的Demo,展示了如何将这四个组件无缝集成。 **Sitemesh**: Sitemesh是一个页面布局和装饰框架,用于Web应用程序。它可以帮助开发者统一网站的外观和感觉,通过定义模板来实现全局...
SSH2开发框架是Java Web开发中的一个经典组合,由Struts2、Spring和Hibernate三个主要组件构成,再加上Sitemesh和JUnit,形成了一个强大的、全面的后端开发环境。下面将详细阐述这些技术及其在项目中的作用。 1. **...
用于在SSH2工程中使用sitemesh-2.4.jar 包;
在基于SSH的电子拍卖系统中,Sitemesh可以用来定义全局的页眉、页脚、侧边栏等,使每个页面都保持一致的样式,提升用户体验。 结合以上四个关键组件,"auction_Eclipse"可能是一个Eclipse工程,包含了整个电子拍卖...
2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3、接着FilterDispatcher被调用,...
### SSH框架学习指南知识点详解 #### 一、SSH框架简介 SSH框架,即Struts2 + Spring + Hibernate的组合,是一种流行的Java Web开发框架。它将MVC模式、依赖注入和对象关系映射等技术结合在一起,使得开发更加高效、...
### Java SSH框架学习知识点 #### 一、SSH框架概述 SSH框架是指由Spring、Struts2和Hibernate三个开源框架组成的轻量级Java EE应用程序开发框架。这三个框架在Java Web开发中各自扮演着重要的角色,相互协作可以...
根据给定的信息,本文将对SSH框架的核心知识点进行详尽阐述。SSH框架即Struts + Spring + Hibernate,是Java Web开发领域中一个非常流行的轻量级应用框架组合。本篇内容将围绕Struts、Spring、Hibernate这三个核心...
本项目以SSH框架为核心,结合文件上传下载功能,以及Ajax和Sitemesh等技术,提供了丰富的实践经验和学习资源。 1. **Struts**:Struts是MVC(Model-View-Controller)设计模式的一种实现,主要用于处理用户界面和...
### SSH中的Jar包详解 SSH(Struts+Spring+Hibernate)是Java Web开发中非常流行的轻量级框架组合。为了更好地理解和使用SSH框架,我们有必要深入解析这些框架中所涉及的关键Jar包及其功能。 #### 1. **antlr-2.76...
Sitemesh则是一种页面布局工具,它可以帮助开发者创建一致的页面外观和复合视图。 Lucene是全文搜索引擎库,常用于实现网站的搜索功能。JUnit是Java单元测试的框架,确保代码的质量和可维护性。JDBC是Java连接...
"e拍网上购物系统(SSH框架)"是一个基于SSH(Spring、Struts和Hibernate)架构开发的电子商务平台。SSH是Java Web开发中的一个经典组合,它整合了Spring的依赖注入和事务管理,Struts的MVC设计模式,以及Hibernate...
在《开发者突击:Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)》架构讲解的过程中,穿插介绍了JDBC、Log4j、Sitemesh、JUnit技术。 随书附赠光盘内容包括《开发者突击:Java Web主流框架整合开发(J2EE+...
基于注解开发的 java web, 使用框架 spring 2.5 , hibernate 3.3 , struts 2.1 , sitemesh 2.4 (spring 和 hibernate 使用注解,struts 使用配置) 使用 eclipse 3.5 部署! 所需要 jar 包查看 WebContent\META-INF\...
在本书架构讲解的过程中,分别使用并讲解了JDBC、Log4j、Sitemesh、JUnit技术。 一本java web学习的好教材,影印版,清晰度保质保量,共809页,压缩成7個文件,爲了区分别的压缩文件,我在文件名后面增加(hyit2004),...
* 系统技术:二手交易平台的系统技术包括J2EE开发技术、SSH2框架、Junit4单元测试、Ant自动化、Sitemesh界面设计等。 三、商品信息及管理模块设计 * 商品信息模块:包括商品信息的添加、修改、删除、查询等基本...