• JavaWeb基础—HttpServletRequest


    HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,

    通过这个对象提供的方法,可以获得客户端请求的所有信息。 

    一、获取常用信息:
       客户端IP(案例封IP):方法:getRemoteAddr() 得到远程地址
      请求方式:方法:getMethod()

       getRequestURL() 方法返回客户端发出请求时的完整URL,获取请求URL

      getQueryString 方法返回请求行中的参数部分
      头User-Agent,使用toLowerCase以及contains()判断浏览器版本
      使用Referer防盗链

    二、获取请求头:
       重要方法:getHeader()
      获取请求参数:(注意submit的范围)
      重要方法:getParameter()单值
      Map<String,String[]>getParameterMap()请求参数封装到map中

      

    三、获得客户机请求参数(客户端提交的数据)

      getParameter()单值
       Map<String,String[]>getParameterMap()请求参数封装到map中

      请求的乱码问题:    

      post:使用

            request.setCharacterEnconing("utf-8");

               response.setContentType("text/html;charset=utf-8");
      get:

       1.修改配置文件

        到config里找servr.xml配置端口8080后加URIEncoding="utf-8";
        之后get请求之后不用自己设置了,

        修改tomcat的配置文件server.xml:

        <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" 
                   URIEncoding="UTF-8"/>

      只需增加 URIEncoding="UTF-8"  这一句,然后重启tomcat即可。慎用!

      2.真正使用的是反编回来:

       String name = request.getParameter("name");
       name =new String(name.getBytes("ISO-8859-1"), "UTF-8");

      超链接的乱码问题与GET一样,故也是采用相似的解决办法:反编回来

    四、请求转发:

      一个Servlet完成不了,请求其它Web资源进行完成,当然,响应也是由被请求的完成

      请求转发是在同一个请求内完成的,使用的是同一个request对象!

       A请求B,A 留头不留体 B 留头又留体

      完成请求的语法格式:

    request.getRequestDispatcher("/test.jsp").forward(request, response);

      

     request对象作为一个域对象(Map容器)使用时,主要是通过以下的四个方法来操作

    • setAttribute(String name,Object o)方法,将数据作为request对象的一个属性存放到request对象中,例如:request.setAttribute("data", data);
    • getAttribute(String name)方法,获取request对象的name属性的属性值,例如:request.getAttribute("data")
    • removeAttribute(String name)方法,移除request对象的name属性,例如:request.removeAttribute("data")
    • getAttributeNames方法,获取request对象的所有属性名,返回的是一个集合,例如:Enumeration<String> attrNames = request.getAttributeNames();

    转发和重定向的区别:

      形式上:

      request.getRequestDispacther("/test.jsp").forword(request,response); 

      response.sendRedirect("test.jsp");
      本质上:

      请求转发,一次请求一次响应,只能在服务器内部Servlet之间,地址栏不会变化(不带项目名)/307
      重定向,两次请求与响应,地址栏会变化,可以去别的路径/302

  • 相关阅读:
    Linux-read 命令(20)
    47.Linux-DEVICE_ATTR()介绍及使用示例
    46.Linux-创建rc红外遥控平台设备,实现重复功能(2)
    46.Linux-分析rc红外遥控平台驱动框架,修改内核的NEC解码函数BUG(1)
    Xcode定位光标到行首行尾
    Mac 教程:OS X「剪切」移动文件的三种方法
    iOS Xcode最新真机调试包 DeviceSupport
    Flex布局做出自适应页面--语法和案例
    如何使用Android Studio与夜神模拟器开发调试
    Android源代码下载与编译
  • 原文地址:https://www.cnblogs.com/jiangbei/p/6682508.html
Copyright © 2020-2023  润新知