Java Web之Request对象

一、request对象继承体系结构

                       

二、request对象的功能

1、获取请求消息数据

1.1、获取请求行数据

//1、获取请求方式:String getMethod()
String method = request.getMethod();
System.out.println(method);//GET

//2、获取虚拟目录:String getContextPath()
String contextPath = request.getContextPath();
System.out.println(contextPath);// /javaweb

//3、获取servlet路径:String getServletPath()
String servletPath = request.getServletPath();
System.out.println(servletPath);// /requestDemo

//4、获取get方式请求参数:String getQueryString()
String queryString = request.getQueryString();
System.out.println(queryString); // username=zhangsan

//5、获取请求URI:String getRequestURI()
String requestURI = request.getRequestURI();
System.out.println(requestURI); // /requestDemo

//6、获取请求URL:StringBuffer getRequestURL()
StringBuffer requestURL = request.getRequestURL();
System.out.println(requestURL); //http://localhost:8080/requestDemo

//7、获取协议及版本:String getProtocol()
String protocol = request.getProtocol();
System.out.println(protocol);// HTTP/1.1

//8、获取客户机的IP地址:String getRemoteAddr()
String remoteAddr = request.getRemoteAddr();
System.out.println(remoteAddr);// 0:0:0:0:0:0:0:1

1.2、获取请求头数据

//1、获取所有请求头名称:Enumeration<String> getHeaderNames()
Enumeration<String> headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
    String name = headerNames.nextElement();
    //2、根据名称获取请求头的值:String getHeader(String name)
    String value = request.getHeader(name);
    System.out.println(name + " : " + value);
}


//3、获取浏览器版本信息
String agent = request.getHeader("user-agent");
if(agent.contains("Chrome")) {
    System.out.println("客户端使用的是谷歌浏览器……");
}else if (agent.contains("Firefox")) {
    System.out.println("客户端使用的是火狐浏览器……");
}else {//IE:User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
    System.out.println("客户端使用的是IE浏览器……");
}

1.3、获取请求体数据

//1.获取字符流
BufferedReader br = request.getReader();
//2.读取数据
String line = null;
while((line = br.readLine()) != null){
    System.out.println(line);
}

2、其他功能

2.1、获取请求参数通用方式

注册页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/requestDemo" method="post">
        用户名:<input type="text" name="username"><br>
        密&nbsp;&nbsp;&nbsp;码:<input type="password" name="password"><br>
        <input type="checkbox" name="hobby" value="game">游戏
        <input type="checkbox" name="hobby" value="study">学习<br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

获取请求数据:

package com.wedu.demo.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;

/**
 * 获取请求参数通用方式
 */
@WebServlet("/requestDemo")
public class RequestDemo extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置获取请求数据的编码格式
        request.setCharacterEncoding("UTF-8");

        //1、String getParameter(String name):根据参数名称获取参数值
        String username = request.getParameter("username");
        System.out.println("username:" + username);

        //2、String[] getParameterValues(String name):根据参数名称获取参数值的数组
        String[] hobbies = request.getParameterValues("hobby");
        for (String hobby : hobbies) {
            System.out.println("hobby:" + hobby);
        }

        //3、Enumeration<String> getParameterNames():获取所有请求的参数名称
        Enumeration<String> parameterNames = request.getParameterNames();
        while (parameterNames.hasMoreElements()) {
            String name =  parameterNames.nextElement();
            String value = request.getParameter(name);
            System.out.println(name + ":" + value);
        }

        //4、Map<String,String[]> getParameterMap():获取所有参数的map集合
        Map<String, String[]> parameterMap = request.getParameterMap();
        Set<String> keySet = parameterMap.keySet();
        for (String key:keySet) {
            String[] values = parameterMap.get(key);
            for (String value : values) {
                System.out.println(key + ":" + value);
            }
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

2.2、获取共享数据

​
package com.wedu.demo.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * request共享数据
 */
@WebServlet("/requestDemo")
public class RequestDemo extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");

        //void setAttribute(String name,Object object):存储数据
        request.setAttribute("msg","hello");

        //Object getAttribute(String name):通过键获取值
        String msg = (String)request.getAttribute("msg");
        System.out.println(msg);

        //void removeAttribute(String name):通过键移除键值对
        request.removeAttribute("msg");
        msg = (String)request.getAttribute("msg");
        System.out.println(msg);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

 

2.3、请求转发

package com.wedu.demo.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * 请求转发
 */
@WebServlet("/requestDemo")
public class RequestDemo extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");

        request.setAttribute("msg","hello");
        //设置转发路径
        request.getRequestDispatcher("/requestDemo1").forward(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}
package com.wedu.demo.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 请求转发
 */
@WebServlet("/requestDemo1")
public class RequestDemo1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");

        String msg = (String)request.getAttribute("msg");
        System.out.println(msg);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

2.4、获取ServletContext

package com.wedu.demo.servlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 获取和操作ServletContext
 */
@WebServlet("/requestDemo")
public class RequestDemo extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //ServletContext getServletContext():获取ServletContext对象
        ServletContext context = request.getServletContext();

        String filename = "a.txt";
        //String getMimeType(String file):获取MIME类型
        String mimeType = context.getMimeType(filename);
        System.out.println(mimeType);

        //void setAttribute(String name,Object object):存储数据
        context.setAttribute("msg","hello");

        //Object getAttribute(String name):通过键获取值
        String msg = (String)context.getAttribute("msg");
        System.out.println(msg);

        //void removeAttribute(String name):通过键移除键值对
        context.removeAttribute("msg");
        msg = (String)context.getAttribute("msg");
        System.out.println(msg);

        //String getRealPath(String path):获取文件的真实(服务器)路径
        String realPath = context.getRealPath("/b.txt");
        System.out.println(realPath);//web目录下资源访问
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

三、应用实例

登陆案例

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值