JavaWeb—Request的使用

系列文章目录

JavaWeb之Request的使用



前言

在这里插入图片描述


一、Request继承体系

在这里插入图片描述

二、Request获取请求数据

1.获取请求数据

在这里插入图片描述

package org.example.web;

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.BufferedReader;
import java.io.IOException;

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

        //  String getContextPath    获取虚拟目录(项目访问路径)
        String path = req.getContextPath();
        System.out.println(path);

        //   StringBuffer   getRequestURL 获取URL(统一资源定位符)
        StringBuffer url = req.getRequestURL();
        System.out.println(url.toString());


        //获取URI(统一资源标识)
        String uri = req.getRequestURI();
        System.out.println(uri);

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


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

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取post 请求体:请求参数
        //1.获取字符输入流
        BufferedReader reader = req.getReader();
        //2.读取数据
        String s = reader.readLine();
        System.out.println(s);
    }
}

2.Request通用方式获取请求参数

在这里插入图片描述
在这里插入图片描述

package org.example.web;

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.Map;

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

        //1.获取所有参数的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+"\t");
            }
            System.out.println();
        }


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

        //3.根据key获取单个的参数值
        String username = req.getParameter("username");
        System.out.println(username);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req,resp);
    }
}

在这里插入图片描述

3.请求参数中文乱码处理

在这里插入图片描述

package org.example.web;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

public class URLDemo {
    public static void main(String[] args) throws Exception {

        String username="张三";

        //1.URL编码
        String encode = URLEncoder.encode(username, "utf-8");
        System.out.println(encode);


        //2.URL解码
        //String decode = URLDecoder.decode(username, "utf-8");
        String decode = URLDecoder.decode(username, "ISO-8859-1");

        //3.转化为字节数据,编码
        byte[] bytes = decode.getBytes();
        /*for (byte bt : bytes) {
            System.out.println(bt+"   ");
        }*/

        //4.将字节数组转化为字符串,解码
        String s = new String(bytes, "utf-8");
        System.out.println(s);
    }
}

package org.example.web;

import sun.nio.cs.StandardCharsets;

import javax.net.ssl.StandardConstants;
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("/req4")
public class RequestDemo4 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }

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

        //1.POST:getReader()获取请求参数
        request.setCharacterEncoding("UTF-8");//设置字符输入流的编码

        //2.
        String username = request.getParameter("username");
        System.out.println("解决乱码前:"+username);

        //GET:getQueryString()方式获取参数
        //乱码原因:Tomcat进行URL解码时默认使用字符集ISO-8859-1
       /* //3.1:先对乱码数据进行编码:转为字符数组
        byte[] bytes = username.getBytes("ISO-8859-1");
        //3.2:字节数组解码
        username = new String(bytes, "utf-8");*/

        username=new String(username.getBytes("ISO-8859-1"),"utf-8");
        System.out.println("解决乱码后:"+username);
    }
}

三、Request请求转发

在这里插入图片描述

package org.example.web;

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("/req5")
public class RequestDemo5 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("demo5....");

        //设置参数
        request.setAttribute("msg","hello");


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

package org.example.web;

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("/req6")
public class RequestDemo6 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("demo6....");

        //设置参数
        Object msg = request.getAttribute("msg");
        System.out.println(msg);


    }
}


总结

request是对Tomcat是对请求数据封装的对象,经过前人的改进,如HTTPrequest,HttpServletRequest 使得request对象更加强大,它对post和get方式的请求能做同样的处理,获取请求参数的方法变得一致,除了要掌握request的一些获取请求参数方法外,也应掌握HTTP协议底层request的使用方法。

参考视频

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值