java程序员第十课 javaweb之request&response

原创 2015年11月17日 16:57:31

1、昨天内容回顾

2、servlet里面两个对象

客户端每次发送http请求时候,服务器会为每次的请求创建一个对象request,同时也会创建一个resposne对象作为响应

3、response对象的介绍
* 名称:HttpServletResponse:作为客户端响应
* HttpServletResponse是一个接口,父接口是 ServletResponse

* 常用的方法
    在http协议里面,分为三部分
    1、响应行
        ** 设置状态码 setStatus(int sc) 

    2、响应头
        可以是一个key对应一个value,一个key对应多个value

        ** 设置头:setHeader(java.lang.String name, java.lang.String value)
            - 一个key对应一个value
            - 比如:
                setHeader("aa","100");
                setHeader("aa","101");
                结果:101
            ** 针对不同的类型提供了方法
            - setIntHeader(java.lang.String name, int value) 
            - setDateHeader(java.lang.String name, long date) :值是一个毫秒数


        ** 设置头:addHeader(java.lang.String name, java.lang.String value)
            - 一个key对应多个value
            - 比如:
                addHeader("bb","200");
                addHeader("bb","201");
                结果:bb:200,201
            ** 针对不同的类型提供了方法
            - addIntHeader(java.lang.String name, int value) 
            - addDateHeader(java.lang.String name, long date) :值是一个毫秒数

    3、响应体
        ** 在页面显示的内容
        getWriter(): 使用字符流
        getOutputStream():使用字节流

***案例
   ** 从服务器上拿到的数据显示在页面上,这些操作都可以使用response实现

4、案例一:使用response实现登录的重定向
* 有一个登录页面
** 有表单,有输入项(用户名和密码)
** 提交按钮
* 有一个servlet来处理登录操作
** 输入正确的用户名和密码,直接在页面输出一个 登录成功
** 用户名或者密码错误,重定向到登录页面

    1、接受到传递过来的用户名和密码
        ** request.getParameter();

    2、判断用户名和密码是否正确(admin  123456)
    3、如果正确,直接在页面输出 登录成功
    4、如果错误,重定向到登录页面

* //设置状态码 302
response.setStatus(302);
//重定向到登录页面  使用头  Location
response.setHeader("Location", "/day10/response/login.html");

5、案例二:使用response实现页面的定时跳转(控制秒数)
* 使用头 Refresh
* servlet写法:response.setHeader(“Refresh”, “5;url=/day10/response/login.html”);
* 在页面中写法:在头标签head标签里面,
* 想要实现控制秒数,使用js操作
- var m = 5;
function change1() {
//alert(‘1’);
//获取到span
var span1 = document.getElementById(“spanid”);
//使用innerHTML写入到span里面
span1.innerHTML = m;
m–;
}
//实现定时实现
setInterval(“change1();”,1000);

6、案例三:使用response实现禁用浏览器缓存
** 禁用浏览器缓存可以保证每次数据都是最新的(数据是不断变化)
- 比如 网银
** 使用三个头信息
Cache-Control : no-cache
Pragma : no-cache
Expires: -1
** 获取当前时间:
- Date date = new Date();
date.toLocaleString();
** 如果在一些版本(ie6)的浏览器中出现了数据不能变化,这个时候出现了缓存,可以禁用浏览器缓存
- //禁用浏览器缓存
//Cache-Control : no-cache
response.setHeader(“Cache-Control”, “no-cache”);
//Pragma : no-cache
response.setHeader(“Pragma”, “no-cache”);
//Expires: -1:固定写法
** Expires头时候,值是一个毫秒数,固定写法 -1
response.setDateHeader(“Expires”, -1);

7、response向页面输出中文的乱码问题

* getOutputStream():使用字节流:处理中文乱码的方式
    * 使用这种方式输出中文,不一定会有问题
    * 设置浏览器的编码和字节数组的编码一致

    * 设置浏览器的编码:response.setHeader("Content-Type", "text/html;charset=utf-8");
    * 设置字节数组的编码:response.getOutputStream().write("字节流中文测试".getBytes("utf-8"));

* getWriter(): 使用字符流:处理中文乱码的问题
    * 使用这种方式,输出中文一定会有问题
        ** 数据是放在response缓冲区里面,默认编码 iso8859-1,这种编码是不支持中文

    * 如何解决:
    1、设置response缓冲区编码
    response.setCharacterEncoding("utf-8");
    2、设置浏览器的编码
    response.setHeader("Content-Type", "text/html;charset=utf-8");

8、开发中一些细节问题(注意的问题)
* 重定向操作(有两种写法)
** //设置状态码 302
response.setStatus(302);
//重定向到登录页面 使用头 Location
response.setHeader(“Location”, “/day10/response/login.html”);

    ** //简写方式
       response.sendRedirect("/day10/response/login.html");

* 字符流解决中文问题(两种写法)
    ** 
    1、设置response缓冲区编码
    response.setCharacterEncoding("utf-8");
    2、设置浏览器的编码
    response.setHeader("Content-Type", "text/html;charset=utf-8");

    ** //简写方式
    response.setContentType("text/html;charset=utf-8");

* text/html;charset=utf-8:中间必须使用分号;隔开

* 使用字符流方式,不能直接向页面输出数字
    — 会去码表中取找数字对应的字符,把字符输出
    - 想要输出一个数字,使用字符串形式;response.getWriter().write("111");

* 字节流和字符流是互斥的(不能同时一起使用)
    * 或者使用字节流,或者使用字符流,而不能一起使用

9、使用response实现文件的下载
*文件下载有两种方式:
第一种方式,直接使用超链接来实现

版权声明:

java程序员第十一课 javaweb之request&response

java程序员第十一课 javaweb之request&response1、上节内容回顾 1、Response的简介 http响应里面 ** 响应行 ...
  • u011761678
  • u011761678
  • 2015年11月17日 17:04
  • 210

Java Web 程序员的职业进阶之路

希望可以给大家的职业规划一些提示,尤其是写了几年程序,却越来越迷茫的同学。...
  • defonds
  • defonds
  • 2014年05月20日 09:11
  • 13550

JavaWeb入门实战—Request&Response

Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。 request和response对象分别代表请求和响应,...
  • FX_SKY
  • FX_SKY
  • 2014年04月07日 18:04
  • 1136

100offer 一个程序员拍卖网站

100offer : http://www.100offer.com/i/gywhvsxl
  • caiwenfeng_for_23
  • caiwenfeng_for_23
  • 2015年03月09日 09:13
  • 1288

java程序标准增删改查示例

package table;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.PreparedS...
  • mxz391
  • mxz391
  • 2007年06月29日 16:40
  • 4141

深入分析java web 技术内幕_笔记_四

javac编译原理 1.javac是什么? (1)javac是一种编译器,能够将一种语言规范转换成另一种用语言规范,通常编译器是将便于人们理解的语言规范成机器容易理解的语言规范。 (2)javac的任...
  • dac55300424
  • dac55300424
  • 2014年01月22日 17:35
  • 901

写在过年前--- 一个Java程序员三年的工作总结

2012过去了,又到了该总结的时候。这一年可以说是很重要一年,很多事情,都阶段性的开花结果。      先是2月份,去了海辉,实在说,没有进去这前想的那么好,主要还是我个人原因吧,海辉太安逸,事情也...
  • zl3450341
  • zl3450341
  • 2013年02月01日 11:04
  • 12143

Java Web 程序员如何转型大数据

文章转载于http://blog.csdn.net/u012562943/article/details/545803281、技术日渐成熟,应用空间得以拓展大数据技术,最早于1980年被首次提及,却在...
  • qq_35792598
  • qq_35792598
  • 2017年10月20日 16:06
  • 478

java 之 request&response

简介Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。 request和response对象即然代表请求和响应,那...
  • LiuMiao1128
  • LiuMiao1128
  • 2016年11月19日 16:13
  • 349

java web 设计原则之开闭原则

java web中开闭原则(OCP)是指软件实体
  • u010512642
  • u010512642
  • 2014年10月26日 11:15
  • 260
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java程序员第十课 javaweb之request&response
举报原因:
原因补充:

(最多只允许输入30个字)