servletrequest由tomcat创建传递给servlet的service函数,包含了客户端的信息。
httpServletRequest是基于http协议的
servletrequest相关函数介绍
- Object getAttribute(String name);void setAttribute(String name, Object o);void removeAttribute(String name)返回域对象。这个域对象跟context的类似,只是针对于requestdespatcher中的函数来调用的。
- Enumeration getAttributeNames()同上
- String getCharacterEncoding()头部信息,编码方式。
- void setCharacterEncoding(String env)同上,只是设置编码方法
- int getContentLength()调取内容长度,如果长度位置返回-1
- long getContentLengthLong()同上
- String getContentType()内容的类型
- ServletInputStream getInputStream()获取请求的输入流
- Enumeration getParameterNames();String getParameter(String name);String[] getParameterValues(String name);Map<String,String[]> getParameterMap()获取query对象信息
- String getProtocol()返回协议例如:HTTP/1.1
- String getScheme()例如Http
- String getServerName()
- int getServerPort()打开端口号
- BufferedReader getReader()打开字符输入流
- String getRemoteAddr()
- String getRemoteHost()
- void removeAttribute(String name);Enumeration getLocales()返回客户端的local信息Accept-Language ,如果没有直接调用本都的
- boolean isSecure()是否采用安全协议
- RequestDispatcher getRequestDispatcher(String path)调用请求处理器
- ServletContext getServletContext()调用环境
- AsyncContext startAsync();AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse)异步模式,还不是很了解
- boolean isAsyncStarted()检测是否在异步模式
- boolean isAsyncSupported()是否支持异步
- AsyncContext getAsyncContext()返回进入的异步模式
- DispatcherType getDispatcherType()调度器相关,与listener相关
httpservletrequest相关函数介绍
- String getAuthType() 认证方式:有三种认证方式:基本、表单、 客户端认证、其他诊断认证。如果无认证null。对认证暂没有学习,不深入。
- Cookie[] getCookies():返回cookie,会有cookie的专题。cookie是服务器发给客户端的信息,进行标记
- long getDateHeader(String name)返回时间对象,例如If-Modified-Since.
- String getHeader(String name)返回header为name的字符对象。记住name是大小写敏感的
- Enumeration getHeaders(String name)返回多值的对象
- Enumeration getHeaderNames()返回所有头部
- int getIntHeader(String name)返回正数头部
- String getMethod()返回方法
- String getPathInfo()返回地址信息,这个用在地址匹配的目录的时候用,返回servlet地址与query之间的信息,以/开头
<servlet>
<servlet-name>xxxa</servlet-name>
<servlet-class>AServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xxxa</servlet-name>
<url-pattern>/aservlet/*</url-pattern>
</servlet-mapping>
http://localhost:8080/web11/aservlet/234234/4312
print:/234234/4312
复制代码
- String getPathTranslated()将extra地址信息组成真正的地址。没啥用好像。例如上面的返回D:/java_temp/plug1/out/artifacts/web11_war_exploded/234234/4312
- String getContextPath()返回servlet地址,如果是root地址,返回空字符串。可能有多个与context的getContextPath()对象的返回值可能不同
- String getRemoteUser()认证之后的名字
- boolean isUserInRole(String role)认证相关的
- Principal getUserPrincipal()认证相关的安全等级
- String getRequestedSessionId()返回sessionID
- String getRequestURI()返回协议与query之间东西
- StringBuffer getRequestURL()返回完整的url,不包含query信息
- String getServletPath()返回servlet地址,以/开头
- HttpSession getSession(boolean create)返回一个session,如果没有就根据create的值是否创建一个新的
- HttpSession getSession()等同于HttpSession getSession(true)
- String changeSessionId()返回一个新的session
- boolean isRequestedSessionIdValid()session相关
- isRequestedSessionIdFromCookie
- boolean isRequestedSessionIdFromURL()
- boolean authenticate(HttpServletResponse response)授权相关
- void logout();void login(String username, String password)
- Collection getParts();Part getPart(String name)这两个函数主要针对于post命令中 multipart/form-data的处理。
- T upgrade(Class handlerClass)这个是协议升级,用一个类对象返回一个新的对象。好像没啥用
相关类RequestDispatcher
RequestDispatcher是一个请求资源调度器,在request中调用相关servlet与jsp程序。里面有两个函数:
- void forward(ServletRequest request,ServletResponse response)forward函数在response提交之前进行调用,并且会清理数据缓存,不清理状态码与头部
- void include(ServletRequest request,ServletResponse response)函数不改变response的头部与状态码。
原文
https://juejin.im/post/5d03b77b6fb9a07ec56e755f