javaEE之Response和Request

【response】
javaEE之Response和Request_第1张图片
我们在创建servlet时会覆盖service()方法,doGet()或doPost(),方法中有两个参数,一个代表请求的request和代表响应的response。
service方法中response的类型是ServletResponse,而doGet()或doPost()response的类型是HttpServletResponse,它是ServletResponse的子接口,功能和方法强大。

  1. 通过response设置响应行的状态码 setStatus(int sc)

  2. 通过response设置响应头, 其中,add表示添加,而set表示设置

    setHeader(String name,String value)
    setDateHeader(String name,long date)
    setIntHeader(String name,int value)
    addHeader(String name,String value)
    addDateHeader(String name,long date)
    addIntHeader(String name,int value)
    3.通过response设置响应体
    1)响应体设置文本,编码问题
    response.setCharacterEnconding(“UTF-8”);
    response.setHeader(“Content-Type”,“text/html;charset=UTF-8”);
    简写一行:response.setContentType(“text/html;charset=UTF-8”);
    2 ) 设置响应体字节 ServletOutputStream getOutputStream()
    【request】
    javaEE之Response和Request_第2张图片
    1.通过request 获得请求行
    获得请求方式:String getMethod()
    获得请求资源:
    String getRequestURI()
    StringBuffer getRequestURL()
    String getContextPath()—web应用名称
    String getQueryString()–get方式提交url地址后的参数
    request.getRemoveAdrr()–获得访问的客户端ip地址

2.通过request获得请求头
String request.getHeader(“name”)
Enumeration s = request.getHeaderNames();
while(s.hasMoreElements()){
String nextElement = headerNames.nextElement();
System.out.println(nextElement+":"+request.getHeader(nextElement));
}
*referer头作用:执行访问的来源,可以防盗链,规定的网址可以跳转页面。

3.通过request获得请求体
请求体中的内容是post提交的请求参数:
String request.getParameter(String name)
Enumeration getParameterNames()
Map getParameterMap()
*决解post提交方式乱码的方式:request.setCharacterEncoding(“UTF-8”)
parameter=request.getParameter(“name”);
*决解get提交方式乱码方式:new String(parameter.getByte(“ISO-8859-1”),“UTF-8”)

4.其它功能
1 )request对象也是一个储存数据的域对象
setAttribute((String name,Object o),getAttribute(String name), removeAttribute(String name)
2 )request完成请求转发
获得请求转发器 path是转发地址
RequestDispatcher r= getRequestDispatcher(String psth);
r.forward(ServletRequest request,ServletReponse response);


*注意request生命周期:访问时创建,响应结束销毁,域的作用范围是一次请求中,要与ServletContext区别。
转发与重定向区别:
1)重定向的地址栏会发生改变,转发的地址栏不会
2)重定向可以访问外部网站,转发只能是内部资源
3)重定向是发生2次请求,转发是发生一次请求
4)转发的性能优于重定向
比如访问的一个页面是有权限的,也是不希望轻易泄露,用转发较好
另外刷新页面不会变,用重定向好。

你可能感兴趣的:(javaEE之Response和Request)