<filter>
<filter-name>Set_Character_Encoding</filter-name>
<filter-class>com.baofeng.media.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set_Character_Encoding</filter-name>
<url-pattern>/*</url-pattern> //不是<servlet-name>
</filter-mapping>
不明白吗?往后看
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
对应.指定当服务器收到.do结尾的请求的时候.调用org.apache.struts.action.ActionServlet类来处理.
action就是一个名字.只要保证两部分的<servlet-name>能够一致就ok.*.do可以改.就是个请求的字符.你的jsp中肯定在提交请求的时候.发送的是xxx.do这种
servlet-name是在配置文件里的名字,为了对应匹配的,不要瞎写,应该是红色字体部分。
以下是过滤器的代码,注意,
所有前台的请求必须是post的,不然过滤器是不会管的。
protected FilterConfig filterConfig;
protected String encodingName;
protected boolean enable;
public EncodingFilter() {
this.encodingName = "UTF-8";
this.enable = false;
}
public void init( FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
loadConfigParams();
}
private void loadConfigParams() {
this.encodingName = this.filterConfig.getInitParameter("encoding");
String strIgnoreFlag = this.filterConfig.getInitParameter("enable");
if (strIgnoreFlag.equalsIgnoreCase("true"))
{
this.enable = true;
}else
{
this.enable = false;
}
}
public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
if (this.enable)
{
request.setCharacterEncoding(this.encodingName);
response.setCharacterEncoding(this.encodingName);
}
chain.doFilter(request, response);
}
public void destroy() {
}
还有一点要注意:
通过 get/post 方式从 ie中发送汉字,发送编码方式由Content-Type决定,request.getParameter("XX")得到的字符串是用ISO-8859-1表示的,所以必须在取值前用HttpServeletRequest.setCharacterEncoding 设置想得到的编码类型,或是在<Connector>中添加URIEncoding="GBK"属性,来获取正确的编码类型。
但是,在执行setCharacterEncoding()之前,不能执行任何getParameter()。
java doc上说明:This method must be called prior to reading request parameters or reading input using getReader()。而且,该指定只对POST方法有效,对GET方法无效。分析原因,应该是在执行第一个getParameter()的时候, java将会按照编码分析所有的提交内容,而后续的getParameter()不再进行分析,所以setCharacterEncoding()无效。 而对于GET方法提交表单是,提交的内容在URL中,一开始就已经按照编码分析所有的提交内容,setCharacterEncoding()自然就无效。
摘自:
http://www.blogjava.net/xyang/archive/2006/09/28/72343.html
分享到:
相关推荐
标题和描述均聚焦于“Struts2_interceptor_和_filter区别”,这暗示着对比和解析Struts2框架中拦截器(Interceptor)与过滤器(Filter)的差异是本文的核心议题。接下来,我们将深入探讨这两者在功能、实现方式以及...
本示例中的“通用过滤器filter”是专门为Struts2设计的,用于增强应用的安全性和功能性。 过滤器(Filter)在Java Servlet规范中定义,是基于请求/响应模型工作的。它们通过实现`javax.servlet.Filter`接口,并重写...
在"网上书店struts2"项目中,可能会包含关于商品展示、购物车管理、订单处理等相关Action的配置。 五、OGNL OGNL是一种强大的表达式语言,用于在Struts2中获取和设置对象的属性。在视图层,OGNL可以用来动态地渲染...
在IT行业中,Tomcat、Struts2和Servlet Filter是Java Web开发中的重要组成部分。了解它们的工作原理对于构建高效、安全的Web应用程序至关重要。下面将详细阐述这三个组件的基本概念和工作流程。 首先,Tomcat是一个...
在 Struts2 中,Session 的使用主要通过实现 SessionAware 接口来实现,本文将详细介绍 Struts2 中的 Session 用法。 一、Session 概念 在 Web 应用程序中,Session 是指服务器端用于存储用户数据的存储空间。...
在本文中,我们将深入探讨Struts2标签的用法,包括它们的基本概念、类型以及如何在实际开发中应用。 一、Struts2标签基础 Struts2标签库是基于JavaServer Pages (JSP) 标准标签库(JSTL)的扩展,它包含了一系列与...
### STRUTS:filter过滤器 #### 概述 在Java Web开发中,过滤器(Filter)是一种重要的组件,用于拦截客户端发送至服务器的请求或服务器返回至客户端的响应。Struts框架作为Java Web开发中的一种流行框架,利用了...
以下是对Struts用法的详细总结: 1. **STRUTS 编码步骤**: - 创建项目的目录结构:通常包括SOURCE、JSP、WEB-INF、classes和lib目录。 - SOURCE下存放未编译的Java源代码。 - JSP目录下存放用户交互界面的JSP...
在本文中,我们将深入探讨如何使用Filter作为控制器来搭建Struts2的基本环境。 首先,理解Filter在Web开发中的作用至关重要。Filter是Servlet API的一部分,它允许开发者在请求到达目标Servlet或JSP之前对其进行...
在这个“Struts2 OGNL用法项目”中,我们将深入探讨OGNL(Object-Graph Navigation Language),它是Struts2中一个强大的表达式语言,用于在模型对象和视图之间进行数据绑定和表达式计算。 OGNL是Struts2的核心组件...
在压缩包文件"struts_DispatchAction"中,可能包含了实现上述步骤的示例代码,包括 DispatchAction 的Java源代码和struts-config.xml配置文件,以及可能的JSP视图文件。通过学习和分析这些文件,初学者可以更深入地...
本文主要讨论 Struts 1 的相关内容。 - **Struts 的核心优势**:Struts 提供了一个结构化的框架,帮助开发者更高效地组织代码,使得应用更加易于维护和扩展。此外,Struts 还提供了一系列的内置功能,如表单验证、...
下面我们将详细探讨Struts2标签的使用方法以及EL(Expression Language)表达式。 1. **Struts2标签库**: - **s:textfield**: 用于创建输入字段,可以设置属性如name、value、size、maxlength等。 - **s:...
本文将详细介绍Struts2.5.2的配置过程以及可能遇到的问题和解决方案。 首先,配置Struts2.5.2需要从官方站点下载所需的jar包。在http://struts.apache.org/download.cgi#struts252上,你可以找到两个选项:1是指...
Struts入门必备
Struts基本用法之国际化
网上书店的毕业设计项目通常是为了让学生实践Web应用开发技能,特别是使用Struts和JSP技术。这个项目旨在帮助开发者理解MVC(Model-View-Controller)设计模式在实际中的应用,以及如何通过JSP和Struts框架来实现...
在本文中,我们将深入探讨如何简单搭建一个Struts2.5.1项目,并了解其核心概念。 首先,让我们来看看Struts2的基本组成部分: 1. **模型(Model)**:这是应用程序的核心业务逻辑,通常由Java类实现。模型负责处理...
开发者可以从中学习到如何使用Struts2框架进行web应用开发,包括控制器层的设计、业务逻辑的实现以及与视图层的交互。同时,也可以了解到如何在实际项目中整合其他Java技术,如数据库操作、安全控制等。
拦截器的实现通常包括创建一个自定义拦截器类,该类继承自`org.apache.struts2.interceptor.BaseInterceptor`或实现`Interceptor`接口,并在`intercept()`方法中编写业务逻辑。 **过滤器(Filter)** 过滤器是...