Servlet

Servlet

Servlet容器为JavaWeb应用提供运行时环境,它负责管理Servlet和JSP的生命周期,以及管理它们的共享数据。

Servle容器可完成的功能:

  1. 创建请求和响应的对象;
  2. 为Servlet创建或分配一个线程;
  3. 调用servlet的service()方法;
  4. 把请求和响应对象的引用作为参数传递给servlet

Servlet生命周期的方法

Servlet是单实例,线程安全的。

  1. Servlet类加载加载:
  2. 构造器---创建实例 : 第一次请求Servlet时,创建Servlet实例,调用构造器;
  3. init  --- 初始化当前Servlet: 只被调用一次,创建好实例后立即被调用,初始化Servlet;
  4. Service---处理请求  : 多次调用,每次请求调用Service方法;
  5. destroy: 之辈调用一次,卸载的时候调用

代码如下:

 1 package com.nomico.servlet1;
 2 
 3 import java.io.IOException;
 4 
 5 import javax.servlet.Servlet;
 6 import javax.servlet.ServletConfig;
 7 import javax.servlet.ServletException;
 8 import javax.servlet.ServletRequest;
 9 import javax.servlet.ServletResponse;
10 
11 public class HelloServlet implements Servlet{
12 
13     @Override
14     public void destroy() {
15     }
16     
17     @Override
18     public ServletConfig getServletConfig() {
19         return null;
20     }
21     
22     @Override
23     public String getServletInfo() {
24         return null;
25     }
26     
27     @Override
28     public void init(ServletConfig arg0) throws ServletException {
29         
30     }
31     
32     @Override
33     public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
34         
35     }
36 
37 }

看看容器如何处理请求:

 

 

 我的总结:

 

Web.xml---项目部署文件,必须存放在WEB-INF下

Servlet程序必须在WEB应用程序的web.xml文件中进行注册和映射其访问路径,才可以被Servlet引擎加载和被外界访问。

1 < Servlet>, <Servlet-mapping>:

<servlet>元素用于注册一个Servlet,

servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径

<servlet>
        <servlet-name>loginServlet</servlet-name>    
        <servlet-class>com.nomico.servlet1.LoginServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>loginServlet</servlet-name>    
        <url-pattern>/loginServlet</url-pattern>
    </servlet-mapping>

2 ServletConfig:  获取Servlet初始化参数,并且可以获取ServletContext 对象:

<servlet>
        <servlet-name>loginServlet</servlet-name>    
        <servlet-class>com.nomico.servlet1.LoginServlet</servlet-class>
        <init-param>
            <param-name>user</param-name>
            <param-value>root</param-value>
        </init-param>
        <init-param>
            <param-name>password</param-name>
            <param-value>1230</param-value>
        </init-param>
    </servlet>

3 ServletContext :  application 对象(Web应用程序对象)---获取当前WEB应用的初始化参数。

                          -----相当于全局变量,范围更广。

Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,ServletContext对象被包含在ServletConfig对象中,调用ServletConfig.getServletContext方法可以返回ServletContext对象的引用。 由于一个WEB应用程序中的所有Servlet都共享同一个ServletContext对象,所以,ServletContext对象被称之为 application 对象(Web应用程序对象)。

<context-param>
        <param-name>user</param-name>
        <param-value>wgs</param-value>
    </context-param>
    
    <context-param>
        <param-name>password</param-name>
        <param-value>920614</param-value>
    </context-param>

获取;

ServletContext servletContext = servletConfig.getServletContext();
String user
= servletContext.getInitParameter("user");

 

原文地址:https://www.cnblogs.com/noaman/p/6642614.html