request获取参数通用格式和数据共享

1. 四种通用的获取请求数据方法getParameter

1.1通过getParamter(键名)来获取参数值 get和post请求通用

package cn.sc;

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( "/test3")
public class test3 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //通过getParamter(键名)来获取参数值 get和post请求通用
        String username = request.getParameter("username");
        String hobby = request.getParameter("hobby");
        System.out.println("爱好是:"+hobby);
        System.out.println(username);
}

JavaWeb代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="test3"  method="post">
    用户名<input type="text" placeholder="请输入用户名" name="username"/><br/>
    密码<input type="password" placeholder="请输入密码" name="pwd">
    <input type="checkbox" value="cll" name="hobby">123456
    <input type="checkbox" value="ckl" name="hobby">123457
    <input type="submit" value="登陆"/>
</form>
</body>
</html>

结果为
在这里插入图片描述
1.2通过键名获取所有的参数

System.out.println("-------------通过键名获取所有的参数--------------");
//        request.getParameterValues  适用于  一个键名 有多个参数
        String[] hobies = request.getParameterValues("hoby");
        for (String hoby1 : hobies) {
            System.out.println(hoby1);
        }

结果为
在这里插入图片描述

1.3request.getParamyterNames() 获取访问该servlet的所有的 键名

      Enumeration<String> parameterNames = request.getParameterNames();
        while (parameterNames.hasMoreElements()){
            String name = parameterNames.nextElement();
//            System.out.println(name);
            String value = request.getParameter(name);
            System.out.println(name+"+++"+value);
        }

结果为
在这里插入图片描述
1.4通过map集合列举所有键名和值

Map<String, String[]> pm = request.getParameterMap();
Set<String> keySet = pm.keySet();
for (String key : keySet) {
    String[] values = pm.get(key);
    for (String value : values) {
        System.out.println(key+"----"+value);
    }
}

结果为
在这里插入图片描述

2解决request获取参数的中文乱码问题

我们在1.1方法中,username文本框若输入中文,则会出现乱码情况例如
在这里插入图片描述

我们也可以解决这些中文乱码,在下面位置中加入红框中的代码。
在这里插入图片描述
在这里插入图片描述

3、Request请求转发

是一个在服务器内部的资源跳转的方式,例如我们在世纪开发中,需要些不同的servlet,每个人完成不同的功能,当我们访问aservlet实现部分功能后需要跳转到一个新的bservlet里面,这就是资源跳转。

举个例子

package cn.sc;

import javax.servlet.RequestDispatcher;
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("/test1")
public class test1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我的貂,蝉在哪里");
        //1.获取request的请求转发器,内部参数为转发的路径
        RequestDispatcher requestDispatcher = request.getRequestDispatcher("/test2");
        //2.调用转发器对象,传入参数request和response
        requestDispatcher.forward(request,response);
    }

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

跳转到test2

package cn.sc;

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("/test2")
public class test2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("千军万马一将在,探囊取物有何难");
    }

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

结果为
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值