(十)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

相关文章

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Centos环境下Tomcat虚拟主机配置详细教程

《Centos环境下Tomcat虚拟主机配置详细教程》这篇文章主要讲的是在CentOS系统上,如何一步步配置Tomcat的虚拟主机,内容很简单,从目录准备到配置文件修改,再到重启和测试,手把手带你搞定... 目录1. 准备虚拟主机的目录和内容创建目录添加测试文件2. 修改 Tomcat 的 server.X

Python中的输入输出与注释教程

《Python中的输入输出与注释教程》:本文主要介绍Python中的输入输出与注释教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、print 输出功能1. 基础用法2. 多参数输出3. 格式化输出4. 换行控制二、input 输入功能1. 基础用法2. 类

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

Spring Boot拦截器Interceptor与过滤器Filter详细教程(示例详解)

《SpringBoot拦截器Interceptor与过滤器Filter详细教程(示例详解)》本文详细介绍了SpringBoot中的拦截器(Interceptor)和过滤器(Filter),包括它们的... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)详细教程1. 概述1