servlet

2018-01-11  本文已影响0人  地点北京

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方法中,对当前请求的客户端做相应.

上一篇 下一篇

猜你喜欢

热点阅读