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. hdu-1597

    find the nth digit Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  2. UVa 1631 Locker (DP)

    题意:有一个 n 位密码锁,每位都是0-9,可以循环旋转.同时可以让1-3个相邻数字进行旋转一个,给定初始状态和目状态,问你最少要转多少次. 析:很明显的一个DP题.dp[i][j][k] 表示前 i ...

  3. js页面的全屏展示和退出全屏显示

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...

  4. Maven面试必备

    Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Depen ...

  5. Java判断一个数是不是快乐数

    快乐数的定义: 快乐数(happy number)有以下的特性: 在给定的进位制下,该数字所有数位(digits)的平方和,得到的新数再次求所有数位的平方和,如此重复进行,最终结果必为1. 以十进制为 ...

  6. js点击复制某段文本方法

    百度很多说这个方法 window.clipboardData.setData ("Text", "demo"); 实践证明只有ie支持. 改成下面这个方式来复制 ...

  7. 渲染路径-u3d渲染路径比较

    Unity支持不同的渲染路径.应具体取决于你的游戏内容和目标平台/硬件来选择使用哪一个.不同的渲染路径有不同的特点和性能特点,主要影响灯光和阴影.        项目所使用的渲染路径在Player S ...

  8. apringboot aop权限控制

    + 定义切面: ···@Aspect @Component public class LoginInterceptor { @Around("@annotation(lock)") ...

  9. 推荐 VS2010入门教程—鸡啄米

    http://www.jizhuomi.com/catalog.asp?tags=VS2010 推荐 VS2010入门教程—鸡啄米,真的非常使用和经典!

  10. bootstrapValidator 常用的验证

    $("#表单ID").bootstrapValidator({ message: 'This value is not valid', excluded: [':disabled' ...