|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
服务器处理请求流程:
服务器每次收到请求时,都会为这个请求开辟一个新的线程
服务器会把客户端的请求数据封装到request对象中,request就是请求数据的载体
服务器还会创建response对象,这个对象与客户端连接在一起,他可以用来向客户端发送响应
接口 HttpServletResponse
Response
其类型为HttpServletResponse
区别:
ServletResponse---与协议无关的类型
HttpServletResponse----与http协议相关的类型
Http协议:
200 ok
Content-type:text/html;charset=utf-8
…
<html>
Fafas
Fasfas
Assfa
af
</html>
200表示成功 302表示重定向 404客户端错误,访问资源不存在 500服务器端错误
成员方法:
状态码:
sendError(int sc)----发送错误状态代码,例如404 500
sendError(int sc,String msg)----发送错误状态码,还可以带一个错误信息
setStatus(int sc)---- 发送成功的状态码,也可以发送302
可以用doget()中参数HttpServletResponse直接调用
响应头:Context-type、 Refresh、 Location等等
头就是一个键值对,存在一个头多个值
setHeader(String name,String value) :适用于单值的响应头
addHeader(String name,String value):适用于多值的响应头
getHeader(String name): 获取具有给定名称的响应头的值
setIntHeader(String name,int value): 适用于单值的Int类型的响应头
addIntHeader(String name,int value):适用于多值的int类型的响应头
setDateHeader(String name,long value):适用于单值的毫秒类型的响应头
addDateHeader(String name,long value):适用于多值的毫秒类型的响应头
重定向:302
发送302,且必须设置Location(重定向地址)
response.setHeader("Location", "/day10/CServlet");
response.setStatus(302);
定时刷新:
URL=day10/Eservlet
day10是项目名 Eservlet是类路径 加在一起为URI
/*
* 下面是用来发送响应体
*/
PrintWriter writer=response.getWriter();
writer.print("欢迎XXX登陆~5秒后开始跳转~");
/*
* 设置名为Refresh响应头
*/
response.setHeader("Refresh", "5;URL=/day10/EServlet");
禁用浏览器缓存:
Cache-Control pragma expires这三个头适用于所有HTTP协议版本
response.setHeader("Cache-Control", "no-cache"); 缓存控制,不缓存
response.setHeader("pragma", "no-cache");
response.setDateHeader("expires", -1);缓存失效日期
response.getWriter().print("Hello world");
<meta>标签可以代替响应头<meta http-equiv="content-type" content="text/html;charset=utf-8">
响应体:
通常是html,也可以是图片,显示一些文字
Response的两个流:
ServletOutputStream类中getOutputStream() 用来向客户端发送字节数据
PrintWriter类中的getWriter() 用来向客户端发送字符数据 需要设置编码
两个流不能同时使用 如果同时使用两个流,必然出现错误
字节流是万能的,可以把字符流转成字节流
String s="HEllo outputStream";
byte[] bytes=s.getBytes();
response.getOutputStream().write(bytes);
使用IO流发图片 导入第三方类库 commons-io-14
String path="D:/111/1.jpg";
FileInputStream in=new FileInputStream(path);
byte[] bytess=IOUtils.toByteArray(in);//读取输入流的字节到字节数组中
response.getOutputStream().write(bytess);
快捷重定向方法
response.sendRedirect("http://www.baidu.com");
|
评分
-
查看全部评分
|