这个问题很好解决阿!@~!
你写一个过滤器就可以了!~!
记得加上参数Dispatch的REQUEST,RESPONSE就可以了!~!
你写一个过滤器就可以了!~!
记得加上参数Dispatch的REQUEST,RESPONSE就可以了!~!
解决方案 »
- c3p0配置没有反应
- myeclipse中如何配置使maven项目可以正常发布到tomcat中
- s2sh整合时,怎样通过 一个字段来获取此类的对象。。
- 寻求java合作者(北京)
- 这样的sql语句怎么用hql来实现?
- struts+hibernate+tomcat运行一段时候后报java.sql.SQLException: Closed Connection
- tomcat5.5数据库连接池问题
- 有没有谁用过apache 的httpclient的代理功能的,请帮忙。
- 网络主机流量监控
- struts2前台到后台参数组装失败
- 如果记录在线会员的名单跟人数要怎么办?
- hibernate 只有高手才知道的问题问题
package com.yy.filter;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class EncodingFilter implements Filter {
private FilterConfig filterconfig;
private String encoding;
private boolean ignore;
public EncodingFilter()
{
this.filterconfig=null;
this.encoding=null;
this.ignore=false;
}
public void destroy() {
this.filterconfig=null;
this.encoding=null;
}
public void init(FilterConfig arg0) throws ServletException {
this.filterconfig=arg0;
this.encoding=filterconfig.getInitParameter("encoding");
String value=filterconfig.getInitParameter("ignore");
if(value==null)
{
ignore=false;
}
else if(value.equalsIgnoreCase("true"))
{
ignore=true;
}
else if(value.equalsIgnoreCase("yes"))
{
ignore=true;
}
else
{
ignore=true;
}
}
public final String selectEncoding(ServletRequest request)
{
return encoding;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if(ignore || request.getCharacterEncoding()==null)
{
String encoding1=this.selectEncoding(request);
if(encoding1!=null)
{
request.setCharacterEncoding("GBK");
}
chain.doFilter(request, response);
} }}
这是我的过滤器您可以借鉴一下!!! 您的问题估计应该是设置一下request.setCharcterEncoding("GBK");
jsp设置 但自己写一个过滤器也挺简单 早晚要用的
2、在web.xml配置一下。java代码:
package com.zhuoyue.util;
import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* <p>Example filter that sets the character encoding to be used in parsing the
* incoming request, either unconditionally or only if the client did not
* specify a character encoding. Configuration of this filter is based on
* the following initialization parameters:</p>
* <ul>
* <li><strong>encoding</strong> - The character encoding to be configured
* for this request, either conditionally or unconditionally based on
* the <code>ignore</code> initialization parameter. This parameter
* is required, so there is no default.</li>
* <li><strong>ignore</strong> - If set to "true", any character encoding
* specified by the client is ignored, and the value returned by the
* <code>selectEncoding()</code> method is set. If set to "false,
* <code>selectEncoding()</code> is called <strong>only</strong> if the
* client has not already specified an encoding. By default, this
* parameter is set to "true".</li>
* </ul>
*
* <p>Although this filter can be used unchanged, it is also easy to
* subclass it and make the <code>selectEncoding()</code> method more
* intelligent about what encoding to choose, based on characteristics of
* the incoming request (such as the values of the <code>Accept-Language</code>
* and <code>User-Agent</code> headers, or a value stashed in the current
* user's session.</p>
*
* @author Craig McClanahan
* @version $Revision: 1.1 $ $Date: 2008/10/12 14:12:56 $
*/public class SetCharacterEncodingFilter implements Filter {
// ----------------------------------------------------- Instance Variables
/**
* The default character encoding to set for requests that pass through
* this filter.
*/
protected String encoding = null;
/**
* The filter configuration object we are associated with. If this value
* is null, this filter instance is not currently configured.
*/
protected FilterConfig filterConfig = null;
/**
* Should a character encoding specified by the client be ignored?
*/
protected boolean ignore = true;
// --------------------------------------------------------- Public Methods
/**
* Take this filter out of service.
*/
public void destroy() { this.encoding = null;
this.filterConfig = null; }
/**
* Select and set (if specified) the character encoding to be used to
* interpret request parameters for this request.
*
* @param request The servlet request we are processing
* @param result The servlet response we are creating
* @param chain The filter chain we are processing
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet error occurs
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException { // Conditionally select and set the character encoding to be used
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
// Pass control on to the next filter
chain.doFilter(request, response); }
/**
* Place this filter into service.
*
* @param filterConfig The filter configuration object
*/
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 Methods
/**
* Select an appropriate character encoding to be used, based on the
* characteristics of the current request and/or filter initialization
* parameters. If no character encoding should be set, return
* <code>null</code>.
* <p>
* The default implementation unconditionally returns the value configured
* by the <strong>encoding</strong> initialization parameter for this
* filter.
*
* @param request The servlet request we are processing
*/
protected String selectEncoding(ServletRequest request) { return (this.encoding); }
}
web.xml配置:<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>
com.zhuoyue.util.SetCharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
重启web容器,over
与 <%page pageEncoding="gbk"%>有什么区别?谢谢 --------------一个是文件保存编码,一个是页面文字编码
我用struts做毕业设计的时候。也碰到过乱码的问题。我记得是数据从JSP页面提交,通过struts进行持久化处理。如果我在页面输入汉字。保存之后,页面显示的就是乱码。这个问题困惑了我好久。一直没有解决。也有人建议我写过滤器。后来时间仓促没有写。祝你好运!
最后提醒一句 记得要统一编码 JSP页面 要么统一GBK 要么UTF-8
userUnicode=true是允许用户自己定义字符集,characterEncoding=gbk就是你定义的字符集为gbk。 <%page contentType="text/html;charset=gbk"%> 是指页面以文本或网页的形式显示且字符集为gbk,
<%page pageEncoding="gbk"%>指编码为gbk,我认为两者的功能相似。
解决乱码时最好用过滤器,因为过滤器是自动调用的:
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class EncodingFilter implements Filter {
//初始化 private String encoding="";
public void init(FilterConfig filterConfig)throws ServletException{
//encoding=filterConfig.getInitParameter("encoding");
}
public void doFilter(ServletRequest request,ServletResponse response,
FilterChain filterChain)throws IOException,ServletException{
request.setCharacterEncoding("GBK");
filterChain.doFilter(request,response);
}
//销毁
public void destroy(){
//encoding="";
}
}
在web.xml中配置过滤器:
<filter>
<filter-name>名字</filter-name>
<filter-class>包名.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>名字</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我能力有限,不知道有没有回答你的问题,但我已经尽力了,望有所帮助!祝天天进步!加油哦!