一、开发web项目的步骤:
1:创建web project
2:导入第三方jar(连接池,mysql)包,和数据库相应的脚本文件等
3:添加配置文件,db.properties
4:编写工具类,DBUtil等
5:根据Dao思想编写相应代码
包含:
实体类,接口,实现类
6:编写业务层的代码----(M层:model,包含持久层和业务层)
7:编写Servlet组件。(C层:controller,控制层)
8:配置web.xml文件
二、测试部分:
第一步:启动服务器tomcat
第二步: 将项目部署到服务器上(代码更新,需要重新部署)
第三步: 在浏览器上输入请求路径。
三、容器处理请求资源路径的问题:
1:什么是请求资源路径??
http://localhost:8088/appName/xx.html;
/appName/xx.html是请求资源路径。
2:容器如何处理请求资源路径
(1)浏览器通过IP,Port向容器发送请求,建立连接。
(2)根据appName(部署名)找到服务器内对应的应用程序,再根据
xx.html去匹配web.xml中的<url-pattern>的值。 匹配成功后,去执行对应的web组件。
3:精确匹配。
容器在处理请求资源路径时,先会严格精确 的找<url-pattern>的值,如 请求资源 路径为:appName/addEmp.html,会先
查找<url-pattern>的值有没有一个是addEmp.html; 如果有,就会执行相应的web组件
(即使此时有addEmp.html页面,也不会显示页面)
4:通配符匹配。
*:可以匹配n个任何字符,
如果<url-pattern>的值为 /*,表示任何请求资源路径
都会执行此web组件。
reg:
http://ip:port/appName/abc
http://ip:port/appName/abc.html
http://ip:port/appName/abc/abc.html
5:后缀匹配.
如果<url-pattern>的值为 *.后缀,此时一定不能在*前添加"/"。
当请求资源路径为此后缀的格式时,就会执行对 应的web组件
reg:
<url-pattern>*.do<url-pattern>
请求资源路径:
http://ip:port/appName/abc.do
http://ip:port/appName/abc/abc.do
6:无匹配的servlet处理
如果请求资源路径在web.xml中无任何匹配,那么就会查找 是否有此文件。如果有,将文件响应给浏览器,如果没有,
报404错误。
总结:三种匹配的优先级
精确匹配>通配符匹配>后缀匹配
四、Servlet组件的合并问题
1:为什么要合并?
因为Servlet组件充当的是控制器的角色,通过分析资源路径, 用来分发不同的资源。所以,一个Servlet组件
就可以做到分发不同的资源。
2:如何合并?
request.getRequestURI():此方法返回的 是请求资源路径,我们可以使用分支结构来进行控制
资源的分发。
reg:
String path =request.getRequestURI();
if("/appName/listEmp.do").equals(path){
.........................................
}else if(("/appName/deleteEmp.do").equals(path)){
............................................
}