与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();

返回所有初始化参数的名字的枚举


HttpServletRequestHttpServletResponse

  这两个接口是在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();前客户端浏览器的Localejava.util.Locale表示国家和言语,这个东西在国际化中很有用;

前客户端浏览器的Localejava.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相关的接口的主要内容,如果未能解决你的问题,请参考以下文章

Servlet相关 Filter相关 Listener相关

Servlet及相关类和接口

Servlet及相关类和接口

Servlet1Servlet监听器及相关接口

设置和获取与执行环境相关的信息?

Servlet与HTTP请求协议