Javaweb Request和Response

本文详细介绍了GET和POST请求的区别,包括参数安全性和长度限制,以及如何在HttpServletRequest中操作请求头和参数。还探讨了如何处理请求的中文乱码问题和使用Response进行响应设置,包括字符编码、状态码、重定向与转发的区别。
摘要由CSDN通过智能技术生成

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乱码问题icon-default.png?t=N7T8http://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.设置重定向

请求转发和重定向的详细介绍和区别icon-default.png?t=N7T8http://t.csdnimg.cn/fsIai

 response.sendRedirect("http://www.baidu.com");

此方法会设置响应头为302,以设置Location响应头。如果要重定向的URL是在同一个服务器内,那么可以使用相对路径,需要指明项目路径.

注意:

•重定向是两次请求。
•重定向的URL可以是其他服务器的应用,不局限于当前服务器。
•重定向的响应头为302,并且必须要有Location响应头。
•重定向就不要再使用response.getWriter()或response.getOutputStream()输出数据,不然可能会出现异常。

            

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值