17.11.28,web学习第十四天,还有一年,努力吧青年HttpServletResponse
来源:互联网 发布:淘宝找人代写毕业论文 编辑:程序博客网 时间:2024/05/23 13:25
HttpServletResponse
1.案例一:完成文件下载
3.案例二:生成验证码。
4.Tomcat引擎会取response缓冲区内容和引擎自己添加的信息组成一个http响应。
设置响应行的状态码:setStatus(int ss);
通过response设置响应头:
addHeader(String name,String value);
addIntHeader(String name ,int value);
addDateHeader(String name,long date)
addHeader(String name,String value)如果重名,将直接在同名后添加值
setHeader(String name,String value)如果同名将覆盖name。
setDateHeader(String name,long value);
setIntHeader(String name,int value);
重定向:
1.response.setStatus(302);
2.response.setHeader(“Location”,”http://localhost:8080/资源”);
或response.sendRedirect(“地址”);
或设置定时刷新的头:reponse.setHeader(“refresh”,”5;url=http://localhost:8080/xxxxx”);
使用js展示5秒后跳转:
<span id=”spans”>5</span>
Window.onload=function(){
Var spans=document.getElementById(“spans”);
Var time=5;
setInterval(function(){
spans.innerHTML(time);
time--;
If(time==0){
location.href="www.baidu.com";
}
},5000);
}
5.重点:如果浏览器不设置码表的情况下:默认查找本地编码:一般为GBK(中文简体)。客户端和服务器两方编码方式一致时将不会出现乱码!例:访问html页面为什么不会出现乱码,因为<meta charset="UTF-8">。可以仿照这个写一个头告诉浏览器你使用什么码表解码我这个格式。
6.前段时间给数据库设置编码?
7.解决浏览器编码response.setContentType(“text/html;charset=UTF-8”);一步搞定
response.setCharacterEncoding(“GBK”);这是给response缓冲区设置编码为GBK(默认为iso-8859-1).
或者可以仿照html的方式,设置一个头Content-Type,告诉客户端使用什么编码:response.setHeader(“Content-Type”,”text/charset=UTF-8”);
8.使用Response的ServletOutputStream向客户端发送一张图片,该图片放于web_Content下,得到该图片的输入流需要使用ServletContent的getRealPath(a.jpg)方法(需要拿到图片的真实路径)。代码如下:
ServletOutputStream os = response.getOutputStream();
String f = getServletContext().getRealPath("a.jpg");
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(f));
int len =0;
byte [] buf=new byte[1024];
while((len=bis.read(buf))!=-1) {
os.write(buf, 0, len);
}
在html5中像<br/>建议不加/斜杠
9.文件下载的基本代码:
引子:使用<a></a>标签可以指向要下载的文件在服务器的路径,但是有些文件浏览器支持在线解压了,直接显示了内容如图片,所以无论什么资源都得代码表名下载!
调了半个小时的程序,终于理解了<a href=”jpg?name=a.jpg”></a>标签和http请求协议的关系。文件下载的基本思想是:
点击<a>跳转到servlet程序,以此进行下载操作。(如果直接指向文件的路径,将会直接显示该文件就是访问服务器的静态资源)。
//获得要下载的文件的名称
String filename = request.getParameter("name");//a.flv
//要下载的这个文件的类型-----客户端通过文件的MIME类型去区分类response.setContentType(this.getServletContext().getMimeType(filename));
//告诉客户端该文件不是直接解析 而是以附件形式打开(下载)
response.setHeader("Content-Disposition", "attachment;filename="+filename);
//获取文件的绝对路径
String path = this.getServletContext().getRealPath("dowload/a.jpg");
//获得该文件的输入流
InputStream in = new FileInputStream(path);
//获得输出流---通过response获得的输出流 用于向客户端写内容
ServletOutputStream out = response.getOutputStream();
//文件拷贝的模板代码
int len = 0;
byte[] buffer = new byte[1024];
while((len=in.read(buffer))>0){
out.write(buffer, 0, len);
}
in.close();
10.文件下载和访问服务器的静态资源不是一个类型、
11.关于文件下载文件名乱码问题解决: 美女.jpg
1)告知浏览器文件的类型:response.setContentType(文件的MIME类型);
2)告示浏览器文件的打开方式是下载:
response.setHeader("Content-Disposition","attachment;filename=文件名称");
//获得要下载的文件的名称
String filename = request.getParameter("filename");//????.jpg
//解决获得中文参数的乱码----下节课讲
filename = new String(filename.getBytes("ISO8859-1"),"UTF-8");//美女.jpg
//获得请求头中的User-Agent
String agent = request.getHeader("User-Agent");
//根据不同浏览器进行不同的编码
String filenameEncoder = "";
if (agent.contains("MSIE")) {
// IE浏览器
filenameEncoder = URLEncoder.encode(filename, "utf-8");
filenameEncoder = filenameEncoder.replace("+", " ");
} else if (agent.contains("Firefox")) {
// 火狐浏览器
BASE64Encoder base64Encoder = new BASE64Encoder();
filenameEncoder = "=?utf-8?B?"
+ base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
} else {
// 其它浏览器
filenameEncoder = URLEncoder.encode(filename, "utf-8"); }
12.response细节:response获得的流不需要手动关闭。TomCat会帮我们关闭,getOutputStream()和getWriter();不能同时调用。
ie是UTF-8编码方式,而火狐 浏览器是Base64编码方式。
13.完成随机验证图片案例:模板代码已收藏【一次性验证码】:
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
function clicks(a){
a.src="image?time="+new Date().getTime();
}
</script>
</head>
<body>
<img src="image" onclick="clicks(this)"/>
</body>
</html>
- 17.11.28,web学习第十四天,还有一年,努力吧青年HttpServletResponse
- 17.12.12,web学习第二十四天,还有一年,努力吧青年过滤器Filter
- 17.11.11,web学习第一天,还有一年,努力吧青年
- 17.11.13,web学习第三天,还有一年,努力吧青年!
- 17.11.16,web学习第五天,还有一年,努力吧青年!
- 17.11.20,web学习第七天,还有一年,努力吧青年
- 17.11.21,web学习第八天,还有一年,努力吧青年
- 17.11.22,web学习第九天,还有一年,努力吧青年
- 17.11.12,web学习第二天,还有一年,努力吧青年!
- 17.11.14,web学习第四天,还有一年,努力吧青年!
- 17.11.15,web学习第四天,还有一年,努力吧青年!
- 17.11.18,web学习第六天,还有一年,努力吧青年
- 17.11.23,web学习第十天,还有一年,努力吧青年
- 17.11.24,web学习第十一天,还有一年,努力吧青年
- 17.11.26,web学习第十二天,还有一年,努力吧青年HTTp协议和TomCat服务器
- 17.11.27,web学习第十三天,还有一年,努力吧青年Servlet
- 17.11.29,web学习第十五天,还有一年,努力吧青年Request
- 17.12.21,web学习第三十天,还有一年,努力吧青年 商城项目第三天购物车操作
- (C语言)循环与递归求斐波那契数
- 项目:停车场
- maven项目导入到Eclipse项目和IDEA项目
- vultr+ss-libev+hiwifi
- Truck History POJ
- 17.11.28,web学习第十四天,还有一年,努力吧青年HttpServletResponse
- 5.4.0 RegExp类型
- TCP与UDP的区别
- (转)Deep Learning(深度学习)学习笔记整理系列之(五)
- 哲♂学集锦
- 用宏实现两个数的大小比较
- 生成二维码的源码
- Unity3D问题之简单UI框架设计和实现
- JSTL 基础详解