JavaWeb——Request (请求)

 

1.Request

1.1Request继承体系

1.2Request获取请求数据

1.2.1获取请求行、请求头、请求体

获取请求行、请求头:


@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取请求行
        //请求方式
        String method = req.getMethod();
        System.out.println(method);//         GET

        //项目访问路径
        String contexPath = req.getContextPath();
        System.out.println(contexPath);//         /web-demo

        //URL
        StringBuffer requestURL = req.getRequestURL();
        System.out.println(requestURL.toString());//        http://localhost:8080/web-demo/req1

        //URI
        String requestURI = req.getRequestURI();
        System.out.println(requestURI);//      /web-demo/req1

        //请求参数(GET方式)
        String queryString = req.getQueryString();
        System.out.println(queryString);//      zhangsan=123

        //获取请求头
        //浏览器版本信息
        String header = req.getHeader("user-agent");
        System.out.println(header);

    }

}

获取请求体:

@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet{
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //获取请求体(post请求)
        BufferedReader br = req.getReader();
        String line = br.readLine();
        System.out.println(line);//     username=aaa&password=1345

    }
}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form action="/request-demo/req1" method="post">
    用户名<input type="text" name="username">密码<input type="password" name="password">
    <input type="submit" value="点击提交">

</form>

</body>
</html>

1.2.2Request通用方式获取请求参数
 

 


@WebServlet("/req2")
public class RequestDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.out.println("获取所有参数的map集合");
        Map<String, String[]> map = req.getParameterMap();
        for (String key : map.keySet()) {
            System.out.print(key + ":");
            String[] values = map.get(key);
            for (String value : values) {
                System.out.print(value + " ");
            }
            System.out.println();
        }
//        获取所有参数的map集合
//        username:zhangsan
//        password:12345
//        hobby:1 2 3

        System.out.println("----------------------------------");

        System.out.println("根据key获取参数值数组");
        String[] hobbies = req.getParameterValues("hobby");
        for (String hobby : hobbies) {
            System.out.println(hobby);
        }
//        根据key获取参数值数组
//        1
//        2
//        3

        System.out.println("----------------------------------");

        System.out.println("根据key获取单个参数值");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println("username:" + username);
        System.out.println("password:" + password);

//        根据key获取单个参数值
//        username:zhangsan
//        password:12345

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req,resp);
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form action="/request-demo/req2" method="post">
    用户名<input type="text" name="username"><br>
    密码<input type="password" name="password"><br>
    爱好<input type="checkbox" name="hobby" value="1">游泳
    <input type="checkbox" name="hobby" value="2">爬山
    <input type="checkbox" name="hobby" value="3">跑步<br>

    <input type="submit" value="点击提交">

</form>

</body>
</html>

 idea模板创建Servlet

1.修改模板

2.使用模板

请求参数中文乱码处理

1.解决post方式中文乱码问题  getReader()

@WebServlet("/req3")
public class RequestDemo3 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.解决post方式中文乱码问题  getReader()
        request.setCharacterEncoding("UTF-8");
        String username = request.getParameter("username");
        System.out.println(username);
    }
}

 2.解决get方式中文乱码问题  getQueryString()

@WebServlet("/req3")
public class RequestDemo3 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);

    }

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

        //2.解决get方式中文乱码问题  getQueryString()
        String username = request.getParameter("username");

        //2.1.decode转成字节数组:编码
        byte[] bytes = username.getBytes("ISO-8859-1");
        //2.2.字节数组转字符串:解码
        username = new String(bytes, "utf-8");

        //username = new String(username.getBytes("ISO-8859-1"), "utf-8");

        System.out.println(username);
    }
}

原理:


public class URLdemo {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String username = "张三";
        //浏览器用UTF-8编码
        String encode = URLEncoder.encode(username,"utf-8");

        //Tomcat用ISO-8859-1解码
        String decode = URLDecoder.decode(encode,"ISO-8859-1");

        //下面是我们要做的工作
        //1.decode转成字节数组:编码
        byte[] bytes = decode.getBytes("ISO-8859-1");
        //2.字节数组转字符串:解码
        String s = new String(bytes,"utf-8");

        System.out.println(s);

    }
}

1.3Request请求转发

 

 

@WebServlet("/req4_1")
public class RequestDemo4_1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //存数据
        request.setAttribute("message", "hello");

        //请求转发
        request.getRequestDispatcher("/req4_2").forward(request, response);

    }
}


@WebServlet("/req4_2")
public class RequestDemo4_2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取数据
        Object o = request.getAttribute("message");
        System.out.println(o);

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值