Java Web笔记 —— Servlet

WEB资源

在http协议中,规定了请求和响应双方,客户端和服务器端与web相关的资源。

静态资源

    html js css

动态资源

    servlet/jsp




Servlet


Servlet其实是一个Java程序,运行在web服务器上,用于接收和响应客户端的http请求。

更多的是为了配合动态资源来做。当然静态资源也需要用到Servlet,只不是Tomcat里面定义好了一个DefaultServlet。



Servlet初步


1.编写一个web工程,要有一个服务器。


2.在WebCountent在创建html文件。


3.测试运行web工程

    1.新建一个类,实现Serclet接口

       
        package servlet;

        import java.io.IOException;
        
        import javax.servlet.Servlet;
        import javax.servlet.ServletConfig;
        import javax.servlet.ServletException;
        import javax.servlet.ServletRequest;
        import javax.servlet.ServletResponse;
        
        public class HelloServlet implements Servlet{
        
            @Override
            public void destroy() {
                // TODO Auto-generated method stub
                
            }
        
            @Override
            public ServletConfig getServletConfig() {
                // TODO Auto-generated method stub
                return null;
            }
        
            @Override
            public String getServletInfo() {
                // TODO Auto-generated method stub
                return null;
            }
        
            @Override
            public void init(ServletConfig arg0) throws ServletException {
                // TODO Auto-generated method stub
                
            }
        
            @Override
            public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
                System.out.println("Hello Servlet!");
            }
            
        }


    2.配置Servlet,告诉服务器,我们的应用有多少个Servlet

        在webContent/WEB.INF/web.xml里面写以下内容

       
<?xml version="1.0" encoding="UTF-8"?>
        <web-app version="3.0"
             xmlns="http://java.sun.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
          <display-name>HelloWeb</display-name>
          <welcome-file-list>
              <welcome-file>index.html</welcome-file>
              <welcome-file>index.htm</welcome-file>
              <welcome-file>index.jsp</welcome-file>
              <welcome-file>default.html</welcome-file>
              <welcome-file>default.htm</welcome-file>
              <welcome-file>default.jsp</welcome-file>
          </welcome-file-list>
          
          <!-- 向Tomcat报告,我这个应用里面有servlet,名字叫做...,具体的路径是... -->
          <servlet>
              <servlet-name>HelloServlet</servlet-name>
              <servlet-class>servlet.HelloServlet</servlet-class>
          </servlet>
          
          <!-- 注册Servlet的映射,servlet-name:找到上面注册的具体servlet,url-pattern:在地址栏上的path -->
          <servlet-mapping>
              <servlet-name>HelloServlet</servlet-name>
              <url-pattern>/a</url-pattern>
          </servlet-mapping>
          </web-app>

    3.右键WEB工程,选择Run As --> Run on Web,等待tomcat开启,出现先前创建的html文件现实的内容。在地址栏输入

 http://localhost:8090/HelloServlet/a

    控制台出现Hello Servlet!即成功。



Servlet执行过程


URL:
http://localhost:8090/HelloServlet/a

1.找到Tomcat应用

2.找到web项目

3.找到web.xml,然后在里面找到url-pattern,有没有哪一个pattern的内容是/a

4.找到servlet-mapping中的那个servlet-name【HelloServlet】

5.找到上面定义的servlet元素中的servlet-name

6.找到下面定义的servlet-class,然后开始创建该类的实例

7.继而执行该servlet中的service方法



Servlet通用写法


        Servlet (接口)
            |
            |
        GenericServlet
            |
            |
        HttpServlet (用于处理Http的请求)

定义一个类,继承HttpServlet  复写doGet 和 doPost


   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        super.doGet(req, resp);
        System.out.println("get-------");
    }
    
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        super.doPost(req, resp);
        System.out.println("post-------");
    }


Servlet生命周期

  •  init方法
    
        在创建该Servlet实例时,就执行该方法
        一个Servlet只会初始化一次,所以init只会执行一次
        默认情况下是:初次访问Servlet,才会创建实例

  •  service方法

        只要客户端来了一个请求,就执行这个方法
        该方法可以执行多次,一个请求,对应一次service方法的调用
    

  •  destroy方法

        Servlet销毁的时候,就会执行此方法
        1.该项目从tomcat中移除
        2.正常关闭tomcat就会执行shutdown



让Servlet创建实例的时间提前


1.默认情况下,只有初次访问Servlet的时候才会执行init()方法。有的时候,我们可能需要在这个方法里面执行一些初始化工作,甚至一些比较耗时的逻辑。

2.在配置的时候,使用load-on-startup元素来制定,给定的数字越小,启动的时机就越早,一般不写负数,从2开始即可。












猜你喜欢

转载自blog.csdn.net/qq_40950957/article/details/80571659