zoukankan      html  css  js  c++  java
  • Java Servlet实现的三种方式

    什么是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!");
        }
    } 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    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();
            }
        }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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);    
        }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    当然,每次写好代码之后,需要在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>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

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

    效果1:
    result1

    效果2:
    result2

    效果3:
    result3

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

  • 相关阅读:
    QTableWidget控件总结<一>
    软件工程概论9
    软件工程概论8
    软件工程概论7
    软件工程概论6
    软件工程概论5
    软件工程概论4
    软件工程概论3
    软件工程概论2
    安装gocode教程
  • 原文地址:https://www.cnblogs.com/pangting/p/7050325.html
Copyright © 2011-2022 走看看