filter get乱码 全站编码解决 包装模式
包装模式简介:
package com.itheima.test; import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader; public class MyBufferedReader extends BufferedReader {//似你 BufferedReader包装类
//针对父类已经是一个包装类的情况下,包装模式可以进一步简化 /*private BufferedReader br;//还有你
private int i=0;
public MyBufferedReader(Reader in) {
super(in);
this.br =(BufferedReader) in;//拜托你
}
@Override
public String readLine() throws IOException {
String str = br.readLine();
if(str==null)
return null;
i++;
return i+" "+str;
}*/ //改下后的
//private BufferedReader br;//还有你
private int i=0;
public MyBufferedReader(Reader in) {
super(in);
//this.br =(BufferedReader) in;//拜托你
}
@Override
public String readLine() throws IOException {
String str = super.readLine();
if(str==null)
return null;
i++;
return i+" "+str;
}
}
先继承同样的接口,然后将接口传进来,通过构造方法
测试
package com.itheima.test; import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader; public class WrapperTest { public static void main(String[] args) {
try {
FileReader fr = new FileReader("src/com/itheima/test/MyBufferedReader.java");
BufferedReader br=new BufferedReader(fr);
MyBufferedReader mbr = new MyBufferedReader(br);
String line=null;
while((line=mbr.readLine())!=null){
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
} }
tomcat 的高版本已经解决了get请求的乱码问题,如果要包装的类实现的接口已经有一个包装类了,可以直接继承那个包装类,进行简单的包装,简单包装后直接写需要包装的方法就可以了。
package com.itheima.web.filter; import java.io.IOException;
import java.io.UnsupportedEncodingException; 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; /**
* Servlet Filter implementation class CharacterEncodingFilter
*/
public class CharacterEncodingFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp; request.setCharacterEncoding("UTF-8");//post乱码
response.setCharacterEncoding("UTF-8");//添加,有经验
response.setContentType("text/html;charset=UTF-8");//响应时没有乱码 //对于get提交,也要解决??? (Tomcat高版本下对get提交已解决) //调包
MyHttpServletRequest myrequest = new MyHttpServletRequest(request);
chain.doFilter(myrequest, response);
} class MyHttpServletRequest extends HttpServletRequestWrapper{ public MyHttpServletRequest(HttpServletRequest request) {
super(request);
} @Override//改写你
public String getParameter(String name) {
String paramValue = super.getParameter(name);//取参数值
if(paramValue==null)
return null;
//要判断请求类型??? get 就要做乱码处理
String type = super.getMethod();//post get获取提交方式
if(type.equalsIgnoreCase("get")){
//说明要进行乱码处理
try {
paramValue = new String(paramValue.getBytes("iso-8859-1"),"UTF-8");//getBytes(“iso-8859-1”)是使用iso-8859-1编码表进行转换。
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} return paramValue;
}
} public void init(FilterConfig fConfig) throws ServletException { } }
filter get乱码 全站编码解决 包装模式的更多相关文章
- javaweb的Filter过滤器设置全站编码
FIlter配置全站编码有一种方法是重写getParameter方法,也就是继承HttpServletRequestWrapper在重写getParameter方法,还有一种就是如下: public ...
- JAVA ,SSH中文及其乱码问题的解决 6大配置点 使用UTF-8编码
JSP,mysql,tomcat下(基于struts2)中文及其乱码问题的解决 6大配置点 使用UTF-8编码 目前对遇到J2EE 开发中 中文及其乱码问题,参考网上资料做个总结, 主要是6大配置点: ...
- ssh框架从页面传中文发生乱码时怎么解决,就是添加一个字符编码拦截器。用springframework自带的便可
ssh框架从页面传中文发生乱码时怎么解决,就是添加一个字符编码拦截器.用springframework自带的便可
- 【Java EE 学习 35 上】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】【资源文件乱码问题已经解决】
一.类型转换器 1.在动作类action中,声明和表单中name属性的值同名的属性,提供get和set方法,struts2就可以通过反射机制,从页面中获取对应的内容 package com.kdyzm ...
- Java Web乱码原因与解决
Java Web乱码原因与解决 一.了解编码常识: 1.ASCII 码 众所周知,这是最简单的编码.它总共可以表示128个字符,0~31是控制字符如换行.回车.删 除等,32~126是打印字符,可以通 ...
- 从js向Action传中文参数出现乱码问题的解决方法
Action获取jsp表单中的中文参数,只要整个项目都采用UTF-8编码格式都不会出现乱码问题:但JSP中用到JS,并从JS向Action传中文参数,就会出现中文乱的现象 做项目的时候,发现A ...
- [JavaEE]Get请求URI中带的中文参数在服务端乱码问题的解决方法
在Get请求中,如果请求参数中带有中文,如 http://localhost:8080/DinnerParty/shop/search?query=多伦多, 在服务端拿到的是乱码. 这是因为客户端提交 ...
- MySQL导出csv乱码问题的解决
csv乱码问题的解决 从MySQL导出数据到 csv 文件后,有时会发现用 excel 打开该导出 csv 文件显示的是乱码.这个问题是 csv 文件本身的文本编码问题导致的,解决办法: 1 ...
- JSP学习(一)之中文乱码问题的解决
一.响应中的乱码 我们所看到的页面,是由服务器把内容放入响应(response)中,然后发送给浏览器的.如果响应中的数据无法被正常解析,就会出现中文乱码.为什么英文不存在乱码问题?因为无论是ISO-8 ...
随机推荐
- window7 下配置python2.7+tornado3.3开发环境
玩python的人大都在linux下进行开发,由于长期习惯在windows下开发代码,今天蛋疼尝试在window7下配置python2.7+tornado3.3开发环境,必然的中间遇到各种报错,但是最 ...
- 20145218张晓涵_Exp5 MSF基础应用
20145218张晓涵_Exp5 MSF基础应用 实验原理 MS08-067漏洞描述 MS08-067漏洞的全称为"Windows Server服务RPC请求缓冲区溢出漏洞",如果 ...
- C#开源网络通信库PESocket的使用
PESocket PESocket开源项目GitHub地址:点击跳转 基于C#语言实现的高效便捷网络库.支持集成到Unity当中使用. 不用过多了解网络通信内部原理,只需几行简单的代码,便能简捷快速开 ...
- 21天学通C++学习笔记(三):变量和常量
1. 简述 内存是一种临时存储器,也被称为随机存取存储器(RAM),所有的计算机.智能手机及其他可编程设备都包含微处理器和一定数量的内存,用地址来定位不同的存储区域,像编号一样. 硬盘可以永久的存储数 ...
- appstore开发者 名称修改
1.前提是开发者账号为企业账号 CSDN大佬写的,应该没错
- mysql相关的软件
数据库采用mysql,那么问题来了,mysql的部署是采用主备模式?主主模式?集群模式?在然后采取分库.分表模式? 其次:在外围的辅助开源软件的选择mycat?mybatis?keepalived?r ...
- PHP的Composer 与 Packagist,简单入门
[转]http://www.php.cn/manual/view/34000.html Composer 是一个 杰出 的依赖管理器.在 composer.json 文件中列出你项目所需的依赖包,加上 ...
- linux命令笔记,零散记录<不完整,学习用>
uname -a 输出系统架构 cp 源文件 目标文件 mv同理 tar –xvf file.tar // 解压 tar包 tar -zxvf file.tar.gz // 解压tar.gz tar ...
- luoguP2781 传教
https://www.luogu.org/problemnew/show/P2781 简化版题意:有 n 个数,初始值为 0,进行 m 次操作,每次操作支持将 [l, r] 加 v 和查询 [l, ...
- HDU6301-2018ACM暑假多校联合训练1004-Distinct Values
题意是一个长度为n的序列,给你m组区间(l,r),在这个区间里不能填入重复的数字,同时使整个序列字典序最小 同学用的优先队列,标程里使用的是贪心同时使用set维护答案序列 贪心是先采用pre数组来确定 ...