解决servlet中get方式中中文乱码问题前驱(一):装饰者模式再理解
package day02;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
/**
* 装饰者模式
* 这个例子是解决我们get方式乱码的前驱
*
* @author mzy
*
*/
public class DecoratorPatternDemo {
/*
* 需求:
* 我们对IO流的工具进行装饰,形成我们特有的方式
* 例如:
* 给IO流加上行号
* 思考和实现:
* 其实就是对BufferedReader中的readLine方法进行增强。
* 做一个我们的BufferedReader类(MyBufferdReader):
* 其中的bufferedReader就是被装饰类,MyBufferdReader就是装饰类
*
* 装饰者模式的要求: 装饰者和被装饰者
* 1.被装饰者不能是被final修饰的
* 2.在装饰者类中定义一个成员变量来接收被装饰者类的对象。
* 3.在装饰者类的构造方法中传入被装饰者类,使用前面定义的成员变量来存放被装饰者对象。
* 4.在被装饰者类中重写被装饰者的方法来进行特定的增强。
*/
public static void main(String[] args) throws Exception {
/*
* 给BufferdReader前面加上行号
*/
BufferedReader br = new BufferedReader(new FileReader("e:/news.txt"));
// 对BufferedReader进行装饰
BufferedReader reader = new MyBufferedReader(br);
String str;
while((str=reader.readLine()) != null) {
System.out.println(str);
}
}
}
// 1. 首先确定了 不是final修饰的
// 装饰者:MyBufferedReader 被装饰者:BufferedReader
class MyBufferedReader extends BufferedReader {
// 2.在装饰类中定义一个成员变量,用于接收被装饰者类的对象。
private BufferedReader in;
/*
* 3.在装饰者类中传入被装饰者的对象,使用定义的变量接收传入的被装饰者类。
*/
public MyBufferedReader(Reader in) {
super(in);
this.in = (BufferedReader)in;
}
int count = 1;
/*
* 4.在装饰类中重写被装饰类方法,对其方法进行增强。
*/
@Override
public String readLine() throws IOException {
// 得到原来的真实的内容
String content = in.readLine();
if(content != null) {
content = count+": "+content;
count++;
}
return content;
}
}
解决servlet中get方式中中文乱码问题前驱(一):装饰者模式再理解的更多相关文章
- servlet的xx方式传值中文乱码
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOEx ...
- 在Servlet中出现一个输出中文乱码的问题(已经解)。
在Servlet中出现一个输出中文乱码的问题,已经解. @Override public void doPost(HttpServletRequest reqeust, HttpServletResp ...
- 解决docker容器中Centos7系统的中文乱码
解决docker容器中Centos7系统的中文乱码问题有如下两种方案: 第一种只能临时解决中文乱码: 在命令行中执行如下命令: # localedef -i zh_CN -f UTF-8 zh_CN. ...
- PHP连接sqlserver的两种方法,向sqlserver2000中写入数据,中文乱码
项目环境是php5.3.28 项目用的ThinkPHP3.2.3 已经mysql5.5数据库,要和另一个项目对接,需要连接sqlsever2000数据库进行一些操作. 第一种用php自带扩展连接数据 ...
- Windows下Git Bash中VIM打开文件中文乱码
Windows下Git Bash中VIM打开文件中文乱码,解决方法是: 步骤一 admin@DESKTOP-O99620V MINGW64 /d/项目GGE/Hard_for_GGE (master) ...
- oracle中imp导入数据中文乱码问题(转)
(转自 http://blog.chinaunix.net/uid-186064-id-2823338.html) oracle中imp导入数据中文乱码问题 用imp命令向oracle中导入数据后, ...
- 处理SecureCRT中使用vim出现中文乱码问题
处理SecureCRT中使用vim出现中文乱码问题 引用原文:http://blog.chinaunix.net/uid-20639775-id-3475608.html因为cat没有问题,定位是vi ...
- 解决get方法传递URL参数中文乱码问题
[转]解决get方法传递URL参数中文乱码问题 来自:http://www.javaeye.com/topic/483158 应用一:解决tomcat下中文乱码问题(先来个简单的) 在tomcat下, ...
- Servlet相关的几种中文乱码问题
Servlet相关的几种中文乱码问题浏览器调用jsp,html等页面中文显示乱码使得文件本身以utf-8字符集编辑保存 让浏览器浏览器以utf-8字符集解析 在浏览器中右键选择编码格式为utf-8: ...
随机推荐
- springMVC-10-文件上传
导入依赖(注意会和servlet-api依赖冲突) <!--文件上传jar包, 前面已导过servlet-api需排除--> <dependency> <groupId& ...
- Go LRU Cache 抛砖引玉
目录 1. LRU Cache 2. container/list.go 2.1 list 数据结构 2.2 list 使用例子 3. transport.go connLRU 4. 结尾 正文 1. ...
- DNS的原理和解析过程
DNS的解析原理和过程: 在Internet上域名和IP是对应的,DNS解析有两种:一种是正向解析,另外一种是反向解析. 正向解析:正向解析就是将域名转换成对应的 IP地址的过程,它应用于在浏览器地址 ...
- xmind8-update9 安装破解激活教程
xmind8是一款原型图设计流行的软件,相比于xmind2020功能更为丰富,比如画甘特图等.本教程来教大家如何对xmind8 update9进行安装激活,使用全部功能,无限期使用! 只看本文一篇即可 ...
- 版本号是通过import合并而来的,不是继承来的
- mysql安装简书
mysql下载地址:https://dev.mysql.com/downloads/mysql/ mysql可视化工具下载地址:https://dev.mysql.com/downloads/work ...
- 利用LRU策略实现Axios请求缓存
业务场景 前一段时间刚做完一个项目,先说一下业务场景,有别于其他的前端项目,这次的项目是直接调用第三方服务的接口,而我们的服务端只做鉴权和透传,第三方为了灵活,把接口拆的很零散,所以这个项目就像扔给你 ...
- SAS 常用字符串函数
原文链接:https://www.cnblogs.com/snoopy1866/p/15085466.html CAT(item-1 <, -, item-n>) : 在保留首尾空格的情况 ...
- .NET Conf 2020大会将于2020年11月10日--- 11月12日举行 (UTC)时区
.NET Conf 2020大会将于2020年11月10日--- 11月12日举行 (UTC)时区 开始时间 2020年11月10日 08:00 (PT) | 16:00 (UTC)| 24:00(北 ...
- noip模拟测试31
终于有时间写博客了,前面一直咕咕咕都快变成一只公鸡了......这次考试,真的很意外,我在考场上觉得自己打出了T1的正解,样例一拍就过,还跑得嘎嘎快,然后T2,T3码了两个暴力,觉得自己应该能100p ...