servlet 详解(一)

servlet 详解(一)

手动创建动态项目

1.创建一个Java项目:HelloServletWeb;

2.在HelloServletWeb中创建一个文件夹webapp,表示Web项目的根;

3.在webapp中创建WEB-INF文件夹

4.在WEB-IN中创建文件夹:lib,classes

5.在WEB-IN中去Tomcat根/conf拷贝web.xml文件,只需要保留根元素

6.把当前项目的classpath路径改成webapp/WEB-IN下的classes中

Servlet的第一个程序编写步骤:

1:拷贝Tomcat根/lib/servlet-api.jar到项目的WEB-INF/lib目录中,并做build path

2:编写Servlet程序,使之实现javax.servlet.Servlet接口,并覆盖接口中的方法.

    public class HelloServlet implements javax.servlet.Servlet{...实现方法...}

3:发现方法中参数出现arg0,arg1的情况是因为没有关联Servlet的源代码.

    是否关联源代码和程序最终的运行没有关系,只是在开发阶段参数美观,可阅读源代码.

    Tomcat的源代码程序:apache-tomcat-7.0.57-src.zip

4:在service(ServletRequest req, ServletResponse res)方法,打印一句话.

引导:此时HelloServlet类,和Tomcat一点关系都没有:我们需要告诉Tomcat来帮我们管理HelloServlet类.(Tomcat是Servlet的容器,会负责Servlet对象的生命周期和方法调用).所以,得以配置的形式,告诉Tomcat来帮我们管理自定义的Servlet类.

5:Servlet配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

部署项目,并访问:

server.xml中:

   <Context docBase="D:\javapro\demo\webapp" path="day3" />
   访问:
   http://ip:port/contextPath/资源名
   http://localhost:80/day3/hello

生命周期:从出生--->死亡,中间的过程

Servlet的生命周期:创建对象,初始化操作,运行操作,销毁操作.

Tomcat管理了Servlet对象的生命周期,Servlet对象整个过程都是由Tomcat来管理的.

Servlet的创建,初始化,运行,销毁的行为都是Tomcat来负责调用的.


javax.servlet.Servlet接口中的方法:

String getServletInfo():获取Servlet的信息(Servlet的作者,版本,版权相关).

ServletConfig getServletConfig():获取Servlet的配置信息对象.

void init(ServletConfig config):初始化Servlet对象方法

void service(ServletRequest req, ServletResponse resp):服务方法,Web动态网页的操作就编写在该方法.

void destroy():销毁Servlet对象方法.

生命周期方法:

在Web的生命周期中(Tomcat启动->Tomcat关闭),Servlet是单例的.

构造器:在服务端程序第一次被请求的时候,调用,只被调用一次.

void init(ServletConfig config):在构造器执行完毕之后,调用init方法,也只会执行一次.

void service(ServletRequest req, ServletResponse resp):每一次请求都会执行该方法.

void destroy():正常关闭Tomcat才会执行(该方法不一定会被执行,我们没必要在其中编写扫尾的操作).

总结:构造器--->init方法---->[ service方法 ]循环 ---->destory方法


注意:

1):Servlet类的构造器必须使用public修饰.

2):Servlet类必须是无参数构造器.

原因:底层创建Servlet对象:Class.newInstance()方式.--->公共的无参数构造器.

总结:保证Servlet必须有一个公共的无参数构造器,方便Tomcat底层创建Servlet的对象.

posted @ 2017-03-05 14:30  阳光下的代码  阅读(235)  评论(0编辑  收藏  举报