解决全站乱码问题
首先创建CharseterEncodingFilter.java实现如下方法:
private FilterConfig config = null;
private String defaultCharset = "utf-8";
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
String charset = config.getInitParameter("charset");
if(charset==null){
charset = defaultCharset;
}
request.setCharacterEncoding(charset);
resp.setCharacterEncoding(charset);
resp.setContentType("text/html;charset="+charset);
chain.doFilter(req, resp);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.config = filterConfig;
}
其次在web.xml实现如下代码:
<filter>
<filter-name>charseterEncodingFilter1</filter-name>
<filter-class>cn.class3g.web.filter.CharseterEncodingFilter1</filter-class>
</filter>
<filter-mapping>
<filter-name>charseterEncodingFilter1</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在Index.jsp页面中
<form action="/Filter_Test/servlet/TestCharsetServlet" method="post" >
城市:<input type="text" name="city" value="保定"/> <br/>
<input type="submit" value="提交" />
</form>
其次创建servlet文件,在TestCharsetServlet.java中调用doget、dopost方法
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String city = request.getParameter("city");
response.getWriter().write(city);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String city = request.getParameter("city");
response.getWriter().write(city);
}
运行测试结果,页面能够正常显示。将过滤器去掉,再次测试,乱码。
将表单的method改为get再次测试,乱码。因为此种办法不能解决get方式的乱码问题