个人关于web2.5中的动态反射代理来解决sevlet中文乱码理解
来源:互联网 发布:全国棉花加工数据 编辑:程序博客网 时间:2024/06/11 03:14
第一部分: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 {@Overridepublic void destroy() {System.out.println("filter销毁了");}@Overridepublic 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() {@Overridepublic 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);}@Overridepublic 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);}@Overridepublic void init() throws ServletException {super.init();System.out.println("servlet创建了");}@Overridepublic void destroy() {super.destroy();System.out.println("servlet销毁了");}}
阅读全文
0 0
- 个人关于web2.5中的动态反射代理来解决sevlet中文乱码理解
- 动态代理解决中文乱码
- JAVA反射(四)之动态代理解决全局乱码问题
- 反射中的动态代理
- web2.0中的sns社区个人理解
- 动态代理解决表单提交的中文乱码问题
- 深入理解 动态代理+反射
- 关于反射的个人理解
- 动态代理、反射中的Exception
- Qt 5以上关于中文乱码解决
- J2EE中解决sevlet提交给mysql中文出现乱码问题
- Java jsp sevlet中文乱码问题解决方案
- java反射和动态代理的理解
- 理解Java中的动态代理
- 关于java反射的个人理解
- sevlet线程安全问题理解与解决
- 关于js中文乱码问题和js事件代理动态生成div
- sevlet 乱码
- python 的 subprocess模块用法 popen
- Tomcat使用(二) Linux下去掉访问路径的项目名
- STL之iota使用
- 集体智慧学习编程——自我改编应用
- (转载)数据库范式及宽表窄表理解
- 个人关于web2.5中的动态反射代理来解决sevlet中文乱码理解
- arduino学习之led相关--跑马灯+电位器控制led亮灭
- jdk7新特性
- test10
- 【C#机房重构】未删除任何行
- HAL so库加载机制---之二
- 目录
- 2017计蒜客第一场B题-阿里天池的新任务(简单)(数据结构-KMP)
- axure原型设计之水泡导航栏