Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码,通过java的API 动态的向客户端输出内容
servlet规范:包含三个技术点
1)servlet技术
2)filter技术—过滤器
3)listener技术—监听器
Servlet快速入门
实现步骤:
1)创建类实现Servlet接口
2)覆盖尚未实现的方法---service方法
3)在web.xml进行servlet的配置
init(ServletConfig config)
servlet对象创建时候执行
每次访问都会执行
ServletConfig : servlet对象的配置信息
getServletName()
getInitParameter();
getServletContext();
service(ServletRequest request, ServletResposne response)
destroy()
销毁的时候执行
servlet何时创建
默认第一次访问servlet时候创建该对象
servlet何时销毁
关闭服务器时销毁
每次访问必须执行的方法
service(ServletRequest request,ServiceResponse response)
servletrequest代表人文servletRequest内部封装的是http请求信息
servlet配置
基本配置
<!-- servlet 类的配置-->
<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>cn.niuability.servlet.ServletDemo</servlet-class>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql:///niuability</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<!-- servlet的虚拟路径配置 -->
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/servlet</url-pattern>
</servlet-mapping>
url-pattern
1)完全匹配
访问的资源与配置的资源完全相同才能访问到
2)目录匹配
格式:/虚拟的目录/*
/*
3)扩展名匹配
格式: *.扩展名
*.html
*.jsp
服务器启动实例化Servlet配置
servlet何时创建:默认第一次访问时创建
在servlet的配置是:加上一个配置 load-on-starup servlet对象在服务器起动时就创建
缺省servlet
将url-pattern配置成/
当你访问的资源地址所有的servlet都不匹配时,缺省的servlet负责处理
其实在web应用中所有的资源的响应都是servet负责
ServletContext对象
ServletContext代表的是一个web应用的环境(上下文)对象,ServletContext内部封装的是该web应用的信息,ServletContext对象一个web应用只有一个。
ServletContext的生命周期
创建:该web应用被加载(服务器启动或发布应用(服务器启动状态))
销毁:web应用被卸载(服务器关闭,移除该web应用)
获得ServletContext对象
ServletContext sc = config.getServletContext();
ServletContext sc = this.getServletContext();
ServletContext的作用
1)获得web应用全局初始化参数
web.xml中配置初始化参数
<!--配置全局的初始化参数 -->
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
//1.获得ServletContext对象
ServletContext context = getServletContext();
//2.获得初始化参数
String initParameter = context.getInitParameter("deriver);
2)获得web应用中任何资源的绝对路径
相对于该web应用的相对地址
String path = getRealPath();
3)ServletContext是一个域对象
域对象:存储数据的区域就是域对象
ServletContext域对象的作用范围:整个web应用(所有的web资源可以随意向ServletContext域中存取数据,数据可以共享)
存:context.setAttribute(String name,Object value);
取:context.getAttribute(String name);
删:context.removeAttribute(String name);
ServletContext context = getServletContext();
context.setAttribute ();