目录
三、何种Java类可以被Tomcat调用,可以作为网站的【动态共享资源文件】
创建网站流程
- 第一步:new Project➡java Enterprise➡Web Application
【动态网站结构】
src:存放Java文件
web:静态资源文件和配置文件(WEB-INF/web.xml)
- 第二步:【指定Tomacat管理的网站】
【Run】---【Edit Configuration】---自己的tomcat管理---【Deployment】---添加需要被Tomacat管理的网站,它是按顺序执行,谁在前谁就执行
- 第三步:创建Servlet
Servlet规范
一、JAVASE与JAVAEE区别
JAVASE:Java开发基本规范
JAVAEE:Java企业级开发规范,指定了JVM管理系统与13类系统之间交流p规则,因此JAVAEE规范有13种
JDBC规范就是JAVAEE规范中的一种,用于设置JVM与所有的【关系型数据库管理系统】 ,进行交流规则
二、Servlet规范
- Servlet规范是JAVAEE规范中一种
- Servlet规范中设置JVM与HTTP服务器之间的交流规则
- 交流规则
- 定义何种Java类可以被Http服务器来调用的(何种Java类可以作为动态资源文件)
- Http服务器应该如何管理【动态资源文件】
三、何种Java类可以被Tomcat调用,可以作为网站的【动态共享资源文件】
- Servlet规范中,认为只有【Servlet接口实现类】有资格作为【动态共享资源文件】
- 【Servlet接口实现类】必须由开发人员负责创建
四、如何开发一个Servlet接口实现类
- 创建一个实现类,需要继承于【HttpServlet】
- 【HttpServlet】存在Tomcat中lib/servlet-api.jar;javax.servlet.http/HttpServlet
- 根据雷方的浏览器采用的请求方式,重写对应doGet或者doPost
- 在/WEB-INF/lib中web.xml,注册Servlet接口实现类,通知Tomacat当前网站存在了一个动态资源文件
这个小红是在某一个工程下的src下建立的Servlet的name
五、Tomcat调用Servlet接口实现类流程
- 浏览器向服务端发送一次请求
- Tomcat接收到这个请求,首先将请求资源文件作为动态资源文件,到web.xml进行文件定位,如果有调用,如果没有找到对应的动态资源文件,此时Tomcat认为,本次请求的是一个静态资源文件,从web下进行定位,如果有返回,如果还没有此时返回404状态码
- Tomcat到web.xml根据<url-pattern>进行定位 <servlet-name>
- <servlet-name>定位<servlet-class>找到本次请求调用Servlet
- Tomcat根据浏览器采用的请求方式,调用Servlet中doGet或者doPost
- 在doGet/doPost方法调用完毕后,Tomcat负责响应包推送给浏览器
六、Servlet请求路径写法规则:4种
1.具体请求路径:
如果浏览器请求的【资源文件地址】与当前Servlet中<url-pattern>的内容【完全一致】,Tomcat才会带调用当前Servlet
例子:OneServlet <url-pattern> /one.do</url-pattern>
http://localhost:8080/myWeb/one.do OneServlet会被调用
http://localhost:8080/myWeb/abc/one.do OneServlet 不会被调用
【注意】:具体请求路径,必须以"/"为开头
2.前置条件请求路径:
如果浏览器请求的【资源文件地址】与以前Servlet中<url-pattern>的内容为开头,Tomcat才会调用当前Servlet
例子:OneServlet <url-pattern> /abc/*</url-pattern>
"*"是一个通配符,描述是一个任意长度字符串,如果当前【资源文件地址】是以"/abc/"为开头,就表示调用的资源OneServlet
http://localhost:8080/myWeb/abc/two.html OneServlet会被调用
http://localhost:8080/myWeb/abc/one.do OneServlet 会被调用
【注意】:具体请求路径,必须以"/"为开头,必须以"*"为结尾
3.后置条件请求路径:
如果浏览器请求的【资源文件地址】与当前Servlet中<url-pattern>的内容为结尾的,Tomcat才会调用当前Servlet
例子:OneServlet <url-pattern>*.do</url-pattern>
http://localhost:8080/myWeb/two.do OneServlet会被调用
http://localhost:8080/myWeb/abc/one.do OneServlet 会被调用
http://localhost:8080/myWeb/two.do?uname=mile OneServlet会被调用
请求行:[
url:http://localhost:8080/myWeb/two.do
method:post
]
请求头:[
uname:mile
]
【注意】:不能以"/"为开头,必须以"*"为开头
4.通配符请求路径:当前Servlet可以接收对当前网站所有的请求
例子:OneServlet <url-pattern>*</url-pattern>
http://localhost:8080/myWeb/two.jpg OneServlet会被调用
http://localhost:8080/myWeb/abc/one.do OneServlet 会被调用
请求路径优先级:【具体请求路径】>【前置条件】>【通配符】>【后置条件】
http://localhost:8080/myWeb/abc/one.do
OneServlet: <url-pattern>/abc/one.do</url-pattern>
TwoServlet: <url-pattern>/abc/*</url-pattern>
ThreeServlet: <url-pattern>*.do</url-pattern>
FourServlet: <url-pattern>/*</url-pattern>
七、Servlet实例对象【生命周期】
1.项目中,所有Servlet的实例对象都是由Tomcat负责创建;开发人员没有权利创建Servlet的实例对象
2.【创建时机】:
【默认情况】:当第一个用户来访问这个Servlet时,Tomcat负责创建它的实例对象
【人工干预】:要求Tomcat在启动时,创建Servlet的实例对象
3.在Tomcat运行期间,一个Servlet实现类只能被创建一个实例对象
4.在Tomcat关闭时,由Tomcat负责销毁所有的Servlet实例对象
Servlet_生命周期:
首先加载servlet的class,实例化servlet,然后初始化servlet调用init()的方法,接着调用服务的service的方法处理doGet和doPost方法,最后是我的还有容器关闭时候调用destroy 销毁方法。
1.被创建:执行init方法,只执行一次
1.1Servlet什么时候被创建?
--默认情况下,第一次被访问时,Servlet被创建,然后执行init方法;
--可以配置执行Servlet的创建时机;
2.提供服务:执行service方法,执行多次
3.被销毁:当Servlet服务器正常关闭时,执行destroy方法,只执行一次