response代表响应
响应首行 协议/版本号 状态码 状态码描述
void setStatus(int sc) 只设置状态码
void setStatus(int sc, String sm) 设置状态码和描述
void sendError(int sc) 只设置状态码,错误的
void sendError(int sc, String msg) 设置状态码和描述
响应头 key:value
添加响应头:
void setHeader(String name,String value)设置响应头,如果key一样会覆盖
setIntHeader(String name,int value)
setDateHeader(String name,long date)
void addHeader(String name,String value) 设置响应头,无论如何都新增
void addIntHeader(String name, int value)
void addDateHeader(String name, long date)
响应空行
响应正文
发送字节流
getOutputStream
发送字符流
getWriter
实现重定向:response.setRedirect("http://www.baidu.com");
通过访问Servlet向浏览器传递一个图片
// 获取图片输入流
InputStream is = getServletContext().getResourceAsStream("/WEB-INF/mm.jpg");
// 获取浏览器的输出流
byte[] buffer = new byte[1024];
// 将图片篇输入流写出到浏览器中
int len = -1;
while((len = is.readBuffer(buffer)) != -1){
os.write(buffer, 0, len);
os.flush();
}
request 封装了浏览器发送来的请求信息
请求首行 请求方式 请求路径 协议/版本号
request.getMethod(): GET
request.getRequestURI(): /request/AServlet
request.getServletPath(): /AServlet
request.getContextPath(): /request
request.getScheme(): http
请求头
请求空行
请求正文 : 键值对
获取表单提交的参数
1.GET
乱码问题:确保编码和解码一致
浏览器负责编码
服务器负责解码,默认使用ISO-8859-1,可以设置server.xml
添加属性URIEncoding="UTF-8",会影响整个服务器
2.POST
解码:request.setCharacterEncoding("UTF-8");
获得表单参数的方法:String getParameter 根据键获得值
request的请求转发和包含功能
转发和重定向对比:
1.转发不会改变地址栏,重定向会
2.转发是请求一次,重定向请求两次
3.转发过程中只有一个request对象产生,重定向两个
4.转发不能转发到站外,重定向可以发送到站外
5.重定向的第二个请求方式是get;转发中第二个取决于第一个
request域的应用
原理:在request中有一个map
操作:
1.setAttribute 存入一个键值对
2.getAttribute 通过键取出值
3.getAttributeNames 获得域中所有键
4.removeAttribute 跟据键移除一个键值对
范围:一个request对象对应一个request域