web请求与响应
-
Servlet的最主要作用就是出路客户端请求,并做出响应,web服务器在调用service方法时,会分别创建HttpServletRequest对象以及HttpServletResponse对象
-
HttpServletResponse对象
-
Http响应包括状态行,响应消息头,还有消息体
-
HttpServletResponse 定义了对这3个方面的发送操作的方法
-
发送状态码相关方法
-
setStatus(int status) 设置状态码200
-
sendError(int sc) 设置错误码400
-
sendError(int sc,String message) 除了设置错误码,还可以设置信息
-
发送响应消息体相关方法
设置各种头字段
-
addHeader()
-
setHeader()
-
addIntHeader()
-
setIntHeader()
设置字符集
-
setContentType()
-
setLocale()
-
setCharacterEncoding()
-
发送响应消息体相关方法
-
getOutputStream() 字节数组,二进制流
-
getWrite() 字符
-
-
HttpServletResponse解决中文乱码
//方法一 //设置HttpServletResponse使用utf-8 response.setCharacterEncoding("Utf-8"); //通知浏览器使用utf-8编码 response.setHeader("Content-Type" , "text/html,; charset=utf-8);
//方法二 //包含第一种方式的两种功能 response.setContenType("text/html;charaset=utf-8");
-
使用 Refresh 实现定时刷新页面
//实现2秒后跳转到百度 response.setHader("Refresh","2;URL=www.badu.com") //每隔3秒刷新当前页面 response.setHeader("Refresh","3");
-
实现请求重定向
//请求重定向 response.sendRedirect("/1.html")
-
-
HttpServletRequest对象
- 使用Refer防止盗链
//获取请求头 String referer=request.getHeader("referer"); //获取请求的路径 String sitePart="http://"+request.getServerName(); //如果发出请求的路径是本机服务器的路径,则通过并下载 if(referer!=null && referer.startsWith(sitePart)){ out.println("正在处理您的下载请求"); } //如果发出的请求是其他人的,则跳转到本机的下载页面 else{ request.getRequestDispatcher("下载页面").forward(request, response); }
-
HttpServletRequest解决中文乱码的问题
//这种解码方式只适用于post方式,对get无效 //设置request对象的解码方式 request.setCharacterEncoding("Utf-8");
//设置request对象的解码方式 request.setCharacterEncoding("Utf-8"); //对想获取的对象进行指定格式转换 name = new String(name.getBytes("iso8859-1","utf-8"));
-
通过request对象传递数据
setAttribute()
getAttribute()
removeAttribute()
getAttributeNames()
-
RequestDispatcher接口
- 请求转发forword
RequestDispatcher dispatcher = requeat.getRequestDistpatcher("/RequestServlet") dispatcher.forword(request,response);
- 请求包含
RequestDispatcher dispatcher = requeat.getRequestDistpatcher("/RequestServlet") dispatcher.include(request,response);