Servlet——javax.servlet.*;ServletRequest; ServletResponse; ServletConfig; ServletContext; GenericServlet;
ServletRequest
每一个HTTP请求,Servlet容器都会创建一个ServletRequest实例,并将它传给Servlet的service方法。
ServletRequest接口中的部分方法:
public int getContentLength() 返回请求主体中的字节数。若不知字节长度,返回-1.
public String getContentType() 返回请求主体的MIME类型,若不知,返回null。
public String getParameter(String name) 返回指定请求参数的值。通常用来返回一个HTML表单域的值,例:String id = request.getParameter("id");。
public String getProtocol() 返回HTTP请求的协议名称和版本号
每一个HTTP请求,Servlet容器都会创建一个ServletRequest实例,并将它传给Servlet的service方法。
ServletRequest接口中的部分方法:
public int getContentLength() 返回请求主体中的字节数。若不知字节长度,返回-1.
public String getContentType() 返回请求主体的MIME类型,若不知,返回null。
public String getParameter(String name) 返回指定请求参数的值。通常用来返回一个HTML表单域的值,例:String id = request.getParameter("id");。
public String getProtocol() 返回HTTP请求的协议名称和版本号
ServletResponse
在调用一个Servlet的service方法之前,Servlet容器会先创建一个ServletResponse,并将它传给service方法。
ServletResponse中getWriter方法,它返回可以将文本传给客户端的java.io.PrintWriter。在默认情况下,PrintWriter对象采用ISO-8859-1编码。
ServletConfig
在Servlet容器初始化Servlet时,Servlet容器将ServletConfig传给Servlet的init方法。
从Servlet内部获取某个初始参数的值,应该在init方法中让ServletConfig调用getInitParameter方法。
String getInitParameter(String name) 返回某个参数值
Enumeration<String> getInitParameterNames() 返回初始参数名称
ServletContext
每个Web应用程序只有一个context。
调用getServletContext方法可获得ServletContext。
保存在ServletContext中的对象称作属性,处理属性有以下方法:
Object getAttribute(String name)
Enumeration<String> getAttributeNames()
void setAttribute(String name, Object object)
void removeAttribute(String name)
GenericServlet
通过实现Servlet接口来编写的Servlet,必须为Servlet接口中的所有方法提供实现,即使有些方法没有方法体,并且还需要将ServletConfig对象保存在一个类级变量中。
GenericServlet抽象类实现了Servlet和ServletConfig,并完成以下工作:
将init方法中的ServletConfig赋值给一个类级变量,使它可以通过调用getServletConfig来获取。
为Servlet接口中的所有方法提供默认实现
提供方法来包装ServletConfig中的方法。
GenericServlet通过在init方法中将ServletConfig对象赋给一个类级变量servletConfig,实现对ServletConfig的保存。
如果在类中覆盖这个方法,则调用Servlet中的init方法,并且必须调用super.init(servletConfig)来保存ServletConfig。为避免这么做,GenericServlet提供了一个无参init方法,当把ServletConfig赋给servletConfig之后,这个方法会被第一个init方法调用(在有参init方法中调用无参init方法)。这意味着,可以通过覆盖无参init方法来编写初始化代码,ServletConfig仍由GenericServlet实例保存。
在调用一个Servlet的service方法之前,Servlet容器会先创建一个ServletResponse,并将它传给service方法。
ServletResponse中getWriter方法,它返回可以将文本传给客户端的java.io.PrintWriter。在默认情况下,PrintWriter对象采用ISO-8859-1编码。
ServletConfig
在Servlet容器初始化Servlet时,Servlet容器将ServletConfig传给Servlet的init方法。
从Servlet内部获取某个初始参数的值,应该在init方法中让ServletConfig调用getInitParameter方法。
String getInitParameter(String name) 返回某个参数值
Enumeration<String> getInitParameterNames() 返回初始参数名称
ServletContext
每个Web应用程序只有一个context。
调用getServletContext方法可获得ServletContext。
保存在ServletContext中的对象称作属性,处理属性有以下方法:
Object getAttribute(String name)
Enumeration<String> getAttributeNames()
void setAttribute(String name, Object object)
void removeAttribute(String name)
GenericServlet
通过实现Servlet接口来编写的Servlet,必须为Servlet接口中的所有方法提供实现,即使有些方法没有方法体,并且还需要将ServletConfig对象保存在一个类级变量中。
GenericServlet抽象类实现了Servlet和ServletConfig,并完成以下工作:
将init方法中的ServletConfig赋值给一个类级变量,使它可以通过调用getServletConfig来获取。
为Servlet接口中的所有方法提供默认实现
提供方法来包装ServletConfig中的方法。
GenericServlet通过在init方法中将ServletConfig对象赋给一个类级变量servletConfig,实现对ServletConfig的保存。
如果在类中覆盖这个方法,则调用Servlet中的init方法,并且必须调用super.init(servletConfig)来保存ServletConfig。为避免这么做,GenericServlet提供了一个无参init方法,当把ServletConfig赋给servletConfig之后,这个方法会被第一个init方法调用(在有参init方法中调用无参init方法)。这意味着,可以通过覆盖无参init方法来编写初始化代码,ServletConfig仍由GenericServlet实例保存。
package com.java.servlet.test; import javax.servlet.annotation.WebServlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.GenericServlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebInitParam; @WebServlet(name="GenericServletTest", urlPatterns= {"/generic"}, initParams= {//initParams可以设置初始化参数 @WebInitParam(name="admin", value="Tom"), @WebInitParam(name="email", value="admin@example.com") }) public class GenericServletTest extends GenericServlet{ private static final long serialVersionUID = 62500890L; //继承GenericServlet抽血类,只需覆盖service方法即可 @Override public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { ServletConfig servletConfig = getServletConfig(); //从servletConfig中获取提前设置的初始化参数 String admin = servletConfig.getInitParameter("admin"); String email = servletConfig.getInitParameter("email"); response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.print("<html><head></head><body>" + "Admin:" + admin + "<br/>Email:" + email + "<body></html>"); } }
代码结果截图:


浙公网安备 33010602011771号