servlet

作者: 在努力中 | 来源:发表于2018-07-16 00:33 被阅读0次
1. 什么是Servlet

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

2. Tomcat容器等级
image.png
Engine:引擎
HOSt:主机
Context:一个Context对应一个Web工程
3. 手工编写第一个Servlet

3.1 继承 HttpServlet (Java类)
3.2 重写 doGet()或doPost() 方法

package lsy;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet
{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("处理get() 请求");
        
        //设置字符,中文正确显示,显示html标签
        resp.setContentType("text/html;charset=utf-8");
        // 创建 PrintWriter 实例对象,可以输出语句到页面
        PrintWriter out = resp.getWriter();
        
        out.print("<strong>使用get方法提交</strong>");
        
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("处理post() 请求");
        //设置字符,中文正确显示,显示html标签
        resp.setContentType("text/html;charset=utf-8");
        // 创建 PrintWriter 实例对象,可以输出语句到页面
        PrintWriter out = resp.getWriter();
        out.print("<strong>使用post方法提交</strong>");
    }

}

3.3 在web.xml文件中,注册该Servlet

  <servlet>
    <servlet-name>Hello</servlet-name>
    <servlet-class>lsy.HelloServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/lsy.HelloServlet</url-pattern>
  </servlet-mapping>
4. 使用 MyEclipse 编写Servlet

4.1 src->new -> Servlet
myeclipse可以自动注册Servlet
4.2 重写doGet()/doPost() 方法
4.3 部署运行

5. Server 生命周期
  • 执行流程如图


    image.png
  • 生命周期
  1. 初始化阶段:调用init() 方法
  2. 响应客户请求阶段:由service 方法根据提交的方式,选择执行doGet/doPost
  3. 终止阶段:调用destory方法


    image.png

代码演示

TestServlet1
package servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet1 extends HttpServlet {

    /**
         * Constructor of the object.
         */
    public TestServlet1() {
        System.out.println("TestServlet1 的 构造方法被执行...");
    }

    /**
         * Destruction of the servlet. <br>
         */
    public void destroy() {
        System.out.println("TestServlet1 的 销毁方法被执行...");
    }

    /**
         * The doGet method of the servlet. <br>
         *
         * This method is called when a form has its tag value method equals to get.
         * 
         * @param request the request send by the client to the server
         * @param response the response send by the server to the client
         * @throws ServletException if an error occurred
         * @throws IOException if an error occurred
         */
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        System.out.println("TestServlet1 的 doGet() 方法被执行...");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        out.println("<h1>大家好,我是TestServlet1!</h1>");
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }

    /**
         * The doPost method of the servlet. <br>
         *
         * This method is called when a form has its tag value method equals to post.
         * 
         * @param request the request send by the client to the server
         * @param response the response send by the server to the client
         * @throws ServletException if an error occurred
         * @throws IOException if an error occurred
         */
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("TestServlet1 的 doGet() 方法被执行...");
        doGet(request,response); //让doPost()执行与doGet()相同的操作。
    }

    /**
         * Initialization of the servlet. <br>
         *
         * @throws ServletException if an error occurs
         */
    public void init() throws ServletException {
        // Put your code here
    }

}
jsp
 <body>
    <h1>Servlet生命周期</h1>
    <hr>
    <a href="servlet/TestServlet1">以Get方式请求TestServlet1</a>
  </body>

执行结果

TestServlet1 的 构造方法被执行...
TestServlet1 的 init() 方法被执行
TestServlet1 的 doGet() 方法被执行...
结束服务器时候,
TestServlet1 的 销毁方法被执行...
  • Tomcat 装载Servlet 的三种情况
  1. Servlet 启动时候自动装载某些Servlet
    在 web.xml中配置
<servlet>
...
<loadon-startup>1</loadon-sartup>
// 数字越小,装载权限越高
</servlet>
  1. 在Servlet容器启动后,客户首次向Servlet发送请求。

  2. Servlet类文件被更新后,重新装载Servlet。(Servlet对象长期保存在内存当中)
    Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次
    编写代码判断Servlet 的方法执行顺序如下:
    Servlet 的各种方法被执行的顺序

Servlet 的构造方法被执行....
Servlet 的初始化方法被执行....
Servlet 的doGet()或者doPost()方法被执行
Servlet 的销毁方法被执行....

注意:
为了是Servlet 返回内容能正常显示中文,我们需要设置response.setContentType("text/html;charset=utf-8");
放在doGet()或者是doPost()方法中的

6. Servlet 获取 九大内置对象
  • Servlet与JSP内置对象的对应关系


    image.png
7. Servlet 与 表单
8. Server 路径跳转

项目实践

相关文章

  • servlet 笔记

    servlet servlet 声明周期 Servlet 的线程安全 Servlet 获取配置信息 Servlet...

  • Servlet

    Servlet介绍 Servlet开发步骤 创建Servlet 配置Servlet 配置Servlet中设置初始化...

  • 深入理解Servlet技术

    1. 什么是servlet servlet Servlet是javax.servlet.Servlet包中定义的一...

  • Servlet与Jsp(1)

    Servlet 实现原理Servlet接口使Servlet容器能将Servlet类载入内存,并在Servlet实例...

  • web.xml不同版本之间头信息的区别

    一、Servlet 2.3 二、Servlet 2.4 三、Servlet 2.5 四、Servlet 3.0 五...

  • Servlet入门

    Servlet简介 Servlet(Servlet Applet)是Java Servlet的简称,称为小服务程序...

  • Servlet 实例

    Servlet 实例 Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接...

  • Java Servlet API

    Servlet 支持的版本 Servlet 3.0 新特性详解 Servlet 3.0 新特性概述Servlet ...

  • 简单认识Servlet

    Servlet与JSP的关系 初识Servlet Servlet层级关系 顶层Servlet接口 GenericS...

  • 2019-10-14 SpringMVC与Servlet接口 S

    SpringMVC与Servlet接口 Servlet接口规范 Servlet 接口 定义servlet接口规范i...

网友评论

      本文标题:servlet

      本文链接:https://www.haomeiwen.com/subject/upwepftx.html