Servlet编程方式
- 1、实现Servlet接口
这种情况Servlel不是独立的应用程序,没有main( )方法,而是生存在容器中,由容器来管理。编程时需要实现javax.servlet.Servlet接口的5个方法。 - 2、继承GenericServlet类
由javax. servlet包提供个抽象类GenericSerlet。它给出了Servlet接口中除service()方法外的其他4个方法的简单实现,并且还实现了ServletConfig接口,编程时直接继承这个类,代码会简化很多。 - 3、继承HttpServlet、覆盖doXXX( )方法
在大部分网络中,都是客户端通过HTTP协议来访问服务器端的资源。为了快速开发应用于HTTP协议的Servlet类,在javax.servlet.http包中提供了一个抽象类HttpServlet,它继承了GenericServlet类。编写一个Servlet类继承HttpServlet,只需要覆盖相应的doxx()方法即可。 - 4、继承HttpServlet、重写service( )方法
其本质就是扩展HttpServlet类,用户只需重写service( )方法,Servlet模块执行service()方法时,会自动调用doPost()和doGet()这两个方法,实现Servlet的逻辑处理功能。
步骤
第一步:创建一个Java类继承HttpServlet,使之成为一个Servlet接口实现类。
第二步:重写HttpServlet父类两个方法,doGet或doPost。
第三步:将Servlet接口实现类信息注册到Tomcat服务器(在web.xml里面部署)。
xml配置信息
<?xml version="1.0" encoding="UTF-8"?>
<web-app ...>
<!--将Servlet接口实现类的类路径地址交给Tomcat-->
<servlet>
<!--声明一个变量存储servlet接口实现类的类路径-->
<servlet-name>自己起的名字</servlet-name>
<!--声明servlet接口实现类的类路径-->
<servlet-class>servlet的类名,如果有包加上包名,注意这里的类名不要加.java</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>和servlet-name里的值一样</servlet-name>
<url-pattern>该servlet运行的路径名,随便起名字,但是前面要加上“/”</url-pattern>
</servlet-mapping>
</web-app>
代码示例
package com.zyh.controller;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 直接实现servlet接口的话需要实现五个方法:
* init
* getServletConfig
* getServletInfo
* destroy
* service---只有这个方法有用
* 为什么?
* Tomcat根据Servlet规范调用Servlet接口实现类规则:
* 1、Tomcat有权创建Servlet接口实现类实例对象:
* Servlet oneservlet = new OneServlet();
* 2、Tomcat根据实例对象调用service方法处理当前请求:
* oneServlet.service();
*/
public class OneServlet extends HttpServlet {
/*
* 调用doGet还是doPost方法?
* 由父类HttpServlet决定(看源码,大概在227行)
* */
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doPost");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>com.zyh.controller.OneServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/myserv</url-pattern>
</servlet-mapping>
</web-app>
访问: