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. linux使用curl进行WebService接口测试

    参考 :linux使用curl进行接口测试 使用curl 命令模拟POST/GET请求 Linux命令发送Http的get或post请求(curl和wget两种方法) curl 模拟 GET\POST ...

  2. SSE2介绍及其简单用法举例

    http://blog.csdn.net/fengbingchun/article/details/18515241

  3. Linux下配置 禅道 (项目管理系统)

    1.官网下载源码 2.解析一个新的子域名,然后到linux服务器上新建一个站点 3.将下载的文件上传至linux服务器(新建站点的时候已经在 /home/wwwroot/ 里建好了域名对应的文件夹,将 ...

  4. 如何成为一个优秀的高级C++程序员

    C++这门语言从诞生到今天已经经历了将近 30 个年头.不可否认,它的学习难度都比其它语言较高.而它的学习难度,主要来自于它的复杂性.现在 C++ 的使用范围比以前已经少了很多,java.C#.pyt ...

  5. Tarjan找桥和割点与点连通分量与边连通分量【未成形】

    之前只学了个强连通Tarjan算法,然后又摸了缩点操作: 然后今天在lightoj摸了一道模板题,是求所有桥的题: 然后发现,要把:割点,割点集合,双连通,最小割边集合(桥),点连通分量,边连通分量都 ...

  6. POJ3414(BFS+[手写队列])

    贴一发自己写的手写队列-.. #include <stdio.h> #include <iostream> #include <string.h> #include ...

  7. Codevs 1523 地精部落

    1523 地精部落 省队选拔赛  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 大师 Master 题解       题目描述 Description 传说很久以前,大地上居住 ...

  8. 初学Django框架知识

    首先了解什么事HTTP协议; 1.浏览器往服务器发的 请求(request): 请求消息的格式: 请求方法 路径 HTTP/1.1\r\n k1:v1\r\n k2:v2\r\n \r\n 请求数据 ...

  9. web前端篇:JavaScript正则表达式

    目录 JavaScript正则表达式 1.创建正则表达式 1.1方法1:直接量语法 1.2 方法2:创建RegExp对象的语法 1.3 区别: 1.4正则表达式使用 2.正则对象的属性 2.1.属性 ...

  10. IOS正则表达式 (身份证、电话、汉字等常用条件筛选)

    下面的正则列表   替换对应的正则规则 那个字符串就可以了  例如: //正则规则 NSString *regex = @"^((13[0-9])|(147)|(17[0-9])|(15[^ ...