原理: 1.当用户请求一个servlet 2.服务器会查找web.xml文件,扫描该文件中servlet-mapping的url-pattern 3.找到匹配的url-pattern 4.找到与url-pattern绑定的servlet的逻辑名称 5.根据servlet逻辑名称查找servlet的声明部分,找到与之匹配的逻辑名 6.根据该逻辑名称找到对应的servlet-class 7.更加servlet-class提供的类的全名加载servlet 8.实例化和初始化servlet 9.调用该servlet方法提供对应的服务 注意:servlet是由程序员定义的,用户只需要去访问,其他的工作(创建实例、初始化、接受请求)全部由服务器完成
servletConfig
servletConfig:代表servlet的配置信息,每一个servlet都有一个servletConfig对象 servletConfig对象是什么? 封装了servlet在web.xml文件中配置 方法: 1.getServletName():获取配置文件中<servlet-name>元素的内容 2.getInitParameter():根据<init-param>中的<param-name>获取<param-value> <init-param> <param-name>name</param-name> <param-value>tom</param-value> </init-param> 3.getInitParameterNames:表示返回所有的<param-name> 4.getServletContext(); 功能: 读取servlet的初始化配置参数, getInitParameter:根据servlet的初始化参数获取初始化参数的值 getInitParameterNames:返回servlet初始化参数的名称 例如:通过servletConfig获取初始化参数 /** * Created by Administrator on 2017/7/12. * //获取初始化参数 */ public class InitParmaServletDemo extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response){ response.setContentType("text/html;charset=UTF-8"); //获取servletConfig ServletConfig config=getServletConfig(); //根据参数的名称获取对应的值 String paramValue=config.getInitParameter("driver"); //获取所有的参数的名称的枚举 Enumeration<String> paramNames=config.getInitParameterNames(); //遍历名称的枚举 while (paramNames.hasMoreElements()){ //取得一个参数的名称 String paramName=paramNames.nextElement(); //根据参数名获取值 String value=config.getInitParameter(paramName); } } public void doPost(HttpServletRequest request, HttpServletResponse response){ doGet(request,response); } } 通过servletconfig获取servletContext import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Enumeration; /** * Created by Administrator on 2017/7/12. * 通过servletconfig获取servletContext */ public class ServletConfigGetServletContext extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response){ response.setContentType("text/html;charset=UTF-8"); //获取servletConfig ServletConfig config=getServletConfig(); //通过servletconfig获取servletContext ServletContext context=config.getServletContext(); } public void doPost(HttpServletRequest request, HttpServletResponse response){ doGet(request,response); } }
ServletContext
定义: 代表当前的web应用(一个web应用只有一个servletContext对象),该对象随着web应用被服务器加载而创建 作用: 获取应用程序的配置信息 例如: /** * Created by Administrator on 2017/7/12. * 通过servletContext获取配置信息 */ public class InitParamServletContext extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response){ response.setContentType("text/html;charset=UTF-8"); //获取servletConfig ServletConfig config=getServletConfig(); //通过servletconfig获取servletContext ServletContext context=config.getServletContext(); //获取参数(第一种) String url=context.getInitParameter("url"); String user=context.getInitParameter("user"); //第二种获取servletContext的方法 ServletContext context1=getServletContext(); Enumeration<String> names=context.getInitParameterNames(); while (names.hasMoreElements()){ String name=names.nextElement(); String value=context.getInitParameter(name); } } public void doPost(HttpServletRequest request, HttpServletResponse response){ doGet(request,response); } }