Java ServletJava的介绍

什么是Servlet

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

Tomcat容器等级

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

 

 

 

准备工作

  • 安装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(在类中用@WebServlet注解也行)
    web.xml:
  •  

    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">

    Welcome to Tomcat

    Welcome to Tomcat

    //第一种方式需要加入的部分

    hello
    com.thorin.Hello


    hello
    /thorin

    //第二种方式需要加入的部分

    hellogen
    com.thorin.HelloGen


    hellogen
    /hellogen

    //第三种方式需要加入的部分

    hellohttp
    com.thorin.HelloHttp


    hellohttp
    /hellohttp


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

  •  

     效果1:

效果2:

 效果3:

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

 

posted @ 2021-08-05 16:56  屠剑  阅读(213)  评论(0编辑  收藏  举报