第一部分:Filter(手动在web.xml中配制Filter)
package com.sml.web.filter;
import java.io.IOException;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
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;
import javax.servlet.http.HttpServletResponse;
/**
* 在filter中就先处理乱码问题
* jdk中的动态代理 proxy
* fliter
*服务器的启动而创建
* 关闭而关闭
*
* @author Administrator
*
*/
public class Filter4Login implements Filter {
@Override
public void destroy() {
System.out.println("filter销毁了");
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
// 强转
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
// 动态代理
HttpServletRequest requestProxy = (HttpServletRequest) Proxy.newProxyInstance(
request.getClass().getClassLoader(), request.getClass().getInterfaces(), new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
if ("getParameter".equals(method.getName())) {
if ("get".equalsIgnoreCase(request.getMethod())) {
String s = (String) method.invoke(request, args);
return new String(s.getBytes("iso-8859-1"), "utf-8");
} else if ("post".equalsIgnoreCase(request.getMethod())) {
request.setCharacterEncoding("utf-8");
return method.invoke(request, args);
}
}
return method.invoke(request, args);
}
});
arg2.doFilter(requestProxy, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println("filter创建了");
}
}
第二部分:关于servlet
package com.sml.web.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 登录中文乱码问题
*/
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");
System.out.println(username);
String hobby = request.getParameter("hobby");
System.out.println(hobby);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
@Override
public void init() throws ServletException {
super.init();
System.out.println("servlet创建了");
}
@Override
public void destroy() {
super.destroy();
System.out.println("servlet销毁了");
}
}