servlet学习笔记

来源:互联网 发布:形容网络与生活的词语 编辑:程序博客网 时间:2024/05/18 15:04

1. 创建servlet的一个demo

  • Jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>CreateServletDemo</title></head><body>    <h1>servlet demo</h1>    <a href="servlet/HelloServlet">Get()</a>    <br>    <form action="servlet/HelloServlet" method="post">        <input type="submit" value="Post()" />    </form></body></html>
<a href="servlet/HelloServlet">Get()</a>

请求方式是Get,而

<form action="servlet/HelloServlet" method="post">    <input type="submit" value="Post()" /></form>

form表单指定请求方式为Post。

  • 创建Servlet类,可以通过点击右键的方式创建。
public class HelloServlet extends HttpServlet {    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        response.setContentType("text/html;charset=utf-8");        PrintWriter out = response.getWriter();        out.print("<html>");        out.print("<body>");        out.print("<strong>hello servlet</strong>");        out.print("</body>");        out.print("</html>");    }    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        doPost( request, response);    }}

重写doGet()和doPost()方法。

  • 在web.xml中注册
    <servlet>        <servlet-name>HelloServlet</servlet-name>        <servlet-class>servlet.HelloServlet</servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>HelloServlet</servlet-name>        <url-pattern>/servlet/HelloServlet</url-pattern>    </servlet-mapping>

2. Servlet执行原理

  • 浏览器发送url请求,请求地址为 http://localhost:8080/CreateServletDemo/servlet/HelloServlet
  • 浏览器访问CreateServletDemo这个工程,然后将url提交给servlet处理,servlet根据/servlet/HelloServlet找到HelloServlet,然后通过这个servlet-name找到servlet-class是servlet包下的HelloServlet类,由于服务器判断这个请求时Get请求,于是调用HelloServlet类的都Get()方法,完成对页面的处理。处理的流程图如下:这里写图片描述

3.Servlet生命周期

有3个方法代表了Servlet的生命周期:

  • init方法,负责初始化Servlet对象。
  • service方法,负责响应客户的请求(调用doGet或doPost等方法)。
  • destroy方法,当Servlet对象退出生命周期时,负责释放占用的资源。

注:在Servlet的整个生命周期内,Servlet的init方法只有在servlet被创建时被调用一次,每次对这个Servlet的访问都会导致Servlet中Service方法执行。

例如:现在浏览器连续访问Servlet 10次,内存中只有一个Sevlet对象。Servlet对象由服务器创建(创建一次),request和response由Servlet容器创建(创建10次)

4.Servlet的继承结构

这里写图片描述

  • Servlet是一个接口interface,定义了Servlet整个生命周期中需要执行的三个方法的声明[init(),service(),destroy()]
  • GenericServlet,抽象类,实现了Servlet接口
  • HttpServlet,抽象类,实现了Http协议的Servlet,继承自GenericServlet
  • 自定义Servlet,需要继承HttpServlet,重写doGet()或都Post()方法
原创粉丝点击