request(请求)
请求的方式
1. 地址栏输入
2. 超链接
3. Form 表单
4. ajax
5. 请求转发
通过服务器内部将请求进行一次转发,可以请求到其他资源
6. 重定向
HttpServletRequest 对象
介绍
作用:用来接收客户端发过来的请求
是ServletRequst子接口
常用形式
常用方法
getRequestURL()
请求端完整UIL(从HTTP开始到问好结束)
getRequestURI()
从站点开始到问好结束
getQueryString()
获取请求字符串
getMethod
获取请求方式类型
getProtocol()
获取HTTP版本
getContexPath()
获取站点名字
获取请求头
getHeader(String)
获取单个请求头内容
Enumeration<String>getHeaderNames()
获取所有请求头名称集合
获取客户端参数
getParameter(name)
获取指定名称的参数
getParameterValues(String name)
获取所有指定名称参数值
getParameterNames()
获取一个包含请求消息中的参数名的Enumeration对象
getParameterMap()
返回一个保存了请求消息中的所有参数名称和值得Map对象
请求乱码解决
Post
req.setCharacterEncoding("UTF-8")
new String(req.getParameter(name).getBytes("ISO-8859-1"))
Get
8.0以上不需要处理
7.0及以下
req.setCharacterEncoding("UTF-8")
请求转发
request.getRequestDispatcher("站点名")forward(request,response)
地址栏不改变
服务端跳转
一次请求
不能跨域
request作用域
request.setAttribute()
设置作用域
request.getAttrbute(String name)
获取作用域
request.removeAttrbute(String name)
删除作用域
response(响应)
response.addHeader
设置响应头
response.sendError()
设置页面报错
response.setHeader("refresh","3")
自动刷新
response.setHeader("refresh","3;http://www.xxx.com")
response.setContentType(String s)
设置响应类型
数据响应
字符流
response.ContentType("text/html")
设置响应类型
PrintWriter writer=response.getWriter()
获取字符流
writer.write()
向浏览器书写内容
writer.close()
字节流
response.ContentType()
设置响应类型
SercletOutputStream out=response.OutputStream()
out.write()
out.close()
解决乱码
字符流
1.设置服务端编码
response.setCharacterEncoding("UTF-8")
2.设置客户端编码
request.setHeader("content-type","text/html;charset=UTF=8")
字节
1.设置服务端编码
reponse.setCharacterEncoding("UTF-8")
2.设置客户端编码
response.setHeader("content-type","text/html;charset=UTF-8")
或者两个都可以写成
response.setContenType("text/html;charset=UTF-8")
响应图片
1.得到项目在服务器中的真实路径
String realPath=request.getServletContext().getRealPath("/")
2.得到图片存放路径
String filePath=realPath+"WEB-INF/images/jay.jpg"
3.通过路径得到File对象
File file=new File(filePath)
4.判读文件是否存在且是标准文件
if(file.exists()&&file.isFile()){
response.setContenType(“image/jpeg”);
InputStream in=new InputStream();
ServletOutputStream out=response.getOutputStream();
byte[] bytes=new byte[1024];
int len=0;
while(len=in.read(bytes)!=-1){
out.write(bytes,0,len);
}
}else{
response.setContenType(“text/html”,“charsetUTF-8”);
response.getWriter.write(“文件找不到”);
response.getWriter.close();
}
重定向
response.sendRedirect(“url”)
地址栏发生改变
客户端跳转
两次请求
能够跨域