Servlet
Servlet容器为JavaWeb应用提供运行时环境,它负责管理Servlet和JSP的生命周期,以及管理它们的共享数据。
Servle容器可完成的功能:
- 创建请求和响应的对象;
- 为Servlet创建或分配一个线程;
- 调用servlet的service()方法;
- 把请求和响应对象的引用作为参数传递给servlet
Servlet生命周期的方法
Servlet是单实例,线程安全的。
- Servlet类加载加载:
- 构造器---创建实例 : 第一次请求Servlet时,创建Servlet实例,调用构造器;
- init --- 初始化当前Servlet: 只被调用一次,创建好实例后立即被调用,初始化Servlet;
- Service---处理请求 : 多次调用,每次请求调用Service方法;
- 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");