后台(26)——Filter(3)
发布日期:2021-06-30 11:17:59
浏览次数:2
分类:技术文章
本文共 3953 字,大约阅读时间需要 13 分钟。
版权声明
- 本文原创作者:
- 作者博客地址:
在这篇博客中我们利用Filter一并解决POST和GET请求的中文乱码。
测试表单
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>Welcome
该页面非常简单,在点击”登录”之后跳转到loginServlet
测试Servlet
/** * 本文作者:谷哥的小弟 * 博客地址:http://blog.csdn.net/lfdfhl */package cn.com;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 { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGetAndPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGetAndPost(req, resp); } private void doGetAndPost(HttpServletRequest req, HttpServletResponse resp){ String username=req.getParameter("username"); System.out.println("---> username="+username); }}
在该页面中利用getParameter( )测试是否乱码
利用Filter过滤乱码
嗯哼,终于轮到今天的主角上场了
/** * 本文作者:谷哥的小弟 * 博客地址:http://blog.csdn.net/lfdfhl */package cn.com;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.Map;import java.util.Map.Entry;import java.util.Set;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.HttpServletRequestWrapper;import javax.servlet.http.HttpServletResponse;public class TestFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request=(HttpServletRequest) req; HttpServletResponse response=(HttpServletResponse) res; request=new MyHttpServletRequest(request); chain.doFilter(request, response); } @Override public void destroy() { }}class MyHttpServletRequest extends HttpServletRequestWrapper{ HttpServletRequest request; boolean isFirst=true; public MyHttpServletRequest(HttpServletRequest request) { super(request); this.request=request; } @Override public String getParameter(String name) { MapparameterMap=getParameterMap(); String[] values=parameterMap.get(name); String value=values[0]; return value; } @Override public String[] getParameterValues(String name) { Map parameterMap=getParameterMap(); String[] values=parameterMap.get(name); return values; } @Override public Map getParameterMap() { Map parameterMap = request.getParameterMap(); if(isFirst){ Set > entrySet = parameterMap.entrySet(); for(Entry entry:entrySet){ String[] values = entry.getValue(); for(int i=0;i
在该类中通过继承HttpServletRequestWrapper实现自己的HttpServletRequest,即文中的MyHttpServletRequest。
- 覆写getParameter( )使其最终调用getParameterMap( )
- 覆写getParameterValues( )使其最终调用getParameterMap( )
- 在getParameterMap( )中将每个请求参数用UTF-8重新编码
配置文件
TestFilter cn.com.TestFilter TestFilter /* loginServlet cn.com.LoginServlet loginServlet /loginServlet index.jsp
嗯哼,至此利用Filter同时解决了Post和Get请求时带来的中文乱码问题。
转载地址:https://it9527.blog.csdn.net/article/details/56894134 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月05日 08时37分17秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
CodeForces 628A Tennis Tournament
2019-04-30
HDOJ2049 不容易系列之(4)——考新郎
2019-04-30
CodeForces 248B - Chilly Willy - 找规律
2019-04-30
C与C++中的运算符和常用函数的使用
2019-04-30
POJ 3421 X-factor Chains(数论)(筛法)()
2019-04-30
UVA 1339 - Ancient Cipher(题意)(排序)
2019-04-30
HDOJ 1081 To The Max(dp)(状态压缩)未解决
2019-04-30
UVA 10375 - Choose and divide(数论)(组合数学)
2019-04-30
Codeforces 比赛代码记录及心得
2019-04-30
POJ初级分类 枚举专题 poj1753 poj2965
2019-04-30
暴力求解法 算法竞赛入门经典2读书笔记 (附POJ 1321)
2019-04-30
重积分和线面积分总结
2019-04-30
FZU 2147(找规律)
2019-04-30
POJ 2231 Moo Volume(规律)
2019-04-30
2016ACM省赛总结
2019-04-30
POJ初级分类 贪心专题 poj1328 POJ2109 POJ 2586
2019-04-30