与Servlet相关的接口
Posted yusiming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了与Servlet相关的接口相关的知识,希望对你有一定的参考价值。
ServletConfig
一个ServletConfig对象对应一个特定的一个Servlet的一段配置信息,只能获取servlet的初始化参数:
1 <servlet> 2 3 <servlet-name>HelloServlet</servlet-name> 4 5 <servlet-class>yu.servlet.HelloServlet</servlet-class> 6 7 <init-param> 8 9 <param-name>p1</param-name> 10 11 <param-value>v1</param-value> 12 13 </init-param> 14 15 <init-param> 16 17 <param-name>p2</param-name> 18 19 <param-value>v2</param-value> 20 21 </init-param> 22 23 <!--标签之间存在顺序--> 24 25 <load-on-startup>1</load-on-startup> 26 27 </servlet>
ServletConfig在 Servlet接口中的init(ServletConfig servletConfig) 方法中出现过,但是这个方法不由我们自己调用,所以服务器会给init方法传递一个实现了ServletConfig接口的实例对象,我们来看一ServletConfig接口中的方法:
String getServletName(); |
方法返回<servlet-name>这个标签中配置的内容 |
ServletContext getServletContext(); |
方法返回一个ServletContext对象,这个对象是三大域对象之一,后面会详细说 |
String getInitParameter(String var1); |
获取初始化参数,方法参数是<param-name>标签中配置的内容,返回值是<param-value>标签中的配置的内容 |
Enumeration<String> getInitParameterNames(); |
返回所有初始化参数的名字的枚举 |
HttpServletRequest和HttpServletResponse
这两个接口是在HttpServlet重载的service方法中当作参数的,所以服务器也会给分别方法传递实现了这两接口的实例对象,我们可以使用这两个对象,获取客户端的请求信息,客户端的所有请求信息将被封装到一个HttpServletRequest对象中,以及对客户端做出响应,这两个接口中的方法是我们最常用的方法。
HttpServletRequest的一些功能:
-
封装了请求头数据,Http请求报文中的请求头及对应的值,都可以获取到
-
封装了请求正文的数据,Http请求报文中的请求体(请求正文),如果是GET请求,则没有请求体
-
域对象,可以往其中添加数据,也可以获取数据,这四个方法是从ServletRequest中继承来的,
-
Object getAttribute(String var1);
-
Enumeration<String> getAttributeNames();
-
void setAttribute(String var1, Object var2);
-
void removeAttribute(String var1);
-
-
提供了请求转发和请求包含功能,
String getCharacterEncoding(); |
获取请求的编码方式 |
void setCharacterEncoding(String var1) throws UnsupportedEncodingException; |
设置请求的编码方式 |
int getContentLength(); |
获取请求正文的长度,以字节为单位 |
long getContentLengthLong(); |
适用请求正文超过2G的大小的请求 |
String getContentType(); |
返回请求的MIME(多用途互联网邮件拓展)类型 |
ServletInputStream getInputStream() throws IOException; |
获取请求的inputStream,获取字节数据, |
String getParameter(String var1); |
获取请求参数 |
Enumeration<String> getParameterNames(); |
获取所有的请求参数的名字 |
String[] getParameterValues(String var1); |
获取所有的请求参数的值 |
Map<String, String[]> getParameterMap(); |
获取所有的请求参数的名字和值,封装到一个Map中,这个方法很有用 |
String getProtocol(); |
获取应用层协议的具体类型如:HTTP/1.1 |
String getScheme(); |
获取使用的应用层协议如:http |
String getServerName(); |
获取请求报文中的主机名,如localhost |
int getServerPort(); |
获取请求端口号,如:8080 |
BufferedReader getReader() throws IOException; |
获取请求的输入流对象,读取字符数据BufferedReader继承于Reader类 |
String getRemoteAddr(); |
获取客户端的IP地址,网络层的内容 |
String getRemoteHost(); |
也是获取IP地址,测试了跟上面的方法一样 |
Locale getLocale();前客户端浏览器的Locale。java.util.Locale表示国家和言语,这个东西在国际化中很有用; |
前客户端浏览器的Locale。java.util.Locale表示国家和言语,这个东西在国际化中很有用; |
Enumeration<Locale> getLocales(); |
获取所有支持的语言 |
boolean isSecure(); |
是否使用加密传输,即使用HTTPS |
RequestDispatcher getRequestDispatcher(String var1); |
得到一个转发器,用于请求转发 |
以上的方法都是从ServletRequest中继承而来,下面的方法是自己定义的:
String getAuthType(); |
|
Cookie[] getCookies(); |
获取客户端发送过来的所有cookie |
long getDateHeader(String var1); |
获取单值毫秒类型的请求头 |
String getHeader(String var1); |
获取请求头 |
Enumeration<String> getHeaders(String var1); |
获取多值请求头 |
Enumeration<String> getHeaderNames(); |
获取多值请求头的的名字 |
int getIntHeader(String var1); |
获取单值int类型的请求头 |
String getMethod(); |
获取请求方法 |
String getPathInfo(); |
|
String getPathTranslated(); |
|
String getContextPath(); |
返回上下文路径 |
String getQueryString(); |
返回请求URL中的参数 |
String getRemoteUser(); |
|
boolean isUserInRole(String var1); |
|
Principal getUserPrincipal(); |
|
String getRequestedSessionId(); |
|
String getRequestURI(); |
返回请求URI路径,例如:/hello/oneServlet |
StringBuffer getRequestURL(); |
http://localhost/hello/oneServlet,返回URL路径如即返回除了参数以外的路径信息; |
String getServletPath(); |
返回Servlet路径,例如:/oneServlet |
HttpSession getSession(boolean var1); |
获取session,若没有true创建,false不创建 |
HttpSession getSession(); |
获取session,若没有创建之 |
String changeSessionId(); |
获取sessionID,如果存在的话 |
boolean isRequestedSessionIdValid(); |
|
boolean isRequestedSessionIdFromCookie(); |
|
boolean isRequestedSessionIdFromURL(); |
|
有关路径的获取看这个图可能更加清晰一点,还要注意一点,获取请求参数的方法,不区分是RUL后面的参数,还是请求体中的参数,都可以获取到,上面是HttpServletRequest中的全部方法,可能有的方法用的也不多。
HttpServletResponse的一些功能:
-
设置响应头
-
发送响应码
-
设置响应正文
-
重定向
-
其实重定向也是设置一个Location响应头和302状态码
-
ServletResponse中的一些方法:
String getCharacterEncoding(); |
获取设置的字符编码 |
String getContentType(); |
获取设置的响应正文的MIME类型 |
ServletOutputStream getOutputStream() throws IOException; |
获取字节输出流, |
PrintWriter getWriter() throws IOException; |
获取字符输出流 |
void setCharacterEncoding(String var1); |
设置响应字符的字符编码 |
void setContentLength(int var1); |
设置响应的长度 |
void setContentLengthLong(long var1); |
同上,超过2G使用这个方法设置 |
void setContentType(String var1); |
设置响应正文的MIME类型, |
void setBufferSize(int var1); |
设置缓冲区大小(Writer),默认8KB |
int getBufferSize(); |
获取缓冲区大小 |
void flushBuffer() throws IOException; |
冲刷缓冲区 |
void resetBuffer(); |
重置缓冲区 |
boolean isCommitted(); |
? |
void reset(); |
? |
void setLocale(Locale var1); |
? |
Locale getLocale(); |
? |
下面是HttpServletResponse自己定义的方法,一般自己定义的方法都是跟http协议有关的:
void addCookie(Cookie var1); |
添加cookie,注意参数是一个Cookie对象 |
boolean containsHeader(String var1); |
是否已经设置了某个响应头? |
String encodeURL(String var1); |
把会话ID嵌入URL,返回一个正确的URL |
String encodeRedirectURL(String var1); |
重定向中嵌入会话ID,返回处理过的URL 这两个方法在会话跟踪中使用 |
void sendError(int var1, String var2) throws IOException; |
发送错误状态码和短语 |
void sendError(int var1) throws IOException; |
发送错误状态码 |
void sendRedirect(String var1) throws IOException; |
重定向 |
void setDateHeader(String var1, long var2); |
设置单值毫秒类型的响应头 |
void addDateHeader(String var1, long var2); |
设置多值毫秒类型的响应头 |
void setHeader(String var1, String var2); |
设置单值响应头 |
void addHeader(String var1, String var2); |
设置多值响应头 |
void setIntHeader(String var1, int var2); |
设置单值int类型响应头 |
void addIntHeader(String var1, int var2); |
设置多值int类型响应头 |
int getStatus(); |
获取设置的状态码? |
String getHeader(String var1); |
获取设置的单值响应头? |
Collection<String> getHeaders(String var1); |
获取设置的多值响应头? |
Collection<String> getHeaderNames(); |
获取设置的所有的响应头的名字? |
以上是关于与Servlet相关的接口的主要内容,如果未能解决你的问题,请参考以下文章