Servlet-Request

这篇具有很好参考价值的文章主要介绍了Servlet-Request。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、预览

在上一篇Servlet体系结构中,我们初步了解了怎么快速本篇将介绍Servlet中请求Request的相关内容,包括Request的体系结构,Request常用API。

二、Request体系结构

Servlet-Request,servlet

我们注意到我们定义的Servlet类若实现Servlet接口时,请求参数是ServletRequest类型的,若继承HttpServlet抽象类时,请求参数是HttpServletRequest类弄的,而这两个请求参数的类型都接口类型。在Servlet执行流程一文中,我们讲到过Servlet中的service方法是由Web服务器(如Tomcat)调用的,那么它在调用方法时传递的参数不可能是接口类型的,必然有其实现类。如上图,在Tomcat中,这一实现类就是RequestFacade类。

三、常用API

API的使用总是简单的,直接看如下代码与注释

package com.byhuang;

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.BufferedReader;
import java.io.IOException;

@WebServlet("/req1")
public class ServletRequestDemo extends HttpServlet {

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

        // 1 请求行
        // 获取请求方式
        String method = req.getMethod();
        System.out.println(method);
        // 获取虚拟目录(项目访问路径)
        String contextPath = req.getContextPath();
        System.out.println(contextPath);
        // 获取URL(统一资源定位符)
        StringBuffer requestURL = req.getRequestURL();
        System.out.println(requestURL);
        // 获取URI(统一资源标识符)
        String requestURI = req.getRequestURI();
        System.out.println(requestURI);
        // 获取请求参数
        String queryString = req.getQueryString();
        System.out.println(queryString);

        // 2 请求头
        String header = req.getHeader("user-agent");
        System.out.println(header);


    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 3 请求体
        BufferedReader reader = req.getReader();
        String s = reader.readLine();
        System.out.println(s);
    }
}
四、通用方式获取请求参数

对于GET请求和POST请求,HttpServletRequest接口为我们提供了通用的获取参数的方法,具体使用见下面的代码与注释。

package com.byhuang;

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.BufferedReader;
import java.io.IOException;
import java.util.Map;

@WebServlet("/req2")
public class ServletRequestDemo2 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get...");
        // getParameterMap 获取所有参数Map集合
        Map<String, String[]> parameterMap = req.getParameterMap();
        for (String key : parameterMap.keySet()) {
            System.out.println(key);
            String[] values = parameterMap.get(key);
            for (String value : values) {
                System.out.println(value);
            }
        }

        System.out.println("-----------");
        // getParameterValue 根据名称获取参数值(数组)
        String[] hobbies = req.getParameterValues("hobby");
        for (String hobby : hobbies) {
            System.out.println(hobby);
        }

        // getParameter 根据名称获取参数值(单个)
        String password = req.getParameter("password");
        System.out.println(password);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get...");
        // getParameterMap 获取所有参数Map集合
        Map<String, String[]> parameterMap = req.getParameterMap();
        for (String key : parameterMap.keySet()) {
            System.out.println(key);
            String[] values = parameterMap.get(key);
            for (String value : values) {
                System.out.println(value);
            }
        }

        System.out.println("-----------");
        // getParameterValue 根据名称获取参数值(数组)
        String[] hobbies = req.getParameterValues("hobby");
        for (String hobby : hobbies) {
            System.out.println(hobby);
        }

        System.out.println("-----------");
        // getParameter 根据名称获取参数值(单个)
        String password = req.getParameter("password");
        System.out.println(password);
    }
}

了解完Servlet Request的相关内容后,请读者继续阅读Servlet Response的相关知识。文章来源地址https://www.toymoban.com/news/detail-786882.html

到了这里,关于Servlet-Request的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request

    前段时间在开发Spring Boot项目时,遇到了一个很烦人的错误,提示为\\\"org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location\\\"。在经过仔细分析和排查后,我终于找到了解决办法。下面我将分享我解决这个

    2024年02月10日
    浏览(55)
  • Failed to parse multipart servlet request; nested exception is java.lang.Runtime

    1.问题原因 在 Linux 系统中,Spring Boot 应用启动时,会在操作系统的 /tmp 目录下生成一个 tomcat(或 undertow )临时目录,上传的文件会先转换成临时文件保存在这个文件夹下面。 由于临时 /tmp 目录下的文件,在长时间(10天)没有使用的情况下,Linux系统执行了 tmp 目录清理服务

    2024年02月08日
    浏览(52)
  • 前端vue elementUI upload上传组件封装&多文件上传&进度条,后端servlet request.getPart()接收文件信息

    选中多个文件上传 通过 axios请求 onUploadProgress 方法监听 on-progress on-success 用这两个钩子函数实现进度条 下面有对应的函数。 本文是每个文件一个请求上传 也可以用一个请求上传多个文件,需要将文件遍历添加到 form 表单中,后端用 request.getParts(); 获取集合,有需要的可以改

    2024年02月11日
    浏览(58)
  • Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)

    web 服务器 :可以被浏览器访问到的服务器 常见的 web 服务器: tomcat:中小型的服务器软件,免费开源,支持 JSP 和 Servlet apache 公司的产品 WebLogic:Oracle 公司的产品,是目前应用最广泛的 Web 服务器,支持 J2EE 规范。WebLogic 是用于开发、集成、部署和管理大型分布式 Web 应用

    2024年02月02日
    浏览(81)
  • Failed to parse multipart servlet request; nested exception is java.io.IOException,文件上传异常的问题如何解决

    背景: 有时候我们上传文件时会遇到这种报错, \\\"Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [C:\\\\Users\\\\XXXX\\\\AppData\\\\Local\\\\Temp\\\\tomcat.2460390372185321891.8082\\\\work\\\\Tomcat\\\\localhost\\\\ROOT] is not valid\\\"。 导致上传文件失败。 原因: 这种问题出现的原

    2024年02月03日
    浏览(44)
  • Servlet | Servlet原理、开发第一个带有Java小程序Servlet

    ✅作者简介:一位材料转码农的选手,希望一起努力,一起进步!  📃个人主页:@每天都要敲代码的个人主页 🔥系列专栏:Web后端 | Servlet 目录 一:模拟实现Servlet 二:开发第一个带有Java小程序Servlet【重点】 有了上一章节的分析,我们来模拟实现以下Servlet;下面先分析一

    2024年02月02日
    浏览(46)
  • 【Servlet】Servlet 详解(使用+原理)

    Servlet(Server Applet 的缩写,全称 Java Servlet): 是 用 Java 编写的服务器端程序 。其主要功能在于交互式地浏览和修改数据, 生成动态 Web 内容 。狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解

    2024年02月09日
    浏览(36)
  • Servlet p1 Servlet的实现

    学习课程: 【这可能是B站讲的最好的Servlet教程,5小时打通Servlet全套教程丨2022最新版,轻松掌握servlet基础+案例实操】 https://www.bilibili.com/video/BV1Kr4y1V7ZE/?share_source=copy_webvd_source=2c07d62293f5003c919b2df9b2e0549e ​Servlet是Server与Applet的缩写,是服务端小程序的总思。使用Java语言编写

    2024年02月08日
    浏览(38)
  • Servlet p2 Servlet的生命周期

    学习课程: 【这可能是B站讲的最好的Servlet教程,5小时打通Servlet全套教程丨2022最新版,轻松掌握servlet基础+案例实操】 https://www.bilibili.com/video/BV1Kr4y1V7ZE/?share_source=copy_webvd_source=2c07d62293f5003c919b2df9b2e0549e ​Servleti没有main()方法,不能独立运行,它的运行完全由Servlet引擎来控制

    2024年02月11日
    浏览(45)
  • javax.servlet 和 jakarta.servlet的关系和使用tomcat部署 jakarta.servlet

    1,javax.servlet 和 jakarta.servlet的关系 javax.servlet 和 jakarta.servlet 是 Java Servlet API 的两个版本。 Java Servlet API 是由 Sun Microsystems(现在是 Oracle)开发和维护的,其包名以 javax.servlet 开头。从 Java EE 8 开始,Servlet API 的维护权转交给了 Eclipse Foundation 的 Jakarta EE 社区,因此,在最新的

    2024年01月20日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包