请求方式
1、地址栏输入 http//ip:port/path
2、超链接 尚学堂
3.form表单
4、ajax ajax(),get(),post().getJSON() 异步无刷新当前页面
5、请求转发 通过服务器内部将请求进行一次转发,可以请求到其他资源(后面讲)
6、重定向 服务器通过给定一个新资源的地址,响应会客户端后,客户端自动再次发送一个请求到新资源的地址处。(后面讲)
HttpServletRequest 对象
主要作用:接收客户端发过来的请求信息,
是ServletRequest的唯一子接口,唯一个子接口不将两个合并是因为现在主协议是HTTP但以后可能出现更多的协议
常用形式
常用方法
getRequestURL() 获取HTTP开始到?之间的完整URL
getRequestURI() 获取项目名到?之间的部分
getQueryString( ) 获取?到结尾的参数部分
getMethod() 获取客户端请求方式
getProtocol() 获取HTTP版本号
getContextPath() 获取站点名
获取请求头
getHeader(String) 获取单个请求头
EnumerationgetHeaderNames() 获取所有请求头的集合 枚举 集合
获取客户端请求参数
getParameter(name) 获取指定名称的参数
getParameterVaues(String name) 获取指定名称参数的所有值(多选项)
getParameterNames() 获取一个包含请求消息中所有参数名的Enumeration对象 (枚举)
getParameterMap() 返回一个保存了请求消息中的所有参数名称和值的Map对象
请求解决乱码
rep.setCharacterEncoding(“UTF-8”); 只针对post请求有效,必须在接受所有的数据之前设定
new String(rep.getParameter(name).getBytes(“ISO-8859-1”)); 通用,但只能一个一个转 Tomcat 8之后get不能用
Tomcat 7和7之前get和post都乱码 8和8之后get不再乱码
请求转发
是服务器的行为
从始至终只有一个请求发出
URL地址不会改变
request.getRequestDispatcher().forward()
request作为域对象
只在一次请求中有效
request.setAttribute():设置域对象内容
request.getAttribute(String name):获取域对象内容
resquest.removeAttribute(String name):删除域对象内容
HttpServletResponse 对象
Web服务器收到的客户端HTTP请求,每次请求会分别创建一个resquest对象一个response对象
HttpServletResponse主要功能用于服务器对客服端的请求进行响应将Web服务器处理后的结果返回给客户端
service()方法中形参接受的是HttpServletResponse接口 的实例化对象,对象中封装了向客户端发送数据、发送响应头。发送响应状态码的方法
常用方法
addHeader(String name,String value) 添加指定的键值到响应头信息中
containsHeader(String name) 判断响应的头部是否被设置
encodeURL(String URL) 编码指定的URL
sendError(int sc) 使用指定状态发送一个错误到客服端
setHeader(String name,String value) 设置指定响应头的值
setStatus(int sc) 给当前响应设置状态
setContenType(String ContentType) 设置响应的MIME状态
getWriter() 获取输出字符流
getOutputStream() 获取输出的字节流
数据响应
getWriter()字符流只响应字符流getOutputStream()获取字节流响应一切数据,响应回的数据被客户端浏览器解析。两者不能同时使用
PrintWriter out=resp.getWriter(); out.write(“
Hello World
”);ServletOutputStream out = resp.getOutputStream(); out.write(
Hello World
.getBytes());解决乱码
resp.setContentType(“text/html;charset=UTF-8”)
刷新和页面自动跳转
response.setHeader(“refresh”,“3;URL=ok.html”);
HTML中: