麻烦帮我看看我这样为什么不能解决乱码
package cc;
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 CharactorFilter implements Filter {
String encoding=null;
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if(encoding!=null){
//设置request字符编码
request.setCharacterEncoding(encoding);
//设置response字符编码
response.setContentType("text/html;charset="+encoding);
}
//传递给下一个过滤器
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
//获取初始化参数
encoding=filterConfig.getInitParameter("encoding"); }
public void destroy() {
// TODO Auto-generated method stub
encoding=null; }}
a.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'a.jsp' starting page</title>
</head>
<body>
<form action="b.jsp" method="post">
name:<input type="text" name="name"><input type="submit" value="submit">
</form>
</body>
</html>
b.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'b.jsp' starting page</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
%>
Hello:${param.name}
</body>
</html>
关于java过滤器解决中文乱码的
答案:2 悬赏:80 手机版
解决时间 2021-04-08 04:16
- 提问者网友:龅牙恐龙妹
- 2021-04-07 05:28
最佳答案
- 五星知识达人网友:蓝房子
- 2021-04-07 05:42
因为你遗漏了重要的一步。正确的方法如下:
if(encoding!=null){
//设置request字符编码
request.setCharacterEncoding(encoding);
//设置response字符编码
response.setContentType("text/html;charset="+encoding);
response.setCharacterEncoding(encoding);
}
//传递给下一个过滤器
chain.doFilter(request, response);
if(encoding!=null){
//设置request字符编码
request.setCharacterEncoding(encoding);
//设置response字符编码
response.setContentType("text/html;charset="+encoding);
response.setCharacterEncoding(encoding);
}
//传递给下一个过滤器
chain.doFilter(request, response);
全部回答
- 1楼网友:十鸦
- 2021-04-07 06:31
public void dofilter(servletrequest srequest, servletresponse sresponse,
filterchain chain) throws ioexception, servletexception {
if (null != encoding) {
httpservletrequest request = (httpservletrequest)srequest;
httpservletresponse response = (httpservletresponse)sresponse;
// 对请求进行编码设置
request.setcharacterencoding(encoding); //把请求用指定的方法编码
response.setcontenttype("text/html");
response.setcharacterencoding(encoding); //把返回响应指定 编码方式
system.out.println("------------过滤编码-------------" + encoding);
}
// 把处理权限交给下一个过滤器
chain.dofilter(srequest, sresponse);
}//这是核心方法
正好项目中有用到
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯