黑马程序员技术交流社区

标题: 【上海校区】关于response与requset对象 [打印本页]

作者: 梦缠绕的时候    时间: 2018-7-24 09:36
标题: 【上海校区】关于response与requset对象

当客户端发送http请求,服务器会对每一次请求,创建request对象和response对象。
request对象代表请求,response对象代表响应。我们即获取客户机提交过来的数据,只需要找request对象就可以,要向客户机输出数据,只需要找response对象即可。

request和response是什么?
request是请求,在浏览器输入地址,回车,就是一个请求
response是响应,服务器根据请求,返回数据到浏览器显示,就是一个响应

第一,response
1 HttpServletResponse是一个子接口,ServletResponse是父接口,是服务器响应对象
2 http分为三个部分
1.响应行
设置状态码 setStatus(int sc)
response.setStatus(302);

2.响应头
是key-value结构,一个key对应一个value,可以一个key对应多个value
(常用)设置响应头setHeader(String name , String value);一个key对应一个value
响应名称 响应参数
setHeader(“aa”,”11”);
setHeader(“aa”,”22”);
结果是 aa : 22
setIntHeader(String name ,int value)
setDateHeader(String name ,long date)毫秒值

3.响应体
向页面显示内容
getWriter() 字符流输出
getOutputStream() 字节流输出

第二,重定向
使用重定向实现登录操作
1.需求
在登入页面中,输入用户名和密码,判断输入的用户和密码是否正确
如果用户名和密码都正确,登录成功,向页面输出内容
如果用户名或者密码有一个是错误的,重定向(2次请求,2次响应)到登录页面

2.步骤
第一步:创建登录页面,写表单,在表单里面写两个输入项,一个输入用户名,一个输入密码,
提交到一个servlet里面

第二步:创建servlet,在这个servlet里面首先获取到输入的用户名和密码,
根据用户名和密码进行判断(用户名如果是admin,密码如果是123456表示正确的)

如果用户名和密码都正确,登录成功,向页面输出内容;
response.getWriter().write(“login success”);

重定向的代码简写的方式
response.sendRedirect(“要重定向到的页面的路径”);

String login = request.getParameter(“login”);
String password = request.getParameter(“password”)

if (“admin”.equals(login) && “123456”.equals(password)) {
response.getWriter().write(“login success”);
} else {//重定向
/*response.setStatus(302);
response.setHeader(“Location”, “http://localhost:8080/day08_my/html/demo02_other.html“);
*/
response.sendRedirect(“http://localhost:8080/day08_my/html/demo02_other.html“);
}

第三,定时跳转
当注册一个网站,注册完成之后,5秒之后跳转到登录页面

3.2 实现方式
(1)使用头信息Refresh实现
(2)写法: response.setHeader(“Refresh”,”在几秒值后跳转;url=要跳转到页面的路径”);
3.3 创建servlet,在servlet实现,在五秒之后跳转到一个页面
response.setHeader(“Refresh”, “3;url=http://localhost:8080/day08_my/html/demo02.html“);

第四,设置响应体
1 使用字节流向页面输出
* 1、设置浏览器的编码
* 2、设置字节数组的编码
* 让浏览器的编码和字节数组的编码一致

//
response.setHeader(“content-type”, “text/html; charset=UTF-8”);
response.getOutputStream().write(“4.1 使用字节流向页面输出内容”.getBytes(“UTF-8”));

2 使用字符流向页面输出







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2