Oracle培训(四十三)——Servlet第三章知识点总结——处理响应
1.HTTP响应信息
2.设置请求重定向(客户端跳转浏览器完成的)
3.设置自动刷新和等待
4.其他
网络中数据以包的形式存在(不同协议下的数据包不一样),其中从客户端发送给服务器端的数据包的格式
消息体:普通文本、二进制流(比如图片、二维码(服务器端动态生成的图片))
设置状态码(HttpServletResponse接口定义)
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
处理请求和响应
i. 设置响应状态行
1. 状态行分为HTTP协议、状态码和状态描述三个部分
2. 状态描述与状态码直接相关
a) HTTP状态码(熟悉常用状态码):
b) 100-199:表示信息性代码,标示客户端应该采取的其他动作,请求正在进行。
c) 200-299:表示客户请求成功。
d) 300-399:表示用于已经移走的资源文件,指示新的地址。
e) 400-499:表示由客户端引发的错误。
f) 500-599:表示由服务器端引发的错误。
3. HTTP协议由服务器确定
ii. 设置状态码
1. 使用HttpServletResponse的setStatus(HttpServletResponse.SC_NOT_FOUND)方法
2. 使用HttpServletResponse的sendError(HttpServletResponse.SC_NOT_FOUND,”找不到资源”);
3. Ex /web_0301_response_status/src/com/test/servlet/SendErrorServlet.java
iii. 在使用PrintWriter向客户端输出信息之前,设置状态码
1. resp.sendError(HttpServletResponse.SC_NOT_FOUND,”找不到资源”);
2. PrintWriter out = resp.getWriter();
iv. 设置响应头(setHeader)
1. HttpServletResponse对象用于操纵响应的HTTP头
2. 目的用于告诉客户端
a) 发送回来的内容的类型
b) 有多少内容被正被发送
c) 发送内容的服务器的类型
3. 常用的方法(查询对应的api手册,了解相关用法)
a) setHeader()
b) setContentType()
c) addCookie()
v. 设置响应消息体
1. HttpServletResponse对象负责将信息返回给客户端
2. HttpServletResponse对象只产生一个空的HTTP响应
3. 传回自定义的内容需要使用getWriter()或者getOutputStream()方法
a) 传送普通文本
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World!</title>”);
b) 传送二进制内容
如:验证码
ex /web_0302_response_content_type/src/com/test/servlet/SetContentTypeImageServlet.java
a) 把请求重定向到一个完全不同的URL上
i. /web_0303_response_send_redirect/src/com/test/servlet/SimpleSendRedirectServlet.java
b) 请求重定向原理
i. 客户端发送请求到服务器端http://localhost:8080/web/SimpleSendRedirectServlet.do
ii. 服务器端发送一个响应体(其中包含了状态码302,和一个loaction:http://localhost:8080/web/SendErrorServlet.do)
iii. 最终将用户请求的资源重新定向到后者
iv. 特点
1. 客户端发送两次请求
2. 地址栏里显示的是Location URL(第二次请求的地址)
a) 在指定时间内自动刷新当前页或到一个新的页面
i. /web_0304_response_header_refresh/src/com/test/servlet/AutoRefreshServlet.java
MIME:多功能
注册表里注册后缀名
H:\Program files\Tomcat 6.0\conf\web.xml
<mime-mapping>
连接跟踪
查询字符串
get和post区别:get在浏览器地址栏显示参数,post不显示
二进制流:必须post提交(数据的安全性)
request.getParameter(“”);