在web.xml中加上
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.huahang.tj.struts.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>
这里会涉及一个Filter,源码如下:
import javax.servlet.*;
import java.io.IOException;
.public class SetCharacterEncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true;
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;
}
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
加上这个后,在action中就可以直接从form中接收gb2312编码的数据了,返回时自然也是gb2312了
分享到:
相关推荐
在Struts2中,可以通过实现`Filter`接口或者继承`FilterDispatcher`类来自定义过滤器。在这个过滤器的`doFilter`方法中,我们可以检查请求是否带有自动登录相关的Cookie。如果找到该Cookie,就从Cookie中解析出用户...
解决方法包括设置正确的字符编码和在web.xml中配置过滤器以处理输入流的字符编码。 #### 五、Struts模块包含 Struts支持模块化开发,允许将应用划分为多个逻辑上独立的模块。每个模块都有自己的配置文件(struts....
TokenFilter是Struts中用来防止重复提交的一种常见方法。这个过滤器会在用户提交表单时生成一个唯一的令牌,并将其存储在用户的会话(session)中。当表单被提交时,服务器会检查这个令牌,如果令牌匹配且未被使用过...
- 配置过滤器,如`struts2-convention-plugin`,以便自动匹配Action和结果页面。 2. **Spring配置** - 创建`applicationContext.xml`,定义Bean的配置,包括Action、Service、DAO等类的实例。 - 使用Spring的DI...
4. web.xml配置:配置Struts2的核心过滤器`<filter-name>struts2</filter-name>`,以及其对应的过滤器类`<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>`。...
2. **过滤器处理**:请求经过一系列过滤器(Filter),其中第一个通常是Struts2的核心过滤器——`StrutsPrepareAndExecuteFilter`。该过滤器负责初始化Struts2环境,并准备执行相应的Action。此外,还可能包括其他...
2. **Struts2架构**:了解Struts2框架的组件,如Filter Dispatcher(过滤器调度器)、Action类、Result、Interceptor(拦截器)等,它们在框架中的作用和相互协作方式。 3. **配置文件**:深入学习struts.xml配置...
这可能涉及到session管理,以及使用过滤器(Filter)来检查用户是否已登录。 7. **异常处理**: 在开发过程中,良好的错误和异常处理至关重要。开发者可能使用try-catch语句来捕获可能出现的问题,并提供友好的...
4. **Filter(过滤器)**:过滤器可以拦截请求和响应,进行预处理或后处理,如权限检查、字符编码转换等。熟悉filter链、doFilter方法以及在web.xml中的配置是学习过滤器的关键。 5. **Listener(监听器)**:监听...
过滤器(Filter)和监听器(Listener)是JavaEE中用于处理HTTP请求和响应的关键组件。过滤器可以对请求和响应进行预处理和后处理,而监听器则可以监听应用上下文和会话的状态变化,执行相应的逻辑。 #### 十、Struts2 ...
- **Filter 接口**:实现过滤器功能的关键接口。 - **一个例子**:创建过滤器来检查用户是否已登录。 #### 9.2 监听器 监听器用于监听应用程序的生命周期事件,如应用程序启动和停止。 ### 十、Struts2 #### ...
2. **过滤器(Filter)和拦截器(Interceptor)**:过滤器是Java Servlet规范的一部分,它允许开发者在请求到达目标Servlet或JSP之前对其进行预处理,并在响应返回给客户端之后进行后处理。而拦截器通常是在MVC框架...