Servlet会在服务器启动或第一次请求该Servlet的时候开始生命周期,在服务器结束的时候结束生命周期。无论请求多少次Servlet,最多只有一个Servlet实例。多个客户端并发请求Servlet时,服务器会启动多个线程分别执行该Servlet的service方法
实现javax.servlet.Servlet接口类,规定了特定的方法来处理特定的请求。开发者只需要实现Servlet的相关方法,用户访问Web程序的时候,Tomcat会调用这些方法完成业务处理
文件夹 | 描述 |
---|---|
/ | Web应用根目录 |
/WEB-INF/ | Tomcat会隐藏该文件夹下的所有文件及文件夹,保护它们不能通过浏览器直接访问 |
/WEB-INF/web.xml | 主要的配置文件 |
/WEB-INF/classes/ | 类文件,包括Servlet类 |
/WEB-INF/lib/ | jar文件位置 |
<servlet> <servlet-name>[唯一的名称]</servlet-name> <servlet-class>[包含包名的路径]</servlet-class> <init-param> <param-name>[配置名称]</param-name> <param-value>[配置值]</param-value> </init-param> <load-on-startup>1[0:请求时加载;1:启动时加载]</load-on-startup> </servlet> 复制代码
<servlet-mapping> <servlet-name>[同servlet配置中的名称对应]</servlet-name> <url-pattern>[访问路径]</url-pattern> </servlet-mapping> 复制代码
全局共享,能够被所有的servlet读取
<context-param> <param-name>[配置名称]</param-name> <param-value>[配置值]</param-value> </context-param> 复制代码
在Servlet类中,通过 getServletConfig.getServletContext
获取ServletContext,然后通过其方法获取相应上下文参数
由于Servlet只会有一个实例,多个用户同时请求同一个Servlet时,Tomcat会派生出多条线程执行Servlet的代码,因此Servlet有线程不安全的隐患。
通过RequestDispatcher对象的 forward(HttpServletRequest, HttpServletResponse)
来实现; 浏览器地址栏显示跳转前的Servlet访问地址