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. 3-2if条件结构

    不同条件做不同的操作.例如满100就减去20 条件结构 package com.imooc.operator; public class ConditionDemo1 { public static ...

  2. 7.11实习培训日志-Git Linux

    Git git子模块 先在GitHub创建两个空的respository,一个super_project和一个sub_project. 然后在git bash中向库中写入一些文件. 在super_pr ...

  3. HDU - 1071 - The area - 高斯约旦消元法 - 自适应辛普森法积分

    http://acm.hdu.edu.cn/showproblem.php?pid=1071 解一个给定三个点的坐标二次函数某区域的积分值. 设出方程之后高斯消元得到二次函数.然后再消元得到直线. 两 ...

  4. 阿里云的opensearch

    官方文档:https://help.aliyun.com/document_detail/29104.html?spm=a2c4g.11186623.6.544.5215187be2TnnD

  5. Event事件的三个阶段

    转自www.w3school.com.cn/htmldom/event_bubbles.asp 在 2 级 DOM标准中,事件传播分为三个阶段: 第一,捕获阶段.事件从 Document 对象沿着文档 ...

  6. 异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)

    http://www.cnblogs.com/panjun-Donet/archive/2009/03/03/1284700.html 让我们来看看同步异步的区别: 同步方法调用在程序继续执行之前需要 ...

  7. 选择Go语言的12个理由

    编者按:多核化和集群化是互联网时代的典型特征,那语言需要哪些特性来应对这些特征呢?多数语言在语法层面并不直接支持协程,而通过库的方式支持的协程的功能也并不完整,比如仅仅提供协程的创建.销毁与切换等能力 ...

  8. AFN的使用

    http网络库是集XML解析,Json解析,网络图片下载,plist解析,数据流请求操作,上传,下载,缓存等网络众多功能于一身的强大的类库.最新版本支持session,xctool单元测试.网络获取数 ...

  9. C#:索引

    1. 什么是索引 索引是一组get和set访问器,类似于属性的访问器. 2. 索引和属性 和属性一样,索引不用分配内存来存储 索引和属性都主要被用来访问其他数据成员,这些成员和它们关联,它们为这些成员 ...

  10. Flutter中的可滚动列表组件-PageView

    PageVIew,可滚动的视图列表组件,而且每一个子组件的大小都和视图窗口大小一样. 属性: controller -> PageController 用于控制视图页面滚动到的位置 childr ...