1.GET和POST
•浏览器地址栏直接输入:一定是GET请求。
•超链接:一定是GET请求。
•表单:可以是GET,也可以是POST,这取决与<form>的method属性值。
GET请求和POST请求的区别:
GET请求:
请求参数会在浏览器的地址栏中显示,所以不安全。
请求参数长度限制长度在1K之内。
GET请求没有请求体,无法通过request.setCharacterEncoding()来设置参数的编码。
POST请求:
请求参数不会显示浏览器的地址栏,相对安全。
请求参数长度没有限制。
2. request请求
常用方法:HttpServletRequest:
String getMethod():获取请求方式
String getRemoteAddr():获取ip地址
String getContextPath() :在java中获取项目名称
getRequestURI():获取的是 从项目名到参数之前的内容 /day10/regist
getRequestURL():获取的带协议的完整路径 http://localhost/day10/regist
String getQueryString():get请求的所有参数 username=tom&password=123
String getProtocol():获取协议和版本
操作请求头
格式:key/value(value可以是多个值)
常用方法:
★String getHeader(String key):通过key获取指定的value (一个)
了解:
Enumeration getHeaders(String name) :通过key获取指定的value(多个)
Enumeration getHeaderNames() :获取所有的请求头的名称
操作请求参数 ★
常用方法:
String getParameter(String key):获取一个值
String[] getParameterValues(String key):通过一个key获取多个值
Map<String,String[]> getParameterMap():获取所有的参数名称和值
请求的中文乱码:
tomcat乱码问题http://t.csdnimg.cn/JGAJJ
对于get请求:参数追加到地址栏,会使用utf-8编码,服务器(tomcat7)接受到请求之后,使用iso-8859-1解码,所以会出现乱码
对于post请求,参数是放在请求体中,服务器获取请求体的时候使用iso-8859-1解码,也会出现乱码
通用的方法:
new String(参数.getBytes("iso-8859-1"),"utf-8");
针对于post请求来说:只需要将请求流的编码设置成utf-8即可
request.setCharacterEncoding("utf-8");
- 修改server.xml配置文件
- <Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
3.Response响应
response的作用:
1.往浏览器里写东西:
response.getWriter().print("Hello World");
response.getWriter().write("你好!");
2.设置响应信息
使用该方法设置的响应头最终会发送给客户端浏览器。
response.setHeader(“content-type”,“text/html;charset=utf-8”):
设置content-type响应头,该头的作用是告诉浏览器响应内容为html类型,编码为utf-8。而且同时会设置response的字符流编码为utf-8,即response.setCharaceterEncoding(“utf-8”);
response.setHeader(“Refresh”,”5;URL="http://www.baidu.com" ):5秒后自动跳转到百度主页。
3.设置状态码
response.setContentType(“text/html;charset=utf-8”)
response.setStatus(200)://设置状态码;
response.sendError(404, “您要查找的资源不存在”) //当发送错误状态码时,Tomcat会跳转到固定的错误页面去,但可以显示错误信息。
response.setContentType(“text/html;charset=utf-8”):等同与调用response.setHeader(“content-type”, “text/html;charset=utf-8”)+response.setCharacterEncoding(“utf-8”):设置字符响应流的字符编码为utf-8;
在正常情况下,响应报文的状态码都是由Tomcat为我们设置的,我们不需要显示地调用状态码方法来设置状态码。
4.设置响应正文
response是响应对象,向客户端输出响应正文(响应体),可以使用response的响应流:
PrintWriter out = response.getWriter():
获取字符流。当然,如果响应正文内容为字符,那么使用response.getWriter()
5.设置重定向
请求转发和重定向的详细介绍和区别http://t.csdnimg.cn/fsIai
response.sendRedirect("http://www.baidu.com");
此方法会设置响应头为302,以设置Location响应头。如果要重定向的URL是在同一个服务器内,那么可以使用相对路径,需要指明项目路径.
注意:
•重定向是两次请求。
•重定向的URL可以是其他服务器的应用,不局限于当前服务器。
•重定向的响应头为302,并且必须要有Location响应头。
•重定向就不要再使用response.getWriter()或response.getOutputStream()输出数据,不然可能会出现异常。