字符编码的过滤器

来源:互联网 发布:什么是java 软件开发 编辑:程序博客网 时间:2024/05/07 09:13

login.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>    <base href="<%=basePath%>">        <title>My JSP 'index.jsp' starting page</title>  </head>  <form action="./LoginServlet" method="post">      <body>       员工信息录入<br/>                                    用户名:<input type="text" value="" name="username" /> <br/>                              密码:<input type="password" name="psw"/> <br/>                              保存用户名和密码<input type="checkbox" name="save" value="yes" /><br/>                          <input type="submit" value="保存" />       </body>  </form></html>

LoginServlet:

package day22BaseFilter.CharacterEncoding;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class LoginServlet extends HttpServlet {public LoginServlet() {super();}public void destroy() {super.destroy(); // Just puts "destroy" string in log}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request,response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();String username=request.getParameter("username");System.out.println("username=  "+username);}public void init() throws ServletException {}}

Web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <context-param>    <param-name>testContext</param-name>    <param-value>xxxxxxxx</param-value>  </context-param>    <!-- 注册filter -->  <filter>  <filter-name>CharacterEncodingFilter</filter-name>  <filter-class>day22BaseFilter.CharacterEncoding.CharacterEncodingFilter</filter-class>    <init-param>  <param-name>encoding</param-name>  <param-value>utf-8</param-value>  </init-param>    <init-param>  <param-name>test2</param-name>  <param-value>a2</param-value>  </init-param>    </filter>   
<filter-mapping>  <filter-name>CharacterEncodingFilter</filter-name>  <!-- 拦截所有的请求 -->  <url-pattern>/*</url-pattern>  <!-- 拦截单个的jsp请求   <url-pattern>/a/b.jsp</url-pattern>        拦截所有jsp的请求   <url-pattern>*.jsp</url-pattern>         拦截所有的*.do请求  <url-pattern>/*</url-pattern>    拦截指定的Servlet请求 <servlet-name>LoginServlet</servlet-name>  -->  </filter-mapping>

<servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>day22BaseFilter.CharacterEncoding.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/LoginServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>

CharacterEncodingFilter.java:

package day22BaseFilter.CharacterEncoding;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;import javax.servlet.http.HttpServletRequest;public class CharacterEncodingFilter implements Filter {private String encoding;public void destroy() {// TODO Auto-generated method stub}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out.println("doFilter Run");HttpServletRequest req=(HttpServletRequest)request;if(req.getCharacterEncoding()==null){if(this.encoding!=null){//设置字符编码         req.setCharacterEncoding(this.encoding);}}//放行chain.doFilter(req, response);}public void init(FilterConfig filterConfig) throws ServletException {String encoding=filterConfig.getInitParameter("encoding");this.encoding=encoding;}}