(十)Servlet教程——HttpServletRequest接口

2024-04-29 04:52

本文主要是介绍(十)Servlet教程——HttpServletRequest接口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 知识准备

HttpServletRequest对象

        浏览器访问网页的时候通过HTTP协议访问服务器上的静态资源或者接口服务,Servlet可以充当接口服务。当Servlet接收到来自浏览器的请求后会生成HttpServletRequest和HttpServletResponse来处理该请求。

        公共接口类HttpServletRequest继承自ServletRequest。

        客户端浏览器发出的请求被封装成为一个HttpServletRequest对象。对象包含了客户端请求信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内。

        接下来使用实例来一步步介绍HttpServletRequest对象包含的方法。

2.首先打开IDEA开发工具

点击“New Project”,弹出的界面如下图所示

3.左侧选择“Java Enterprise”,修改项目名称和对应的目录,Project template选择“Web Application”

Application Server选择安装的Tomcat服务器

Project SDK选择我们安装的JDK

4.点击“Next”按钮

弹出的界面如下图所示,默认会选择“Java EE 8”和Servlet,如下图所示

5.点击”Finish”按钮,就完成了一个Java Web项目的创建。

6.由于默认的项目名称比较长,我们需要做一下设置方便在浏览器中输入,点击“Edit Configurations”按钮,打开的设置界面如下图所示

7.切换到“Deployment”选项卡

将Application context改为s01

然后点击启动按钮就可以启动该应用

8.修改默认Servlet的代码

String method = request.getMethod();

System.out.println("请求方式" + method);

String questUri = request.getRequestURI();

System.out.println("资源名称部分:" + questUri);

String queryString = request.getQueryString();

System.out.println("参数部分" + queryString);

StringBuffer questUrl = request.getRequestURL();

System.out.println("请求完整路径" + questUrl.toString());

String contextPath = request.getContextPath();

System.out.println("获取应用名称:" + contextPath);

9.重启应用

再次在浏览器中输入地址http://localhost:8686/s01/hello-servlet

可以在Idea控制台中看到如下信息

10. 获取请求头信息

HttpServletRequest接口提供了一些方法获取请求头数据,常用的获取请求头数据的方法:

getHeader(String name):根据请求头的名称获取请求头的值;

getHeaders(String name):根据请求头的名称获取请求头的所有值,返回一个Enumeration对象;

getHeaderNames():获取所有请求头的名称,返回一个Enumeration对象;

      Enumeration<String> headers = request.getHeaderNames();

        while (headers.hasMoreElements()) {

            String headerName = headers.nextElement();

            System.out.println("请求头名称:" + headerName + "</br>");

        }

请求头信息将会在控制台中打印出来

11. 获取请求参数的方法

Map<String,String[]> getParameterMap()  获取包含所有请求参数及值的 Map 对象;

Enumeration<String> getParameterNames() 获取请求参数 Map 的所有 key,即获取所有请求参数名 name;

String[] getParameterValues(String name) 根据指定的请求参数名称,获取其对应的所有值;

String getParameter(String name)  根据指定的请求参数名称,获取其对应的值;

       Map<String, String[]> map = request.getParameterMap();

        for (String key : map.keySet()) {

            System.out.println("键:" + key);

        }

        Enumeration<String> paramNames = request.getParameterNames();

        while (paramNames.hasMoreElements()) {

            String paramName = paramNames.nextElement();

            System.out.println("parameterName:" + paramName);

        }

        String[] values = request.getParameterValues("uname");

        for (String s : values) {

            System.out.println("getParameterValues:" + s);

        }

        String uname = request.getParameter("uname");

        String password = request.getParameter("password");

        System.out.println("uname:" + uname);

        System.out.println("password" + password);

在浏览器地址栏中输入请求参数

http://localhost:8686/s01/hello-servlet?uname=test&password=123455

12. 请求作用域

在浏览器发出请求到到返回响应的过程中,在这个过程中使用forward跳转多个页面,这些页面可以用该域中的变量。

与请求域属性相关的方法:

setAttribute方法

getAttribute方法

removeAttribute方法

getAttributeNames方法

13. 创建一个SomeServlet类设置请求作用域数据

@WebServlet("/some")

public class SomeServlet extends HttpServlet {

    @Override

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

        //请求作用域中放置属性

        request.setAttribute("address", "武汉");

        request.setAttribute("floor", "12");

        request.getRequestDispatcher("other").forward(request, response);

    }

}

14. 创建一个OtherServlet类获取请求作用域数据

@WebServlet("/other")

public class OtherServlet extends HttpServlet {

    @Override

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

        String address = (String) request.getAttribute("address");

        String floor = (String) request.getAttribute("floor");

        System.out.println("address:" + address);

        System.out.println("floor:" + floor);

    }

}

在浏览器中访问地址:http://localhost:8686/s01/some

请求作用域属性将会在控制台中打印出来

这篇关于(十)Servlet教程——HttpServletRequest接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945154

相关文章

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.