javaweb入门(一)——serlvet-08-Request学习

从DDH到FastANI:原核生物分类黄金标准的进化史与技术对比 本文系统梳理了原核生物分类标准从DDH到FastANI的四次技术革命,详细解析了95%相似度阈值的科学依据及应用场景。通过对比DDH、16S rRNA、ANI和FastANI的技术特点与性能指标,为微生物研究者提供基因组分类的实战指南,并展望第三代测序时代的分类新挑战。 阅读详情

HttpServletRequest介绍

HttpServletRequest代表客户端的请求,用户使用HTTP协议访问服务器,其中的HTTP请求新消息会被封装到HttpServletRequest中,所以通过HttpServletRequest,我们可以获取客户端请求的信息。
请求主要有两个应用场景:获取前端传递的参数和请求转发。

1. 获取前端传递的参数

我主要需要掌握两个方法:req.getParameter();和req.getParameterValues();

        req.getParameter();
        req.getParameterValues();

我们主要就是靠req.getParameter()来获取前端传来的参数,而getParameter()和getParameterValues()之间的区别就是一个是获取一个参数,一个是获取多个参数。

2.请求转发

关于请求转发,我们使用的语句是:

	req.getRequestDispatcher("/success.jsp").forward(req,resp);

其中getRequestDispatcher()中的参数是请求转发的路径。关于这个路径我们需要知道的是:请求转发的路径在加了"/"之后就默认为项目当前路径,这点和重定向不同。

为了方便我们理解Request的常用方法,我们接下来做一个案例。
在本次案例中,我们需要做一个简单的前端登录页面,此页面将用户填写的数据通过request传给servlet,我们在接受的servlet中获取前段传来的参数并且使用请求转发将路径转发到登录成功页面。
我们需要做:

  1. 编写一个简单的登录页面和登录成功页面。
  2. 编写一个serlvet获取request之中的参数,并且使用请求转发将请求转发登录成功页面。

登录页面:

<%@page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<body>
<h2>Hello World!</h2>
<form action="${pageContext.request.contextPath}/dispatcher" method="post">
    Username : <input name="username" type="text"> <br>
    Password : <input name="password" type="text"> <br>
    爱好 : <input type="checkbox" name="hobbies" value="代码">代码
    <input type="checkbox" name="hobbies" value="游戏">游戏
    <input type="checkbox" name="hobbies" value="运动">运动
    <input type="checkbox" name="hobbies" value="电影">电影
    <br>
    <input type="submit">
</form>
</body>
</html>

其中我们需要注意:<%@page contentType="text/html;charset=UTF-8" language="java" %>这句话是将页面的内容格式设置为UTF-8,以此保证出现中文字符不会乱码。

登录成功页面:

<%--
  Created by IntelliJ IDEA.
  User: 10437
  Date: 2023/9/25
  Time: 20:35
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Success</title>
</head>
<body>
<h1>登录成功!!!</h1>
</body>
</html>

接受Servlet:

package com.kuang.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;

public class RequestDispatcherServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        1.设置req和resp的编码类型
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
//        2.获取前端参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String[] hobbies = req.getParameterValues("hobbies");
//        3.输出获取的参数
        System.out.println("username : " + username);
        System.out.println("password : " + password);
        System.out.println(Arrays.toString(hobbies));
//        4.请求转发
        req.getRequestDispatcher("/success.jsp").forward(req,resp);
    }

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

我们需要注意在请求或者响应的数据中如果有中文字符的话,我们需要添加.setCharacterEncoding("utf-8")来预防乱码。

在这个案例中,我们使用request获取username和password这两个单体的输入框类型的数据时,我们只需要使用getParameter()即可。但是在我们获取hobbies这种多个复选框数据时,就需要使用到getParameterValues()来获取一个字符数组。

请求转发和重定向

那么在我们学习完请求转发以及重定向之后,我们再次总结一下请求转发以及重定向的区别:
相同点:请求转发和重定向都可以实现页面跳转。
不同点:

  1. 请求转发在页面跳转之后页面的URL不会改变;重定向在实现页面跳转之后页面URL会改变。造成这个原因是:请求转发实现页面跳转的方式是客户端访问的Serlvet A将请求转发给另一个Servlet B,B在处理完转发过来的请求之后,将响应返回给A,A之后再把响应转发给客户端,从始至终只有一个请求;重定向实现页面跳转的方式是客户端在将请求发送给A之后,A将需要访问B的响应返回给客户端,客户端在接受到请求之后,再发一份请求给B,B在接受请求并且处理完请求之后,将响应返回给客户端,从始至终有两个请求。
  2. 请求转发是通过request来实现的,重定向是通过response来实现的。
  3. 请求转发访问页面的路径是从当前项目路径开始访问的,重定向访问页面路径是从localhost来开始访问的。
  4. 请求转发的代码是307,重定向是302。

重定向:

1.发送请求
2.通知A访问B
3.发送请求
4.返回请求
客户端
web资源A
web资源B

请求转发:

1.发送请求
3.转发请求
4.返回响应
4.将B返回的响应返回
客户端
web资源A
web资源B
小红书直播弹幕采集 本文主要介绍小红书直播间弹幕的采集,便于进行直播数据监控与直播数据进行分析。 阅读详情

相关推荐

解密Android相机框架:从HAL到应用层的全链路解析

本文深入解析Android相机框架的全链路架构,从应用层到硬件抽象层(HAL)再到驱动层,详细介绍了CamX-CHI架构的设计哲学与实战应用。通过HAL3接口、V4L2交互机制及Camera2 API的最佳实践,帮助开发者优化相机性能,解决多摄切换、预览卡顿等常见问题,提升成像效率与稳定性。

weixin_29238147的博客 408

JavaWeb学习(八)HttpServletRequest基本应用——获得客户端的请求(1)

一、HttpServletRequest介绍   HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。 二、Request常用方法 2.1 获得客户机信息   getRequestURL方法返回客户端发出请求时的完整URL。  getRequest...

Isringring的博客 392

线性自抗扰控制LADRC(一)---基础知识

LADRC(Linear Active Disturbance Rejection Control)是ADRC的线性化版本,通过简化非线性模块(如ESO和反馈律)降低计算复杂度,适用于实时控制系统(如电机驱动)。

ApexYuan 2076

Eclipse Tomcat Servlet JSP 使用 MySQL utf8mb4字符集避免中文乱码的必要配置

1.简介 UTF-8是Web应用程序中最常用的字符编码。它支持世界上目前使用的所有语言,包括中文,韩语和日语。 在本文中,我们演示了确保Tomcat中的UTF-8所需的所有配置。 2.连接器配置 连接器侦听特定端口上的连接。我们需要确保所有连接器都使用UTF-8编码请求。 让我们将参数URIEncoding =“ UTF-8”添加到TOMCAT_ROOT / conf / server.xml中的所有连接器: <Connector URIEn.....

allway2的博客 1497

手把手教你用Wireshark抓包分析Profinet非周期通信(附实战案例)

本文详细解析了PROFINET非周期通信(RTA)的技术原理与实战应用,通过Wireshark抓包分析,揭示从PLC请求到驱动器响应的完整对话过程。涵盖实验环境搭建、关键配置步骤、典型参数访问流程及故障诊断案例,帮助工程师深入理解并优化工业网络通信性能。

Black的专栏 1048

STM32学习笔记(江协科技)-----OLED显示屏

SSD1306简介:•SSD1306是一款OLED/PLED点阵显示屏的控制器,可以嵌入在屏幕中,用于执行接收数据、显示存储、扫描刷新等任务••驱动接口:128个SEG引脚和64个COM引脚,对应128*64像素点阵显示屏••内置显示存储器(GDDRAM):128*64 bit128*8 ByteSRAM••供电:IC逻辑),VCC=7~15V(面板驱动)••通信接口:8位6800/8080并行接口,3/4线SPI。

lu322f的博客 1062

servlet——08请求乱码问题解决办法

请求乱码问题 浏览器默认的编码格式——iso8859-1 Tomcat服务器接收——UTF-8 过程:在调用service时,会传入req对象 解决:先用iso8859-1解析,再用UTF-8 对代码进行具体操作是: /获取请求信息 String uname=req.getParameter("uname"); uname=new String(uname.getBytes("iso8859-1"...

Re_view的博客 202

深入剖析Zynq AMP模式下CPU1中断响应机制:从原理到创新实践

在异构计算领域,Zynq-7000系列SoC的AMP(Asymmetric Multiprocessing)模式堪称多核编程的瑞士军刀。独立运行环境:CPU0运行Linux,CPU1运行FreeRTOS或裸机程序硬件资源独占:CPU0管理DDR,CPU1使用OCM(片上内存)中断隔离:默认所有中断路由到CPU0这种架构非常适合需要实时响应的工业控制系统——比如用CPU0处理网络通信,CPU1负责电机控制。AMP模式下中断路由的底层原理多维度性能优化技巧工业级可靠性的实现方案。

QQ_778132974的博客 491

一步一步学java(8):一文彻底搞懂servlet、httpservlet以及http协议

web应用必备基础知识

持之以恒 9218

SAP UI5 主题设置全解析:从启动参数到运行时切换、跨域白名单与事件监听

SAP UI5主题体系深度解析:从配置到切换的完整指南 摘要:SAP UI5主题机制远不止CSS换肤,其工程化实践涵盖启动配置、运行时API切换、跨库路径映射及安全管控等关键环节。通过bootstrap标签或URL参数设置初始主题,运行时可用Theming.setTheme无刷新切换。自定义主题需配置theme-roots路径,跨域加载需声明sap-allowed-theme-origins白名单。主题切换完成后会触发applied事件,适合执行视觉同步操作。该体系支持多品牌适配、集中式主题管理,在Fior

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 326

Spring AI 实战:第七章、Spring AI Advisor机制之记忆大师

从金鱼到最强大脑通过 Spring AI 的记忆功能,我们成功让 AI:记住了用户身份实现了多用户隔离做到了持久化存储最终效果用户:“和上次一样” → AI 秒懂用户:“你知道我的名字吗?” → AI:“当然,张三!AI的进化路线🐟金鱼脑 →🧠最强大脑 →🏛️记忆宫殿管理员。

liaokailin的专栏 1516

java8 web_深入分析JavaWeb Item8 -- HttpServletResponse常见应用

一、HttpServletResponse常见应用——生成验证码1.1、生成随机图片用作验证码生成图片主要用到了一个BufferedImage类,生成随机图片范例:package gacl.response.study;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http...

weixin_33406440的博客 277

【StreamSet】ETL之StreamSet之Pipelines的状态监听之WebHook钉钉篇

介绍下StreamSets的状态监听以及钉钉的webhook的互联,这位博友问的恰是时候,不久前我刚刚对接过钉钉的机器人,这次看到这个问题,对我来说,应该轻车熟路了,那就有了这篇博文,状态监听之钉钉篇。...

m0_54252387的博客 487

JavaWeb

HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。文本:html,字符串…超文本:图片,音乐,视频,定位,地图…默认端口:80HTTPS:安全的协议默认端口:443(1).Servlet就是sun公司开发动态web的一门技术。(2).Sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤:一.编写一个类,实现Servlet接口;二.把开发好的Java类部署到web服务器中。

2301_76556912的博客 1007

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

对JSP与Servlet的request与session的set、getAttribute() 方法及重定向sendRedirect()、请求转发理解getRequestDispatcher()的理解

对JSP、Servlet中request与session以及它们的setAttribute()、getAttribute() 方法以及其与:重定向sendRedirect()、请求转发getRequestDispatcher()之间关系的理解。 记录个人学习servlet时的一点浅薄理解。 request与session的setAttribute()、getAttribute() 方法在请求转发(getRequestDispatcher()) 与重定向 (sendRedirect()) 时使用。 其中req

weixin_45286211的博客 941

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

全网最强JavaWeb笔记 | 万字长文爆肝JavaWeb开发——day05_SpringBootWeb请求响应

万字长文爆肝黑马程序员2023最新版JavaWeb教程。这套教程打破常规,不再局限于过时的老套JavaWeb技术,而是与时俱进,运用的都是企业中流行的前沿技术。笔者认真跟着这个教程,再一次认真学习一遍JavaWeb教程,温故而知新,对JavaWeb开发也有了更加深入细致的了解。因此笔者做了全网最全面详细的学习笔记,通篇图文并茂,

qq_45832461的博客 1598

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Javaweb--JavaWeb--tomcat之HttpServlet使用详解,HttpServletRequest与HttpServletResponse

一、获取请求的信息 通过doGet或doPost方法的第一个参数(HttpServletRequest对象)获取请求信息 package com.my.servlet; import java.io.IOException; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpSer

lzq00277的博客 730

Servlet 三大作用域

在 JavaWeb 中,Servlet 中三大域对象分别是 request,session,application,其只要是用来存放共享数据的。 ​  request: HttpServletRequest ​  session: HttpSession   application: ServletContext 1 request 作用域 request是表示一个请求,只要发出一个请求就会创建一个request,它的作用域:仅在当前请求中有效。 用处:常用于服务器间同一请求不同页面之间的

yuyangll的博客 899

DispatcherServlet

DispatcherServlet

蔡林浩的博客 601

servlet三大作用域基础介绍

servlet的三大作用域包括request,session,application(ServletContext) 考虑到服务器的内存问题,能用小的不用大的:Request < Session < ServletContext 常见的使用场景:Request:一次查询的结果。例如,Servlet 转发 JSP。Session:存放当前会话的私有数据。例如,用户登录状态,验证码,购物车。application(ServletContext):若需要所有的 Servlet 都能访问到,才使用这个

qq_68500904的博客 1753

[转]Servlet的基本原理与用法

转自:https://www.cnblogs.com/whgk/p/6399262.html  目的:   1、什么是servlet?如果编写servlet?      2、分析了servlet的部分源码,知道了其中的一些设计巧妙的东西,比如,本来编写servlet是能看到其生命周期的,但是在其设计下,我们只关注doGet和doPost方法,为什么能这样呢?就可以

takashi_constantine----Blog 682

Java Servlet

Java Web(一) Servlet     一、什么是servlet?     处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。理解这个的前提是了解一些http协议的东西,并且知道B/S模式(浏览器/服务器)。 B/S:浏览器/服务器。 浏览器通过网址来访问服务器,比如访问百度,在浏览器中输入www.baidu....

唯风的博客 278

Java23:SERVLET

超文本传输协议,是一个属于应用层面向对象的协议,它是一种详细规定了浏览器和万维网服务器之间相互通信的规则,通过网络传送万维网文档的数据传送协议,客户端与服务端通信时传输的内容称为报文,http协议就是规定报文的格式。客户端发送给服务器的称为请求报文,服务器发送给客户端的称为响应报文交互方式请求 永远都是客户端向服务端发送响应 永远都是服务器向客户端返回数据格式请求时发送的数据称为请求报文响应时返回的数据称为响应报文报文是有规定的格式。

zzx_nihao的博客 1248

关于Servlet中重定向

public class Red1Servlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/htm...

weixin_30849591的博客 109

HttpServletRequest详解

我们在前文Response的基础上,找到里面的HttpServletRequest类别,按住ctrl键,进入源码界面,如下所示:我们发现Response里面为set,Request为get的一些方法。HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,HTTP请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获得客户端的所有信息。我们了解到getContextPath为获得上下文的路径。

超级程序诞生的博客 3254

httpServletRequest对象获取请求消息头

RequestDemo3.java 文件:package com.neu;import java.io.IOException; import java.util.Enumeration;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.Htt

wangyanming123的博客 1万+
上一篇: javaweb入门(一)——servlet-07-Response实现重定向
下一篇: javaweb入门(二)——Session和Cookie学习01
BugMaker2000
博客等级 码龄7年 84粉丝 21原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值