Java Web 之HttpServletRequest对象初识

通过request对象获得请求行

  • 获得客户端请求方式:String getMethod();
  • 获得请求的资源:
    • String getRequestURL();
    • String getQueryString();--用于获取get提交url地址后的参数字符串(username=张三&password=123)
    • String getContextPath();==重要 重要 重要==--用于获取请求的web应用的名称
        // 获得请求方式
        String method = request.getMethod();

        // 获得请求资源相关的内容
        StringBuffer requestURL = request.getRequestURL();
        String requestURI = request.getRequestURI();
        System.out.println("URI=" + requestURI + "\r\nURL=" + requestURL);

        // 获得web应用的名称
        String contextPath = request.getContextPath();
        System.out.println("web应用名称为:"+contextPath);
        
        //获得地址后的参数字符串
        String queryString = request.getQueryString();
        System.out.println(queryString);

注意:request可以获得访问客户端的一些信息,例如:
request.getRemoteAddr();--获得访问的客户端的ip地址

通过request获得请求头

String getHeader()

        // 获得指定的头
        String header = request.getHeader("User-Agent");
        System.out.println(header);

        // 获得所有头的名称
        Enumeration<String> headerNames = request.getHeaderNames();
        while (headerNames.hasMoreElements()) {
            String headerName = headerNames.nextElement();
            String headerValue = request.getHeader(headerName);
            System.out.println(headerName + ":" + headerValue);
        }

referer头信息的作用:意思是执行该次访问的来源,可以做防盗链

通过request获得请求体
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");

        // 获得单个表单值
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("username=" + username + ";password=" + password);

        // 获得多个表单的值
        String[] hobbies = request.getParameterValues("hobby");
        for (String hobby : hobbies) {
            System.out.println(hobby);
        }

        // 获得所有请求参数的名称,该方法很少用
        Enumeration<String> paramNames = request.getParameterNames();
        while (paramNames.hasMoreElements()) {
            System.out.println(paramNames.nextElement());
        }

        // Map<String, String[]> getParameterMap()
        // 获得所有的参数,分装在一个map中
        Map<String, String[]> parameterMap = request.getParameterMap();
        for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
            String key = entry.getKey();
            String[] values = entry.getValue();

            // 值是一数组,还要遍历
            for (String value : values) {
                System.out.println(key + ":" + value);
            }
        }

request的其他功能

request是一个域对象

request也是一个存储数据的区域对象,所以也具有以下方法:

  • setAttribute(String name, Object o)
  • getAttribute(String name)
  • removeAttribute(String name)
request完成请求转发
  1. 获得请求转发器--path是转发的地址
    RequestDispather getRequestDispather(String path)
  2. 通过转发器对象转发
    requestDispather.forward(ServletRequest request, ServletResponse response)
        //Servlet1将请求转发给Servlet2
        //1获得请求转发器对象,由于是在服务器内部进行的转发,所以下面写的地址不是/WEB15/servlet2(客户端地址),而是/servlet2(服务器端地址)
        RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet2");
        //2执行转发的方法
        dispatcher.forward(request, response);

注意

  • 转发的地址是不会变的,因为是服务器内部进行的,客户端并不知道,所以客户端的地址不会变。
  • 每次访问都会有一对新的requestresponse对象,这对对象是服务器帮我们创建的。
  • request的作用范围:一次请求

转载于:https://www.cnblogs.com/zxfei/p/11000251.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值