servlet
什么是servlet:
servlet是javaEE的组件,也是javaEE中的一个规范。服务器其实是对servlet的实现,servlet是一个程序类,只不过它必须遵循servlet的规范,要求类实现javax.servlet.Servlet接口
搭建标准的JavaWeb项目结构
1:创建一个Java项目;
2:在该Java项目中创建一个文件夹webapp,表示Web项目的根目录
3:在webapp中创建一个文件夹WEB-INF
4:在WEB-INF文件夹中创建:lib,classes文件夹
5:把tomcat根目录下/conf中的web.xml文件拷贝到WEB-INF中,web.xml只需要保留根元素
6:把当前项目的classpath路径改成当前项目/webapp/WEB-INF/classes
创建servlet程序
1:将tomcat根/lib/servlet-api.jar拷贝到WEB-INF/lib中,并且做build path操作
2:创建一个java类,并且使它实现javax.servlet.Servlet接口;实现其中的方法
3:关联servle的源代码;servlet各个版本源代码下载地址http://archive.apache.org/dist/tomcat/
4:Servlet配置,配置web.xml;
<servlet>
<servlet-name>实现javax.servlet.Servlet接口的类名</servlet-name>
<servlet-class>实现javax.servlet.Servlet接口的类的全限定名</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>实现javax.servlet.Servlet接口的类名</servlet-name>
<url-pattern>/资源名</url-pattern>
</servlet-mapping>
5:部署项目;在tomcat根/conf/中的server.xml中的<host>元素中添加<Context docBase="/项目路径/webapp" path="contentPath(可未空,根据项目而定)">
6:访问http://ip:prot/contentPath/资源名
如:http://localhost:8080/contentPath/index
servlet请求流程
1:浏览器先发送请求:http://localhost:8080/contentPath/index
2:DNS解析域名(忽略)
3:Tomcat解析请求:/contentPath/index 上下文路径:/contentPath 资源的名称:/index
4:解析Tomcat根/conf/server.xml文件,获取其中所有的元素,并找到path属性为/contentPath的元素.. 再读取该元素,再获取docBase属性值,该属性值就是当前访问的WEB项目的根路径.
5:从该web的根路径/WEB-INF下找到web.xml文件.
6:读取web.xml文件,获取所有的元素,并判断哪一个的文本内容为:/hello. 找不到: 报404错误. 找 到: GOTO 7.
7:通过/index,找到当前Servlet的全限定名.
8:从Servlet的实例缓冲池中去获取全限定名对应的对象. Map cache = .....;
Servlet obj = cache.get("全限定名");
if(obj == null{
//第一次请求:GOTO 9.
}else{
//非第一次请求:GOTO 12;
}
9:使用反射创建Servlet对象.
Servlet obj = Class.forName("全限定名").newInstance();
10.把创建的Servlet对象,存储到Servlet实例缓存池中,供下一次请求使用.
cache.put("全限定名",obj);
11:容器创建ServletConfig对象,并调用init方法,来完成初始化操作.
obj.init(config);
12:容器创建ServletRequest和ServletResponse对象,并调用service方法,处理请求.
obj.service(req,resp);
13:在service方法中,对当前请求的客户端做相应.
网友评论