Servlet
Servlet配置
<servlet>
<servlet-name>DemoServlet</servlet-name>
<servlet-class>com.zzxx.DemoServlet</servlet-class>
<!-- ServletConfig配置参数 -->
<init-param>
<param-name>driver</param-name>
<param-value>com.mysql.cj.jdbc.Driver</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>
<!-- 方式一: 完全匹配 只能通过/demo01 来访问这个资源 -->
<url-pattern>/demo01</url-pattern>
<url-pattern>/demo011</url-pattern>
<!-- 方式二: 目录匹配, 通配符 * -->
<url-pattern>/*</url-pattern>
<url-pattern>/hi/*</url-pattern>
<!-- 方式三: 后缀匹配 -->
<url-pattern>*.do</url-pattern>
<!-- 特殊的匹配: / 所有资源,默认的配置,缺省的配置 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
欢迎页面设置
<!-- 设置应用的默认首页 -->
<welcome-file-list>
<welcome-file>demo</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
注解
- @WebServlet(属性名=属性值)
注解的属性: 类型 属性名()
当注解中只有一个属性,并且属性名为value时,属性名可以省略
/*
name: 等同于 <servlet-name>
urlPatterns/value: 等同于<url-pattern>
*/
// @WebServlet(name="/Demo02Servlet", urlPatterns = {"/demo02","/demo022"})
// @WebServlet(value = "/demo02")
// @WebServlet("/demo02")
@WebServlet({
"/demo02", "/demo022"})
Servlet对象
-
默认第一次接收到请求时创建,服务器关闭时销毁
-
在程序运行期间, 只产生一个对象的类, 称之为"单例模式"
单例模式是线程不安全的, 所以Servlet中通常不会定义成员变量 -
设计模式:设计的模板/套路,一共23种
1、单例模式:在程序运行期间, 只产生一个对象
2、工厂模式:创建对象的工厂
3、装饰者模式:增强方法
4、代理模式:增强方法,动态代理,CGlib代理
ServletContext对象:应用上下文, 一个应用中只有一个ServletContext对象
范围:整个服务器启动期间
- 获得 servlet对象(this),request对象,ServletConfig对象
// 获得ServletContext对象
// 1.方式一: 通过Servlet获得
ServletContext application = this.getServletContext();
// 2.方式二: 通过request对象获得
ServletContext app1 = request.getServletContext();
// 3.方式三: 通过ServletConfig对象获得
ServletContext app2 = this.getServletConfig().getServletContext();
- 作用
1.获得虚拟目录
2.获得应用的初始化参数
3.获得应用文件的绝对路径
4.作为域对象