Servlet


一、servlet

服务器端的小应用程序
作用:(通过HTTP)处理客户端的请求和响应

二、servlet的生命周期

Servlet接口定义了初始化 servlet 的方法、为请求提供服务的方法和从服务器移除 servlet 的方法。这些方法称为生命周期方法,
它们是按以下顺序调用的:
1.构造 servlet,然后使用 init 方法将其初始化。
2.处理来自客户端的对 service 方法的所有调用。
3.从服务中取出 servlet,然后使用 destroy 方法销毁它,最后进行垃圾回收并终止它。
(1)实例化
调用构造函数
(2)初始化
init(): servlet容器仅在实例化servlet后调用init方法一次。在 servlet 可以接收任何请求之前,init 方法必须成功完成。
(3)服务
service()
此方法仅在 servlet 的 init() 方法成功完成之后调用。每次请求都会被调用。
(4)销毁
destroy()
清除持有的所有资源,此方法仅在 servlet 的 service 方法已退出或者在过了超时期之后调用一次。在调用此方法之后,
servlet 容器不会再对此servlet 调用 service 方法。
除了生命周期方法之外,此接口还提供了 getServletConfig 方法和 getServletInfo 方法,servlet 可使用前一种方法获得任何启
动信息,返回的 ServletConfig 对象是传递给 init 方法的对象;而后一种方法允许 servlet 返回有关其自身的基本信息,比如作者、版本和版权。

三、servlet的三种创建方式

1.实现javax.servlet.Servlet接口
public class ServletDemo1 implements Servlet {
             @Override
             public void init(ServletConfig servletConfig) throws ServletException {
         
             }
             @Override
             public ServletConfig getServletConfig() {
                 return null;
             }
         
             @Override
             public void service(ServletRequest servletRequest, ServletResponse servletResponse)
                     throws ServletException, IOException {
                 System.out.println("hello servlet");
             }
             @Override
             public String getServletInfo() {
                 return null;
             }
         
             @Override
             public void destroy() {
         
             }
         }

 


2. 继承javax.servlet.GenericServlet类(适配器模式)
 public class ServletDemo2 extends GenericServlet {
             @Override
             public void service(ServletRequest servletRequest, ServletResponse servletResponse)
                     throws ServletException, IOException {
                 System.out.println("hello ServletDemo2");
             }
         }

3. 继承javax.servlet.http.HttpServlet(模板方法设计模式)
  public class ServletDemo3 extends HttpServlet {
             @Override
             protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                     throws ServletException, IOException {
                 System.out.println("************doGet**********");
             }
         
             @Override
             protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                     throws ServletException, IOException {
                 System.out.println("************doPost**********");
             }

 


四、线程安全

不要使用全局变量,要使用局部变量

五、ServletConfig

1.获取配置文件的信息(ServletConfigDemo1的代码)
2.获得ServletContext对象

public String getInitParameter(String name);//该方法从 servlet 的 ServletConfig 对象获取指定参数的值
public java.util.Enumeration<E> getInitParameterNames();//该方法从 servlet 的 ServletConfig 对象获取参数名称
public ServletContext getServletContext();//该方法从 servlet 的 ServletConfig 对象获取上下文
void setAttribute(String name, Object object);//将对象绑定到此 servlet 上下文中的给定属性名称
void removeAttribute(String name);//从 servlet 上下文中移除具有给定名称的属性

六、ServletContext

ServletContext代表的是整个应用。一个应用只有一个ServletContext对象,单实例。
1.域对象:在当前应用中,使多个Servlet共享数据
2.获取全局配置信息
3.获取资源路径

方法:
String getContextPath() //返回 Web 应用程序的上下文路径。
ServletContext getContext(String uripath);//返回与服务器上的指定 URL 相对应的 ServletContext 对象。
RequestDispatcher getRequestDispatcher(String path);//请求转发到资源,或者在响应中包含资源
String getRealPath(String path);//为给定虚拟路径返回包含实际路径的 String
String getInitParameter(String name);//返回包含指定上下文范围初始化参数值的 String
Enumeration<E> getInitParameterNames()
Object getAttribute(String name);//返回具有给定名称的 servlet 容器属性,如果不具有该名称的属性,则返回 null。


七、与servlet相关的对象

Servlet
接口:在javax.servlet.Servlet
GenericServlet
抽象类:在javax.servlet.GenericServlet
HttpServlet
抽象类:在javax.servlet.HttpServlet
ServletConfig
接口:在javax.servlet.ServletConfig
ServletContext
接口:在javax.servlet.ServletContext
ServletRequest
接口:在javax.servlet.ServletRequest
ServletResponse
接口:在javax.servlet.ServletResponse
HttpServletRequest
接口:在javax.servlet.http.HttpServletRequest
HttpServletResponse
接口:在javax.servlet.http.HttpServletResponse
RequestDispatcher
接口:在javax.servlet.RequestDispatcher

转载于:https://www.cnblogs.com/q-1993/p/10300476.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值