Servlet
什么是servlet?
servlet是运行在服务器端的小型java程序,是一套规范,本质是一个java类,实现了servlet接口规范的java类就可以在服务器端运行了,且必须在servlet容器(服务器)中运行。
servlet的作用
servlet程序可以接收用户请求数据以及向浏览器输出响应数据。
servlet的生命周期
默认浏览器第一次访问该servlet的时候,创建该servlet对象,执行init初始化方法,只会创建一次对象(单例对象),线程不安全
浏览器每次访问的时候都会执行service方法,访问一次执行一次
当服务器关闭的时候,执行destory方法,销毁该servlet
注:可以通过在web.xml配置文件中添加标签让该servlet在服务器启动时,就加载这个servlet,取值是正整数,数字越小,优先执行权就越高。
数字1被tomcat默认的servlet占用了,该servlet是tomcat自动创建的,用来处理其它的servlet处理不了的请求,比如状态码为404、500该servlet底层默认执行写好的页面。
servlet的执行流程
1.服务器会找到访问的指定的项目
2.服务器会根据访问的servlet资源名去web.xml配置文件中的标签做匹配
没匹配到:会报404,代表该项目没有这个资源
匹配成功:会根据映射的servlet名称找到真正要执行的servlet
获取标签中的全限定名
服务器会自动根据写入的全限定名反射出来该类的对象
3.调用init方法进行对象的初始化
4.为该请求创建request对象封装http协议中的请求行、请求头、请求体的数据,创建response响应对象
5.把request对象和response对象作为参数传递给servlet的核心service方法,在service方法中使用request对 象获取请求内容,使用response对象写回响应内容,当响应结束,会销毁当前请求创建的request对象和response 对象
6.当服务器关闭时,会执行destroy方法销毁当前的servlet对象
注:servlet对象的创建和核心方法service方法的调用都是由服务器去自动装载完成的。
servlet的路径配置方式?
1.servlet2.5版本中,路径配置在web.xml文件的标签中
2.servlet3.0版本中,路径配置在注解的url-pattern属性中
完全匹配:必须以 / 开始
目录匹配:必须以 / 开始,以 * 结束
扩展名匹配:不能以 / 开始,必须以 *.xx 结束,xx代表后缀名
访问servlet进行路径名匹配优先级:完全匹配>目录匹配>扩展名匹配