1. /**
  2. * Defines an object to provide client request information to a servlet. The
  3. * servlet container creates a <code>ServletRequest</code> object and passes
  4. * it as an argument to the servlet's <code>service</code> method.
  5. * <p>A <code>ServletRequest</code> object provides data including
  6. * parameter name and values, attributes, and an input stream.
  7. * Interfaces that extend <code>ServletRequest</code> can provide
  8. * additional protocol-specific data (for example, HTTP data is
  9. * provided by {@link javax.servlet.http.HttpServletRequest}.
  10. * @author Various
  11. * @version $Version$
  12. * @see javax.servlet.http.HttpServletRequest
  13. */
  14. //定义一个对象将客户端的请求信息传递给Servlet,Servlet 容器会创建一个ServletRequest对象并床的它的参数给Servlet的service方法
  15. //一个ServletRequest对象提供的数据包括参数name和value,属性和一个输入流
  16. //一个接口继承了ServletRequest会提供额外的特别的协议数据
  17. public interface ServletRequest {
  18. /**
  19. * Returns the value of the named attribute as an <code>Object</code>,
  20. * or <code>null</code> if no attribute of the given name exists.
  21. * <p> Attributes can be set two ways. The servlet container may set
  22. * attributes to make available custom information about a request.
  23. * For example, for requests made using HTTPS, the attribute
  24. * <code>javax.servlet.request.X509Certificate</code> can be used to
  25. * retrieve information on the certificate of the client. Attributes
  26. * can also be set programatically using
  27. * {@link ServletRequest#setAttribute}. This allows information to be
  28. * embedded into a request before a {@link RequestDispatcher} call.
  29. * <p>Attribute names should follow the same conventions as package
  30. * names. This specification reserves names matching <code>java.*</code>,
  31. * <code>javax.*</code>, and <code>sun.*</code>.
  32. * @param name a <code>String</code> specifying the name of the attribute
  33. * @return an <code>Object</code> containing the value of the attribute, or <code>null</code> if
  34. * the attribute does not exist
  35. */
  36. //获得name的属性对象,
  37. public Object getAttribute(String name);
  38. /**
  39. * Returns an <code>Enumeration</code> containing the
  40. * names of the attributes available to this request.
  41. * This method returns an empty <code>Enumeration</code>
  42. * if the request has no attributes available to it.
  43. * @return an <code>Enumeration</code> of strings
  44. * containing the names of the request's attributes
  45. */
  46. //返回一个枚举包含了这个Request有效的属性的name
  47. public Enumeration getAttributeNames();
  48. /**
  49. * Returns the name of the character encoding used in the body of this
  50. * request. This method returns <code>null</code> if the request
  51. * does not specify a character encoding
  52. * @return a <code>String</code> containing the name of
  53. * the character encoding, or <code>null</code>if the request does not specify a character encoding
  54. */
  55. //返回这个Request请求的body所使用的字符类型
  56. public String getCharacterEncoding();
  57.  
  58. /**
  59. * Overrides the name of the character encoding used in the body of this
  60. * request. This method must be called prior to reading request parameters
  61. * or reading input using getReader().
  62. * @param env a <code>String</code> containing the name of the character encoding.
  63. * @throws java.io.UnsupportedEncodingException if this is not a valid encoding
  64. */
  65. //覆盖这个请求body中的字符类型
  66. public void setCharacterEncoding(String env) throws java.io.UnsupportedEncodingException;
  67. /**
  68. * Returns the length, in bytes, of the request body
  69. * and made available by the input stream, or -1 if the
  70. * length is not known. For HTTP servlets, same as the value
  71. * of the CGI variable CONTENT_LENGTH.
  72. * @return an integer containing the length of the
  73. * request body or -1 if the length is not known
  74. */
  75. //返回输入流的长度
  76. public int getContentLength();
  77. /**
  78. * Returns the MIME type of the body of the request, or
  79. * <code>null</code> if the type is not known. For HTTP servlets,
  80. * same as the value of the CGI variable CONTENT_TYPE.
  81. *
  82. * @return a <code>String</code> containing the name
  83. * of the MIME type of
  84. * the request, or null if the type is not known
  85. *
  86. */
  87. //返回请求体中的文件类型
  88. public String getContentType();
  89. /**
  90. * Retrieves the body of the request as binary data using
  91. * a {@link ServletInputStream}. Either this method or
  92. * {@link #getReader} may be called to read the body, not both.
  93. * @return a {@link ServletInputStream} object containing the body of the request
  94. * @exception IllegalStateException if the {@link #getReader} method has already been called for this request
  95. * @exception IOException if an input or output exception occurred
  96. */
  97. //检索请求体中的二进制数据
  98. public ServletInputStream getInputStream() throws IOException;
  99. /**
  100. * Returns the value of a request parameter as a <code>String</code>,
  101. * or <code>null</code> if the parameter does not exist. Request parameters
  102. * are extra information sent with the request. For HTTP servlets,
  103. * parameters are contained in the query string or posted form data.
  104. * <p>You should only use this method when you are sure the
  105. * parameter has only one value. If the parameter might have
  106. * more than one value, use {@link #getParameterValues}.
  107. * <p>If you use this method with a multivalued
  108. * parameter, the value returned is equal to the first value
  109. * in the array returned by <code>getParameterValues</code>.
  110. * <p>If the parameter data was sent in the request body, such as occurs
  111. * with an HTTP POST request, then reading the body directly via {@link
  112. * #getInputStream} or {@link #getReader} can interfere
  113. * with the execution of this method.
  114. * @param name a <code>String</code> specifying the
  115. * name of the parameter
  116. * @return a <code>String</code> representing the
  117. * single value of the parameter
  118. * @see #getParameterValues
  119. */
  120. //返回参数name的值,当parameter有一个值时,有多个值时使用getParameterValues
  121. public String getParameter(String name);
  122. /**
  123. * Returns an <code>Enumeration</code> of <code>String</code>
  124. * objects containing the names of the parameters contained
  125. * in this request. If the request has
  126. * no parameters, the method returns an
  127. * empty <code>Enumeration</code>.
  128. * @return an <code>Enumeration</code> of <code>String</code>
  129. * objects, each <code>String</code> containing
  130. * the name of a request parameter; or an
  131. * empty <code>Enumeration</code> if the
  132. * request has no parameters
  133. */
  134. //返回所有参数的name作为一个枚举
  135. public Enumeration getParameterNames();
  136. /**
  137. * Returns an array of <code>String</code> objects containing
  138. * all of the values the given request parameter has, or
  139. * <code>null</code> if the parameter does not exist.
  140. * <p>If the parameter has a single value, the array has a length
  141. * of 1.
  142. * @param name a <code>String</code> containing the name of
  143. * the parameter whose value is requested
  144. * @return an array of <code>String</code> objects
  145. * containing the parameter's values
  146. * @see #getParameter
  147. *
  148. */
  149. //返回name参数的所有值
  150. public String[] getParameterValues(String name);
  151.  
  152. /** Returns a java.util.Map of the parameters of this request.
  153. * Request parameters
  154. * are extra information sent with the request. For HTTP servlets,
  155. * parameters are contained in the query string or posted form data.
  156. * @return an immutable java.util.Map containing parameter names as
  157. * keys and parameter values as map values. The keys in the parameter
  158. * map are of type String. The values in the parameter map are of type
  159. * String array.
  160. */
  161. public Map getParameterMap();
  162. /**
  163. * Returns the name and version of the protocol the request uses
  164. * in the form <i>protocol/majorVersion.minorVersion</i>, for
  165. * example, HTTP/1.1. For HTTP servlets, the value
  166. * returned is the same as the value of the CGI variable
  167. * <code>SERVER_PROTOCOL</code>.
  168. */
  169. //返回请求协议的name和版本
  170. public String getProtocol();
  171. /**
  172. * Returns the name of the scheme used to make this request, for example,
  173. * <code>http</code>, <code>https</code>, or <code>ftp</code>.
  174. * Different schemes have different rules for constructing URLs,
  175. * as noted in RFC 1738.
  176. * @return a <code>String</code> containing the name
  177. * of the scheme used to make this request
  178. */
  179. //返回协议名称 http、https、ftp
  180. public String getScheme();
  181. /**
  182. * Returns the host name of the server to which the request was sent.
  183. * It is the value of the part before ":" in the <code>Host</code>
  184. * header value, if any, or the resolved server name, or the server IP address.
  185. * @return a <code>String</code> containing the name
  186. */
  187. //获得请求发送的服务器名称
  188. public String getServerName();
  189. /**
  190. * Returns the port number to which the request was sent.
  191. * It is the value of the part after ":" in the <code>Host</code>
  192. * header value, if any, or the server port where the client connection
  193. * was accepted on.
  194. * @return an integer specifying the port number
  195. */
  196. //获得请求发送的端口
  197. public int getServerPort();
  198. /**
  199. * Retrieves the body of the request as character data using
  200. * a <code>BufferedReader</code>. The reader translates the character
  201. * data according to the character encoding used on the body.
  202. * Either this method or {@link #getInputStream} may be called to read the body, not both.
  203. * @return a <code>BufferedReader</code> containing the body of the request
  204. * @exception UnsupportedEncodingException if the character set encoding used is not supported and the
  205. * text cannot be decoded
  206. * @exception IllegalStateException if {@link #getInputStream} method has been called on this request
  207. * @exception IOException if an input or output exception occurred
  208. * @see #getInputStream
  209. */
  210. //检索请求body数据作为字符数据使用bufferedReader
  211. public BufferedReader getReader() throws IOException;
  212. /**
  213. * Returns the Internet Protocol (IP) address of the client
  214. * or last proxy that sent the request.
  215. * For HTTP servlets, same as the value of the
  216. * CGI variable <code>REMOTE_ADDR</code>.
  217. * @return a <code>String</code> containing the
  218. * IP address of the client that sent the request
  219. */
  220. //获得客户端或最后一次代理的IP地址
  221. public String getRemoteAddr();
  222. /**
  223. * Returns the fully qualified name of the client
  224. * or the last proxy that sent the request.
  225. * If the engine cannot or chooses not to resolve the hostname
  226. * (to improve performance), this method returns the dotted-string form of
  227. * the IP address. For HTTP servlets, same as the value of the CGI variable
  228. * <code>REMOTE_HOST</code>.
  229. * @return a <code>String</code> containing the fully
  230. * qualified name of the client
  231. */
  232. //获得发送请求的主机名或最后一次代理的主机名
  233. public String getRemoteHost();
  234. /**
  235. * Stores an attribute in this request.
  236. * Attributes are reset between requests. This method is most
  237. * often used in conjunction with {@link RequestDispatcher}.
  238. * <p>Attribute names should follow the same conventions as
  239. * package names. Names beginning with <code>java.*</code>,
  240. * <code>javax.*</code>, and <code>com.sun.*</code>, are
  241. * reserved for use by Sun Microsystems.
  242. *<br> If the object passed in is null, the effect is the same as
  243. * calling {@link #removeAttribute}.
  244. * <br> It is warned that when the request is dispatched from the
  245. * servlet resides in a different web application by
  246. * <code>RequestDispatcher</code>, the object set by this method
  247. * may not be correctly retrieved in the caller servlet.
  248. * @param name a <code>String</code> specifying
  249. * the name of the attribute
  250. * @param o the <code>Object</code> to be stored
  251. */
  252. //在请求中设置一个属性
  253. public void setAttribute(String name, Object o);
  254.  
  255. /**
  256. *
  257. * Removes an attribute from this request. This method is not
  258. * generally needed as attributes only persist as long as the request
  259. * is being handled.
  260. *
  261. * <p>Attribute names should follow the same conventions as
  262. * package names. Names beginning with <code>java.*</code>,
  263. * <code>javax.*</code>, and <code>com.sun.*</code>, are
  264. * reserved for use by Sun Microsystems.
  265. * @param name a <code>String</code> specifying
  266. * the name of the attribute to remove
  267. */
  268. //删除一个请求中的一个属性name
  269. public void removeAttribute(String name);
  270. /**
  271. * Returns the preferred <code>Locale</code> that the client will
  272. * accept content in, based on the Accept-Language header.
  273. * If the client request doesn't provide an Accept-Language header,
  274. * this method returns the default locale for the server.
  275. * @return the preferred <code>Locale</code> for the client
  276. */
  277. //
  278. public Locale getLocale();
  279. /**
  280. * Returns an <code>Enumeration</code> of <code>Locale</code> objects
  281. * indicating, in decreasing order starting with the preferred locale, the
  282. * locales that are acceptable to the client based on the Accept-Language header.
  283. * If the client request doesn't provide an Accept-Language header,
  284. * this method returns an <code>Enumeration</code> containing one
  285. * <code>Locale</code>, the default locale for the server.
  286. * @return an <code>Enumeration</code> of preferred <code>Locale</code> objects for the client
  287. */
  288.  
  289. public Enumeration getLocales();
  290. /**
  291. *
  292. * Returns a boolean indicating whether this request was made using a
  293. * secure channel, such as HTTPS.
  294. * @return a boolean indicating if the request was made using a
  295. * secure channel
  296. */
  297. //是否使用的安全性的通道
  298. public boolean isSecure();
  299. /**
  300. * Returns a {@link RequestDispatcher} object that acts as a wrapper for
  301. * the resource located at the given path.
  302. * A <code>RequestDispatcher</code> object can be used to forward
  303. * a request to the resource or to include the resource in a response.
  304. * The resource can be dynamic or static.
  305. * <p>The pathname specified may be relative, although it cannot extend
  306. * outside the current servlet context. If the path begins with
  307. * a "/" it is interpreted as relative to the current context root.
  308. * This method returns <code>null</code> if the servlet container
  309. * cannot return a <code>RequestDispatcher</code>.
  310. * <p>The difference between this method and {@link
  311. * ServletContext#getRequestDispatcher} is that this method can take a
  312. * relative path.
  313. * @param path a <code>String</code> specifying the pathname
  314. * to the resource. If it is relative, it must be
  315. * relative against the current servlet.
  316. * @return a <code>RequestDispatcher</code> object
  317. * that acts as a wrapper for the resource
  318. * at the specified path, or <code>null</code>
  319. * if the servlet container cannot return a
  320. * <code>RequestDispatcher</code>
  321. * @see RequestDispatcher
  322. * @see ServletContext#getRequestDispatcher
  323. */
  324. //
  325. public RequestDispatcher getRequestDispatcher(String path);
  326.  
  327. /**
  328. *
  329. * @deprecated As of Version 2.1 of the Java Servlet API,
  330. * use {@link ServletContext#getRealPath} instead.
  331. *
  332. */
  333.  
  334. public String getRealPath(String path);
  335.  
  336. /**
  337. * Returns the Internet Protocol (IP) source port of the client
  338. * or last proxy that sent the request.
  339. *
  340. * @return an integer specifying the port number
  341. *
  342. * @since 2.4
  343. */
  344. //获得IP端口
  345. public int getRemotePort();
  346. /**
  347. * Returns the host name of the Internet Protocol (IP) interface on
  348. * which the request was received.
  349. * @return a <code>String</code> containing the host
  350. * name of the IP on which the request was received.
  351. * @since 2.4
  352. */
  353. //获得请求的主机名
  354. public String getLocalName();
  355. /**
  356. * Returns the Internet Protocol (IP) address of the interface on
  357. * which the request was received.
  358. * @return a <code>String</code> containing the
  359. * IP address on which the request was received.
  360. * @since 2.4
  361. */
  362. //获取请求的服务的IP地址
  363. public String getLocalAddr();
  364. /**
  365. * Returns the Internet Protocol (IP) port number of the interface
  366. * on which the request was received.
  367. * @return an integer specifying the port number
  368. * @since 2.4
  369. */
  370. //端口
  371. public int getLocalPort();
  372.  
  373. }

ServletRequest的更多相关文章

  1. JavaWeb学习之Path总结、ServletContext、ServletResponse、ServletRequest(3)

    1.Path总结 1.java项目 1 File file = new File(""); file.getAbsolutePath(); * 使用java命令,输出路径是,当前j ...

  2. Java Servlet(四):Servlet接口service工作(ServletRequest,ServletResponse对象)(jdk7+tomcat7+eclipse)

    本篇将会记录,Servlet接收客户端传递来的参数信息,并返回信息使用的对象,及这些对象的函数相关用法. 还是在java ee工程中进行操作,在WebContent目录下创建一个login.jsp文件 ...

  3. javaWEB中的ServletRequest,ServletResponse的使用,及简化Servlet方法

    首先说一下ServletRequest,ServletResponse类的使用方法: public void service(ServletRequest request, ServletRespon ...

  4. 深入理解ServletRequest与ServletResponse

       请求和相应是Web交互最基本的模式,在Servlet中,分别用HttpServletRequest与HttpServletResponse来表示Http请求和响应.这两个类均来自javax.se ...

  5. ServletRequest中getReader()和getInputStream()只能调用一次的解决办法

    转载:http://blog.sina.com.cn/s/blog_870cd7b90101fg58.html 最近使用spring mvc做项目,数据格式是json,有一个功能是实现记录请求的参数, ...

  6. ServletRequest中getReader()和getInputStream()只能调用一次的解决办法(转)

    原文地址:http://liwx2000.iteye.com/blog/1542431 原文作者:liwx2000 为了提高项目安全性,拦截非法访问,要给项目增加了一个过滤器,拦截所有的请求,校验是否 ...

  7. ServletRequest接口召回总结

    <body> <form action="LoginServlet" method="post"> User:<input typ ...

  8. javaWEB总结(6):ServletRequest

    1.首先看ServletRequest的API javax.servlet Interface ServletRequest All Known Subinterfaces: HttpServletR ...

  9. HttpServletRequest和ServletRequest的区别

    servlet理论上可以处理多种形式的请求响应形式,http只是其中之一所以HttpServletRequest HttpServletResponse分别是ServletRequest和Servle ...

随机推荐

  1. Mac小技巧:强制退出程序的六种方法

    原帖地址: http://www.cnbeta.com/articles/175447.htm 1.使用键盘快捷键强制退出处于活跃状态的Mac程序 快捷键:Command+Option+Shift+E ...

  2. OpenCV +Python 制作画板

    效果图 画图工具实现 代码 运行结果 程序分析 窗体自由度 如何退出程序 滚动条相关 支持的事件 首先声明一下,本例思路不是博主原创,博主在前人的代码上进行了个性化的修改,制作了一个简单的画图工具.下 ...

  3. app控件唯一相对Xpath自动生成(增强版uiautomatorviewer)

    作者:cryanimal QQ:164166060 工具由来 前面的一篇博文较详细地介绍了uiautomatorviewer:扫描和分析Android应用程序的UI控件的工具. 熟悉控件获取的同学都知 ...

  4. eval和列表解析的一处陷阱

    >>> def f(): a=1 return [i+a for i in range(3)] >>> f() [1, 2, 3] >>> def ...

  5. Android初级教程:ViewPage使用详解

    转载本博客,请注明出处:http://blog.csdn.net/qq_32059827点击打开链接 ViewPage使用之一就是轮播广告,就以此为出发点,来详细解析一下ViewPage的使用和加载机 ...

  6. JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫

    JAVA之旅(三十四)--自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接 ...

  7. jQuery Ajax 使用 ($.ajax、$.post、$.get)

    项目中只要涉及到前后台的交互,数据状态之间的交互,ajax是必不可少的.一般项目中jquery方式的ajax用的还是比较多的.封装的比较好,用起来也顺手,兼容浏览器之间的差异. 操作的方式有三种: 1 ...

  8. 对Bitmap的内存优化

    在Android应用里,最耗费内存的就是图片资源.而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常.所以,对于图 ...

  9. scala学习笔记2(类,继承,抽象类)

    class Person{ // _ 是占位符; var name : String = _ val age : Int = 27 // private[this] 定义的内容无法外部使用,起到保护作 ...

  10. iOS中 HTTP/Socket/TCP/IP通信协议详解 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博 简单介绍: // OSI(开放式系统互联), 由ISO(国际化标准组织)制定 // 1. 应用层 // 2. 表示层 ...