servlet的开发部署流程
1.在%TOMCAT_HOME%/webapps下WEB-INF的文件夹,写一个文件web.xml(该网站的配置信息),建立一个classes的子文件夹,也可以从别的目录ROOT下拷贝。下面是web.xml配置文件:
<servlet><!—给servlet取名,可以随意取名--><servlet-name>hello</servlet-name><!—指明servlet的路径,就是servlet的包+类名--><servlet-class>com.test.Hello</servlet-class></servlet><servlet-mapping><!—给servlet取名,可以随意取名--><servlet-name>hello</servlet-name><!—浏览器中输入的url,可以随意取名--><url-pattern>/hello<url-pattern></servlet-mapping>
2.开发servlet(引入Tomcat文件夹下lib文件夹里的servlet-api.jar) 3.部署你的servlet 4.启动Tomcat,访问你的servlet,在浏览器的地址栏中输入:http://127.0.0.1:8080/myWebSite/hello回车就可以看到servlet的输出
servlet的生命周期
servlet部署在容器里(我们使用的是Tomcat,也可是别的,比如jboss,weblogic。。。),它的生命周期由容器来管理。 servlet的生命周期分为以下几个阶段:
5.销毁:调用servlet的destroy()方法,销毁该servlet实例,该方法在以下情况被调用:
a)tomcat关闭 b)reload该webapps c)重新启动电脑
开发servlet的方法
三种方法: 1.实现servlet接口
该接口定义了5个方法 2.继承GenericServlet
通过GenericServlet去开发servlet,只需要重写service方法,相对来说要简单一些。 3.继承HttpServlet
通过HttpServlet去开发servlet,需要重写doGet、doPost方法,这是目前用的最多的一种方法。
首先明确,Servlet并不是专门用于处理Http请求的。然后再说三种方式的联系和区别。 1)原生Servlet接口
package javax.servlet; import java.io.IOException; public interface Servlet { public void init(ServletConfig config) throws ServletException; public ServletConfig getServletConfig(); public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; public String getServletInfo(); public void destroy(); }
可以看到Servlet接口是定义在javax.servlet包中,该接口定义了5个方法。
init() :在Servlet实例化之后,Servlet容器会调用init()方法,来初始化该对象,主要是为了让Servlet对象在处理客户请求之前可以完成一些初始化工作,比如:建立数据库的连接,获取配置信息。service():容器调用service()方法来处理客户端的请求。destroy():当容器检测到一个Servlet对象应该从服务器中被移除的时候,容器会调用该对象的destroy方法,以便让Servlet对象可以释放它所使用的资源,保存数据到持久化存储设备中,例如:将内存中的数据保存到数据库中,关闭数据库的连接。 2)GenericServlet 为什么会出现GenericServlet?如果我们直接通过实现Servlet接口来编写一个Servlet类,就需要实现Servlet接口中定义的5种方法,为了简化Servlet的编写,在javax.servlet包中,给我们提供了一个抽象的类GenericServlet,它提供了除service()方法外的其他4种方法的简单实现。GenericServlet类定义了一个通用的,不依赖具体协议的Servlet。
3)HttpServlet 由于大多数网络应用中,都是浏览器通过HTTP协议去访问服务器资源,而我们编写的Servlet也主要是应用于HTTP协议的请求和响应,为了快速开发应用于HTTP协议的Servlet,Sun公司在javax.servlet.http包中给我们提供了一个抽象的类HttpServlet,他继承自GenericServlet类,用于创建适合Web站点的HTTP Servlet。