JavaWeb(二)[Servlet]

1、Servlet概述:
1)Servlet 运行在服务端的Java小程序
2)Servlet的实质就是Java代码,通过Java的API动态地向客户端输出内容
3)Servlet规范:包含三个技术点:servlet技术,filter技术---过滤器,listener技术---监听器
4)Servlet任务:获取请求数据,处理请求,做出响应

2、Servlet编写
     方式一:创建类实现Servlet接口并实现其所有抽象方法(service()方法处理请求) -> 配置Servlet(通过web.xml文件配置/通过注解配置)
     方式二:创建类实现HttpServlet抽象类并实现doGet()方法,doPost()方法 -> 配置Servlet(通过web.xml文件配置/通过注解配置)
     doGet()方法用于处理get请求,doPost()方法用于处理post请求
web.xml中的配置(一个servlet-mapping可对应多个servlet):
JavaWeb(二)[Servlet]

3、Servlet配置详解
基本配置:
关于<url-pattern>路径</url-pattern>:
路径可以分为三种:完全匹配(访问的资源路径与配置的路径完全相同才能访问到:/home),目录匹配(/home/*),扩展名匹配(
*.do)
注:目录匹配与扩展名匹配不能混用:/home/*.do是错误的
缺省Servlet:

若某个Servlet对应的</url-pattern>路径为/,那么代表该Servlet是缺省Servlet
特点:当你访问资源地址所有的servlet都不匹配时,缺省的servlet负责处理
web应用中所有的资源的响应都是servlet负责,包括静态资源,jsp页面
欢迎页面:
如果在web模块自带的web.xml文件中没有配置欢迎界面,则执行localhost:8080服务器会执行tomcat中web.xml配置的欢迎界面;
在web模块自带的web.xml文件中配置欢迎界面:
<welcome-file-list> 
<welcome-file>welcome.jsp</welcome-file>
</welcome-file-list>

4、Servlet生命周期
Servlet接口中的方法:
1)init(ServletConfig config)
     何时执行:servlet对象创建之后执行
     ServletConfig : 代表的是该servlet对象的配置信息
2)service(ServletRequest request,ServletResponse response)
     何时执行:每次请求都会执行
     ServletRequest :代表请求,认为ServletRequest内部封装的是 http请求的信息
     ServletResponse :代表响应,认为要封装的是响应的信息
3)destroy()
     何时执行:servlet销毁之前执行
HttpServlet类中的方法:
1)init()
2)doGet(HttpServletRequest request,HttpServletResponse response)
3)doPost(HttpServletRequest request,HttpServletResponse response)
4)destroy()
Servlet生命周期:
1)生命周期
生命周期就是一个对象从创建到销毁的过程,servlet从创建到销毁的过程
2)生命周期方法(从创建到销毁,所必须调用的那些方法)
init方法、service方法、destroy方法
注:doGet() 和 doPost()不算生命周期方法,所谓的生命周期方法是指,从对象的创建到销毁一定会执行的方法, 但是这两个方法,不一定会执行
3)Servlet何时创建
默认第一次访问servlet时web服务器(tomcat)创建该对象
4)Servlet何时销毁
该项目从tomcat的里面移除
正常关闭tomcat就会执行 shutdown.bat
5)每次访问必然执行的方法
service(ServletRequest req, ServletResponse res)方法
综述:用户请求 -> web服务器(将用户请求封装成request对象(其中含有参数及servlet路径),与此同时创建response对象) -> web服务器根据该路径找到对应的servlet并创建该对象 -> 调用该对象的init方法 -> 调用该对象的service方法(->根据请求方式选择调用doGet()/doPost())->write()方法将内容写入response缓冲区 -> tomcat去响应区获取响应内容组成http响应(响应行,响应头,响应体)-> 调用该对象destroy方法

在Servlet中任何代码的改动都需要重启tomcat服务器