The Request

HTTP Protocol Parameters

所有的HTTP Protocol Parameters都会放在一个Map中, 可以通过getParameterMap得到. 对于Query String和Post Body中的请求, 会将两者放在同一个set中, Query String的顺序靠前.

query string: a = hello
post body: a = goodbye & a = world
result set: a = (hello, goodbye, world)

而通过GET方式拼在url后面的参数不会在这里体现, 是通过getRequestURI()和getPathInfo()得到的.

如果符合下列情况, 则可以在参数Map中得到参数:

  1. HTTP or HTTPS
  2. HTTP Method: POST
  3. Content Type: application/x-www-form-urlencoded
  4. Servlet被正确创建和实例化, 并调用getParameters方法族.

如果不符合以上条件, 还可以从Request的InputStream中读取, 而满足条件后InputStream不能读出数据.

File Upload

如果Request的Type是"multipart/form-data", 并且处理的servlet上加了"@MultipartConfig", 那么HttpServletRequest可以通过以下函数处理文件上传:

public Collection<Part> getParts()
public Part getPart(String name).

并且每一个Part都可以取的头信息, Type, 并通过getInputStream取的内容.

又因为使用了form-data的形式, 其实也可以通过getParameter的方式得到内容.

Attributes

Attributes是和Request相关的信息, 但是可以由container访问到, 比如可以使用在两个servlet的通信中, 可以通过下列方法访问. 一般Attributes的命名也使用倒序的文件结构名.

getAttribute
getAttributeNames
setAttribute

Headers

Request Path Elements

Request Path Elements包含几个部分, 有:

  • Context Path
  • Servlet Path
  • PathInfo

requestURI = contextPath + servletPath + pathInfo

Servlet的配置信息:

Context Path /catalog

Servlet Mapping Pattern: /lawn/*
Servlet: LawnServlet Servlet Mapping Pattern: /garden/*
Servlet: GardenServlet Servlet Mapping Pattern: *.jsp
Servlet: JSPServlet

访问的URL示例:

/catalog/lawn/index.html ContextPath: /catalog
ServletPath: /lawn
PathInfo: /index.html /catalog/garden/implements/ ContextPath: /catalog
ServletPath: /garden
PathInfo: /implements/ /catalog/help/feedback.jsp ContextPath: /catalog
ServletPath: /help/feedback.jsp
PathInfo: null

Path Translation Methods

可以通过两个函数得到真实的Servlet对应的文件系统的信息:

  • ServletContext.getRealPath
  • HttpServletRequest.getPathTranslated

返回本地的文件系统的路径, 如果是远程或者是得不到则返回null.

Resources inside the META-INF/resources directory of JAR file must be

considered only if the container has unpacked them from their containing JAR file

when a call to getRealPath() is made, and in this case MUST return the unpacked

location.

SSL Attributes

如果Request使用了secure protocol, 如HTTPS. 下列信息必须由Web Container暴露给Servlet

Attribute Attribute Name Java Type
cipher suite javax.servlet.request.cipher_suite String
bit size of the algorithm javax.servlet.request.key_size Integer
SSL session id javax.servlet.request.ssl_session_id String

Lifetime of the Request Object

Each request object is valid only within the scope of a servlet’s service method, or

within the scope of a filter’s doFilter method, unless the asynchronous processing

is enabled for the component and the startAsync method is invoked on the request

object.

Servlet The Request的更多相关文章

  1. Servlet的Request.getInputStream()只能读取一次问题

    Servlet的Request.getInputStream()只能读取一次问题 这个星期公司的项目接口进行改造,公司的接口有的采用了WebService的方式,有的使用的是Http协议+Servle ...

  2. 过滤器将获取到的内容注入到servlet的request中

    过滤器将获取到的内容注入到servlet的request中

  3. javaWeb核心技术第七篇之HTTP、Tomcat、Servlet、Request和Response

    - Web服务器 - 概念: - web资源: "英文直译"网"的意思 资源:一切数据文件 web资源:通过网络可以访问到的资源,通常指的是一切放在服务器上的文件&quo ...

  4. Servlet技术——request、respone详解

    Servlet之request.respone详解 Request (一) 概述 request是Servlet.service()方法的一个参数,在客户端发出每个请求时,服务器都会创建一个reque ...

  5. Web开发-Servlet&HTTP&Request

    <!doctype html>02 - JavaEE - Servlet&HTTP&Request figure:first-child { margin-top: -20 ...

  6. servlet 之request

    request对象中其他功能     一.转发和包含         转发==>用于一个servlet和一个jsp合作处理             servlet用于处理逻辑.jsp用于显示   ...

  7. javaWeb中 servlet 、request 、response

    1.Servlet (1)Servlet是JavaEE的一个动态web资源开发技 术,就是在服务器上运行的小程序,这个小程序是由服务器调用的,服务器为了能调用这个小程序,就要求这样的程序必须实现一个S ...

  8. Servlet的request应用案例

    request部分用法如代码: AServlet package cn.yzu; import java.io.IOException; import javax.servlet.ServletExc ...

  9. Servlet(Response,Request)

    1.response控制码表的3种方法:输出1; 2,文件下载 3.控制浏览器定时刷新网页(REFRESH) 4.控制浏览器缓存当前文档内容 5. 通过response实现请求重定向. 6.setHe ...

  10. Java Servlet的request使用的编码引发的思考 以及解决方法

    如果我们用浏览器填写了中文,而在服务器Servlet上没有进行编码设置,那么将会出现乱码. 出现乱码的原因是:浏览器发送的文字是以UTF-8编码发送的,然后调用request.getParameter ...

随机推荐

  1. dockerfile:制作tomcat镜像+javaweb

    FROM ubuntu:14.10 MAINTAINER linx #把java与tomcat添加到容器中,Add会解压 ADD jdk-8u151-linux-x64.tar.gz /usr/loc ...

  2. 2.1-2.2 HBase数据存储

    一.HBase数据检索流程 一篇介绍HBase数据读写流程的解析的博文:http://hbasefly.com/2016/12/21/hbase-getorscan/?wsfatm=uqvhl3 1. ...

  3. 3 pyspark学习---sparkContext概述

    1 Tutorial Spark本身是由scala语言编写,为了支持py对spark的支持呢就出现了pyspark.它依然可以通过导入Py4j进行RDDS等操作. 2 sparkContext (1) ...

  4. linux中消息队列<一>

    1 概念 (1)链表式结构组织,存放于内核. (2)通过队列标识来引用. (3)通过一个消息类型来索引指定的数据 2 创建消息队列 #include <sys/msg.h> int msg ...

  5. Flutter实战视频-移动电商-34.列表页_小BUG的修复

    34.列表页_小BUG的修复 当高粱酒的子类没有数据返回的时候就会报错. 解决接口空数据报错的问题 没有数据的时候,给用户一个友好的提示, 我们没有数据的时候还要告诉用户,提示一下他没有数据,在我们的 ...

  6. HTML学习笔记(一)HTML的一些概念区别

    HTML HTML 指超文本标记语言.在 HTML 4 中,有若干的标签和属性是被废弃的,替换成style对应的属性 应该避免使用下面这些标签和属性: 标签 描述 style <center&g ...

  7. 利用StringBuffer来替换内容

    package com.test.java; public class StringBufferTest { public static void main(String[] args) { Stri ...

  8. hrbust1444 逃脱 【BFS】

    Description  这是mengxiang000和Tabris来到幼儿园的第四天,幼儿园老师在值班的时候突然发现幼儿园某处发生火灾,而且火势蔓延极快,老师在第一时间就发出了警报,位于幼儿园某处的 ...

  9. Mybatis源码解析(二)

    根据上篇的代码跟踪mybatis已经ready好 SqlSessionFactory了,下面就是我们怎么去通过这个factory去获取sqlSession会话了,继续扒源码: mybatis-spri ...

  10. 寻找Windows下MySQL的错误日志

    https://blog.csdn.net/dreamcs/article/details/53502625