servlet是运行在服务端的Java小程序,由sun提供的一套规范,处理客户端的请求和响应浏览器的动态资源
servlet是Javaweb的三大组件(servlet,filter,listener)
servlet主要是在获取请求数据和处理请求和完成响应.
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>cn.work.UserServlet.java</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
用户第一次访问Servlet创建Servlet的实例(单实例)
当前项目从服务器中移除的时候,或关闭服务器的时候.
servlet中的方法:★void init(ServletConfig config):初始化方法
★void service(ServletRequest resquest,ServletResponse response):服务方法 处理逻辑
★void destroy():销毁方法
ServletConfig getServletConfig():获取当前servlet配置对象
GenericServlet中的方法:
除了service方法没有实现之外,其他的方法都实现了
HttpServlet中的方法:
实现了service方法
将两个参数强转了
调用重载的service方法
重载的service方法中的操作:
获取请求的方式(get和post)
根据请求的方式调用不同的doXxx方法
★
doGet(HttpServletRequest request,HttpServletResponse respone):处理get请求
doPost(HttpServletRequest request,HttpServletResponse respone):处理post请求
注意:
以后编写servlet只需要new servlet(继承了httpservlet,重写了doget和dopost两个方法)
servlet的生命周期 ★★
api:
★void init(ServletConfig config):初始化方法
* 初始化方法
* 执行时机:默认第一次访问
* 执行次数:一次
* 执行者:服务器
★void service(ServletRequest resquest,ServletResponse response):服务方法 处理逻辑
* 服务方法
* 执行时机:每次访问
* 执行次数:访问一次执行一次
* 执行者:服务器
★void destroy():销毁方法
* 销毁方法
* 执行时机:当servlet被移除的时候或者服务器正常关闭的时候
* 执行次数:一次
* 执行者:服务器
servlet是单例多线程的
默认第一访问类的时候,服务器创建servlet,且调用init方法实现初始化操作,且调用一次service方法
每当请求来的时候,服务器创建一个线程,调用service方法,完成具体逻辑
当servlet被移除的时候或者服务器正常关闭的时候,访问调用destroy方法实现销毁操作
servlet的配置
url-pattern:
完全匹配:以"/"开始 例如 /aa/bb /aa 目前servlet采用这种写法
目录匹配:以"/"开始 以"*"结束 例如:/aa/* /*
后缀名匹配:以"*"开始 例如: *.jsp *.do *.action
优先级:
完全匹配>目录匹配>后缀名匹配
路径越精确优先级越高
访问路径的写法:
相当路径:(我们不用,我们需要能看明白)
./ 或者 什么都不写 当前目录 ./index.html index.html
../ 上一级
绝对路径:
带协议和主机的绝对路径 http://localhost:80/1.html 访问外部路径使用
不带协议和主机的绝对路径 /1.html 只能访问当前服务器下的资源