解决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: ...
随机推荐
- shell脚本(5)-shell变量
一.变量介绍 将一些数据需要临时存放在内存中,以待后续使用时快速读出. 二.变量分类 1.本地变量: 用户私有变量,只有本用户可以使用,保存在家目录下的.bash_profile..bashrc文件中 ...
- 记一次 .NET 某云采购平台API 挂死分析
一:背景 1. 讲故事 大概有两个月没写博客了,关注我的朋友应该知道我最近都把精力花在了星球,这两个月时间也陆陆续续的有朋友求助如何分析dump,有些朋友太客气了,给了大大的红包,哈哈,手里面也攒了1 ...
- chcod炸弹
[题目描述] 话说Cpp国和Pas国发生了战争, Pas国派出了强大的飞机战队, Cpp国于是使出了炸弹CHCOD 来反击Pas国的飞机舰队.然而CHCOD的发射器,只能逐渐往上打.所以Cpp国现在只 ...
- C语言学习之基本数据类型【一】
近期学习鸿蒙硬件物联网开发,用到的开发语言是C: 一.基础语法:第一个案例: 命令 gcc hello.c #include <stdio.h> //stdio.h 是一个头文件 , #i ...
- [SqlServer] 理解数据库中的数据页结构
这边文章,我将会带你深入分析数据库中 数据页 的结构.通过这篇文章的学习,你将掌握如下知识点: 1. 查看一个 表/索引 占用了多少了页. 2. 查看某一页中存储了什么的数据. 3. 验证在数据库中用 ...
- (python函数02)列表生成式
(python函数02)列表生成式 示例代码 num = [i for i in range(1, 10)] print(num) num = [i for i in range(1, 10) ...
- nginx 的安装、优化、服务器集群
一.安装 下载地址:http://nginx.org 找到 stable 稳定版 安装准备:nginx 依赖于pcre(正则)库,如果没有安装pcre先安装 yum install pcre pcr ...
- 大数据学习(16)—— HBase环境搭建和基本操作
部署规划 HBase全称叫Hadoop Database,它的数据存储在HDFS上.我们的实验环境依然基于上个主题Hive的配置,参考大数据学习(11)-- Hive元数据服务模式搭建. 在此基础上, ...
- 直接使用!安装WordPress一键部署轻松建站教程
关于 WordPress WordPress (opens new window)简称WP,最初是一款博客系统,后逐步演化成一款功能强大的企业级 CMS(内容管理/建站系统),目前是公认的全球最佳建站 ...
- SpringBoot | 3.2 整合MyBatis
目录 前言 1. 导入MyBatis场景 1.1 初始化导向 1.2 手动导入 2. *MyBatis自动配置原理 3. 全局配置文件 @Mapper @MapperScan 3.1 配置模式 3.2 ...