Day04JavaWeb【request】请求体

request-获取请求体-获取一个参数和中文乱码问题***

  • (1)请求体是什么?
    提交的参数
  • (2)有什么特点?
    1)只有POST请求才有请求体
    2)请求体中包含的是请求的参数
  • (3)方法
String getParameter(String name)  //根据一个参数名,获取参数的值      、
 request.setCharacterEncoding("UTF-8");

src\com\wzx\pack03_body\Demo03GetServlet.java

@WebServlet("/demo03")
public class Demo03GetServlet 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 {
        //Tomcat 8.5 已默认可以处理GET请求的中文的提交,但是没有处理POST的中文的提交
        //如果是POST请求,自己设置编码utf-8
        //if("POST".equals(request.getMethod())){
            //设置请求体的数据的编码为utf-8
            request.setCharacterEncoding("UTF-8");
        //}

        //获取请求体中的参数,才是真正要传给服务端的数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        System.out.println(username);
        System.out.println(password);
    }
}

web\login.html

    <form method="post" action="/abc/demo03">
        post 账号:<input type="text" name="username"/><br/>
        密码:<input type="password" name="password"/><br/>
        <input type="submit" value="提交"/><br/>
    </form>
<hr/>

    <form method="get" action="/abc/demo03">
        get 账号:<input type="text" name="username"/><br/>
        密码:<input type="password" name="password"/><br/>
        <input type="submit" value="提交"/><br/>
    </form>
<hr/>
<a href="/abc/demo03?age=13">get请求</a>

request-获取请求体-获取多个参数和所有参数

//根据一个参数名,获取参数的多个值   如果没有值,则返回null
String[] getParameterValues(String name)    一个键多个值
 //获取所有的参数名和参数值
Map<String,String[]> getParameterMap()   所有参数

如果表单中的参数,是一个key对应一个value,类似username,使用getParamter()
如果表单中的参数,是一个key对应多个value,类似hobby,使用getParamterValues()
getParameterMap()很少单独用。

<form method="post" action="/abc/demo04">
        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="radio" name="sex" value="1"/><input type="radio" name="sex" value="0"/><br/>
        <input type="submit" value="提交"/><br/>
    </form>

src\com\wzx\pack03_body\Demo04GetServlet.java

@WebServlet("/demo04")
public class Demo04GetServlet 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 {
        //获取所有请求参数的值s
        String[] usernames = request.getParameterValues("username");
        System.out.println(usernames[0]);

        //复选框
        String[] hobby = request.getParameterValues("hobby");
        System.out.println(Arrays.toString(hobby));

        //单选
        String[] sex = request.getParameterValues("sex");
        System.out.println(Arrays.toString(sex));

        //---------------------------------------------
        Map<String,String[]> map = request.getParameterMap();
        //取出map中所有的key
        Set<String> keys = map.keySet();
        for(String key:keys){
            System.out.println(key+" "+Arrays.toString(map.get(key)));//get方法根据key查找value
        }
        //System.out.println(map);
    }
}

Arrays.toString(数组) 用于将数组中的元素拼接成字符串返回,避免直接打印显示内存地址username [Ljava.lang.String;@773f238d

猜你喜欢

转载自blog.csdn.net/u013621398/article/details/108512979