Java Servlet实现的三种方式

来源:互联网 发布:未备案域名 微信 编辑:程序博客网 时间:2024/05/10 13:54

什么是Servlet

Servlet是在服务器上运行的小程序。一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问的这个驻留在服务器内存里的Servlet程序。

Tomcat容器等级

Tomcat的容器分为四个等级,Servlet的容器管理Context容器,一个Context对应一个Web工程。结构如下图所示:
tomcat container

准备工作

  • 安装tomcat
  • 在tomcat中建立如下的目录结构:
    tomcat

  • 即在tomcat的安装目录下的webapps下新建一个MyWebSite文件夹,用来保存自己网站的内容,接下来,在MyWebSite中,建立一个文件夹WEB-INF(注:大小写都必须完全一样),在WEB_INF中,建立一个名为classes和一个名为lib的文件夹,还有一个web.xml的文件(该文件可以从与MyWebSite同级的ROOT文件夹中复制一个过来)共三个文件,如此,就建立好了自己网站的目录结构。


实现Servlet的三种方式

1 实现Servlet接口,然后实现接口中的五个方法,代码为:

public class Hello implements Servlet{     //该函数用于初始化servlet,类似于类的构造函数,该函数只会被调用一次    public void init(ServletConfig parm1) throws ServletException {        System.out.println("init it!");    }    public ServletConfig getServletConfig() {        // TODO: Add your code here        return null;    }     //这个函数用于处理业务逻辑     //当用户每访问servlet时,都会调用     //req:用于获得客户端(浏览器)信息     //res:用于向客户端(浏览器)返回信息    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {        //从res中得到PrintWriter        System.out.println("Service it");        PrintWriter pw = res.getWriter();        pw.println("Hello world!");    }    public String getServletInfo() {        return "";    }     //销毁,释放内存,三种方式会触发destroy     //1. reload该servlet(webApps) 2. 关闭tomcat 3.关机    public void destroy() {        System.out.println("destroy it!");    }} 

2 继承GenericServlet,只需要实现一个方法:service

public class HelloGen extends GenericServlet{    //重写一个方法service即可    public void service(ServletRequest req, ServletResponse res){        //返回Hello world, generic        try{            PrintWriter pw = res.getWriter();            pw.println("Hello generic");        }        catch(Exception e){            e.printStackTrace();        }    }}

3 继承HttpServlet,复写doGetdoPost方法

public class HelloHttp extends HttpServlet{    //处理get请求    public void doGet(HttpServletRequest req, HttpServletResponse res){        //业务逻辑        try{            PrintWriter pw = res.getWriter();            pw.println("hello, Http");        }        catch (Exception e){            e.printStackTrace();        }    }    public void doPost(HttpServletRequest req, HttpServletResponse res){        this.doGet(req,res);        }}

当然,每次写好代码之后,需要在web.xml中注册新的servlet
web.xml:

<?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"  metadata-complete="true">  <display-name>Welcome to Tomcat</display-name>  <description>     Welcome to Tomcat  </description>    //第一种方式需要加入的部分  <servlet>    <servlet-name>hello</servlet-name>    <servlet-class>com.thorin.Hello</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>hello</servlet-name>    <url-pattern>/thorin</url-pattern>  </servlet-mapping>  //第二种方式需要加入的部分  <servlet>    <servlet-name>hellogen</servlet-name>    <servlet-class>com.thorin.HelloGen</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>hellogen</servlet-name>    <url-pattern>/hellogen</url-pattern>  </servlet-mapping>  //第三种方式需要加入的部分  <servlet>    <servlet-name>hellohttp</servlet-name>    <servlet-class>com.thorin.HelloHttp</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>hellohttp</servlet-name>    <url-pattern>/hellohttp</url-pattern>  </servlet-mapping></web-app>

然后在tomcat的管理界面中reload就可看到效果了:
tomcat2

效果1:
result1

效果2:
result2

效果3:
result3

当然,目前使用最常使用的是第三种方式,即继承HttpServlet的方式。

0 0
原创粉丝点击