博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Web--Filter使用装饰器模式解决全站中文乱码问题
阅读量:2442 次
发布时间:2019-05-10

本文共 2378 字,大约阅读时间需要 7 分钟。

使用过滤器完成对中文编码的统一处理问题:

表单页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    表单    
用户名:
密  码:

处理表单的Servlet:

public class EncodingServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println(username + ":" + password); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response); }}

过滤器:

package pers.zhang.filter;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;import java.io.IOException;import java.io.UnsupportedEncodingException;/** * @author zhang * @date 2019/9/21 - 15:55 */public class EncodingFilter implements Filter {
@Override public void init(FilterConfig filterConfig) throws ServletException {
} @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//被增强的对象 HttpServletRequest request = (HttpServletRequest) servletRequest; //增强对象 EnhanceRequest enhanceRequest = new EnhanceRequest(request); filterChain.doFilter(enhanceRequest, servletResponse); } @Override public void destroy() {
}}class EnhanceRequest extends HttpServletRequestWrapper {
private HttpServletRequest request; public EnhanceRequest(HttpServletRequest request) {
super(request); this.request = request; } //对getParaameter增强 @Override public String getParameter(String name) {
String parameter = request.getParameter(name);//乱码 try {
parameter = new String(parameter.getBytes("iso8859-1"),"UTF-8"); } catch (UnsupportedEncodingException e) {
e.printStackTrace(); } return parameter; }}

配置:

encodingFilter
pers.zhang.filter.EncodingFilter
encodingFilter
/*

测试:

启动服务器,访问表单页面:
在这里插入图片描述
点击提交,控制台输出:

张三:123456

转载地址:http://cisqb.baihongyu.com/

你可能感兴趣的文章
如何在Ubuntu 14.04中管理启动应用程序
查看>>
如何在Ubuntu 14.04中读取MOBI文件
查看>>
计算两张图片是否完全相同_您如何分辨两张DVD是否完全相同?
查看>>
如何在Windows 10中连接到无线网络
查看>>
proxies中的机密信息_新机密模式在Gmail中的工作方式
查看>>
如何检查MacBook的电池状况
查看>>
2k分辨率显示器 浏览器_如何使浏览器使用显示器的完整分辨率?
查看>>
ubuntu lts 版本_最新的Ubuntu LTS版本是什么?
查看>>
苹果收集到月中蜂窝数据满_苹果不会收集有关您的大量数据
查看>>
redis发布订阅数据太大_一切现在都是订阅,而且太多了
查看>>
android alexa_如何将Alexa设置为Android上的默认数字助理
查看>>
2018年4月13日_如何立即获取Windows 10的2018年4月更新
查看>>
电报机器人 gmail_如何在新的Gmail中查找联系人
查看>>
硬盘未分配空间变为可用空间_使用Windows 10的新“可用空间”工具清理硬盘
查看>>
如何下载所有Instagram照片
查看>>
iphone闪存测速软件_如何在iPhone上使用USB闪存盘
查看>>
传智播客客户端密码_适用于Android的最佳播客客户端
查看>>
24/7专业家庭安全监控值得吗?
查看>>
注册域名流程_域名注册流程如何工作?
查看>>
HTG回顾Waka Waka:一个不开玩笑的移动式太阳能小工具充电器
查看>>