本文接上文
一、ServletRequset接口
对于每一个HTTP请求,Servlet容器都会创建一个ServletRequest实例,并将他传递给service方法。ServletRequset封装了关于这个请求的信息。
ServletRequset接口中定义了一些方法:
getParameter是在ServletRequest中最常用的方法。该方法通常是用来返回HTML表单域的值,getParameter也可以用于获取查询字符串的值。
二、ServletResponse接口
javax.servlet.ServletResponse接口表示一个Servlet响应,在调用service方法之前Servlet容器首先创建一个ServletResponse的实例,并将他作为第二个参数传入到service方法中,ServletResponse隐藏了像浏览器发送响应的复杂过程。
在ServletResponse接口中,定义的方法之一是getWriter方法,该方法返回了一个可以向客户端发送文本的java.io.aPrintWriter。默认的情况下该对象采用的是ISO-8859-1的编码方式。
三、ServletConfig
当Servlet容器初始化Servlet的时候,Servlet容器会给Servlet的init方法传入一个ServletConfig的实例,该实例中封装了可以通过@WebServlet或者部署描述符传递给Servlet的配置信息
这样传入的每一条信息就是一个初始参数,一个初始参数有key合 value两个元件
为了从Servlet内部获取到初始参数的值,要在Servlet容器传给Servlet的init方法的ServletConfig中调用getInitParameter方法,getInitParameter方法的签名如下:
此外,getInitParameterNames方法则是返回所有初始化参数名称的一个Enumeration:
举个例子,当要获取contactName参数的值,要使用下面的方法签名
除了getInitParameter和getInitParameterNamespace之外,ServletConfig还提供了一个很有用的方法:getServletContext。利用这个方法可以从Servlet内部获取ServletContext。
四、ServletContext
ServletContext表示Servlet应用程序,每个应用程序只有一个上下文对象,当把一个应用程序同时部署到多个容器的分布式环境中的时候,每个jvm上面的Web应用程序都会有一个ServletContext对象。
通过ServletConfig中调用getServletContext方法,可以获得ServletContext实例,有了ServletContext就可以共享从应用程序中所有资料处访问到的信息,并且可以动态的注册web对象,前者将对象保存在ServletContext内部的Map中,
保存在ServletContext中的对象被称作为属性
ServletContext中的以下的方法负责处理属性:
五、GenericServlet抽象类
GenericServlet实现了Servlet和ServletConfig两个接口,并且完成了以下任务:
1、将init方法中的ServletConfig付给一个类级的变量,以便可以通过调用getServletConfig获取,
2、将接口中的所有方法提供默认实现,
3、提供方法,包围ServletConfig中的方法
六、HttpServlet
HttpServlet类覆盖了javax.servlet.GenericServletl类,在使用HttpServlet的时候,还要借助分别代表Servlet请求和Servlet响应的HttpServletRequest和HttpServletResponse对象。
HttpServletRequest接口扩展了javax.servlet.ServletRequest,HttpServletResponse接口扩展了javax.servlet.ServletResponse。
HttpServlet覆盖了GenericServlet中的service方法,并且通过下面的签名再添加一个service方法:
protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,java.io.IOException
新的service方法和javax.servlet.Servlet中的service方法之间的区别在于参数列表不同