IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> HttpServletRequest 接口以及转发机制 -> 正文阅读

[开发工具]HttpServletRequest 接口以及转发机制

HttpServletRequest 接口

获取前端浏览器用户提交的数据:

String getParameter(String name)
Map<String,String[]> getParameterMap()//这个是获取Map
Enumeration<String> getParameterNames()//这个是获取Map集合中所有的key
String[] getParameterValues(java.lang.String name)//根据Map的key获取获取value数组
    //以上四个方法与获取用户提交的数据有关系
//前端获取的数据:username=abc
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h2>学生登录系统</h2>
<form action="/htmm/htmservlet" method="post">
    username<input type="text" name="username"/><br>
    password<input type="password" name="userpwd"/><br>
    interest:
        smoke<input type="checkbox" name="hobby" value="s">
        drink<input type="checkbox" name="hobby" value="d">
        play<input type="checkbox" name="hobby" value="p">
    <br>
    <input type="submit" value="login">
</form>

</body>
</html>

在这里插入图片描述

//后端会收到这样的结果username=sza002415&userpwd=sadasda&hobby=s&hobby=d&hobby=p

Map<String,String[]>
key               value
---------------------------------
username          {"sza002415"}
userpwd           {"sadasda"}
hobby             {"s","d","p"}
//Map的使用以及遍历

Map<String,String[]> parameterMap = request.getParameterMap();
        //遍历Map集合
        Set<String> keys = parameterMap.keySet();
        Iterator<String> it = keys.iterator();
        while (it.hasNext()){
            String key = it.next();
            String[] values = parameterMap.get(key);//输出数组
            //遍历一维数组
            for (String value:values){
                out.print(value + "<br>");
            }
//            out.print(key);
//            out.print("<br>");
        }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        super.doPost(req, resp);
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
//
        Enumeration<String> names = request.getParameterNames();
        while (names.hasMoreElements()){
            String name = names.nextElement();
            out.print(name+"<br>");
        }
        String[] usernames = request.getParameterValues("username");
        String[] userpwds = request.getParameterValues("userpwd");
        String[] interests = request.getParameterValues("hobby");

        for (String username : usernames){
            out.print(username);
        }
        for (String pwd : userpwds){
            out.print(pwd);
        }
        for (String interest :interests){
            out.print(interest);
        }
    }

使用Servlet的转发机制

执行Aservlet之后,跳转到Bservlet。

1.获取请求转发器对象

2.调用请求转发器RequestDispatcher的forward方法

//要转到类time,其是在请求域中拿出绑定的数据
package sza_htmservlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;

public class time extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //从请求域当中取出绑定的数据
        Object sysTime = request.getAttribute("sysTime");

        //输出到服务器
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.print(sysTime);
    }
}

//是类time_0其绑定了当前的系统时间,绑定了数据到请求域当中

package sza_htmservlet;

import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.util.Date;

public class time_0 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获得系统当前时间
        Date nowtime = new Date();
        //将系统当前时间绑定到请求域当中
        request.setAttribute("sysTime",nowtime);
        //第一步:获取请求转发器对象,这里的/time是xml文件里可以访问类的路径
        RequestDispatcher requestDispatcher = request.getRequestDispatcher("/time");
        //第二步调用请求转发器RequestDispatcher的forward方法参数为 本类的request和response
        //此时便会自动转到/time  所指的类当中并执行doGet语句
        requestDispatcher.forward(request,response);

    }
}

两个servlet如何共享数据?

1.将数据放到servletContext当中,但是应用域范围太大,占用资源太多,不建议使用

2.放到request域当中要用时,使用转发机制

转发的下一个资源不一定是Servlet

比如html…

转发的路径以“/”开始,不加项目名

        //可以合到一起写
        request.getRequestDispatcher("time.html").forward(request,response);

关于request对象中两个非常容易混淆的方法

String username = request.getParameter("username");
//获取的是用户在浏览器上提交的数据
Object obj = request.getAttribute("name");
//获取的是请求域中绑定的数据
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:45:36  更:2022-03-08 22:46:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:46:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码