zoukankan      html  css  js  c++  java
  • 创建简单web程序了解servlet

    1、创建简单web项目

    1.1 创建工程


    1.2 创建servlet实现类

    package cn.it.web;
    
    import javax.servlet.*;
    import java.io.IOException;
    
    public class MyServlet implements Servlet {
    
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
    
        }
    
        @Override
        public ServletConfig getServletConfig() {
            return null;
        }
    
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("hello");
        }
    
        @Override
        public String getServletInfo() {
            return null;
        }
    
        @Override
        public void destroy() {
    
        }
    }
    
    

    1.3 在web.xml中配置servlet和servlet-mapping

    <?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">
        <servlet>
            <servlet-name>MyServlet</servlet-name>
            <servlet-class>cn.it.web.MyServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>MyServlet</servlet-name>
            <url-pattern>/index</url-pattern>
        </servlet-mapping>
    </web-app>
    

    执行原理:
    1、当tomcat服务器受到客户端浏览器的请求后,会解析请求url路径,获取访问的servlet资源路径
    2、查找web.xml文件,是否有对应的标签内容
    3、如果有则找到相应的全类名
    4、tomcat将加载字节码文件到内存创建其对象
    5、调用其方法

    servlet的方法及生命周期

    servlet接口一共有以下几个方法:

    public interface Servlet {
        void init(ServletConfig var1) throws ServletException;
    
        ServletConfig getServletConfig();
    
        void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
    
        String getServletInfo();
    
        void destroy();
    }
    
    1、void init(ServletConfig var1) throws ServletException;
      初始化方法,当servlet创建时执行,只会执行一次
    
    2、ServletConfig getServletConfig();
      获取配置方法
    
    3、void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
      提供服务的方法,每次执行都会执行,执行多次
    
    4、String getServletInfo();
      获取信息方法 
    
    5、void destroy();
      销毁方法,只有servlet被杀死时才会执行,例如tomcat关闭,执行一次
    

    示例:

    public class MyServlet implements Servlet {
    
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
            System.out.println("init function");
        }
    
        @Override
        public ServletConfig getServletConfig() {
            return null;
        }
    
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("hello");
        }
    
        @Override
        public String getServletInfo() {
            return null;
        }
    
        @Override
        public void destroy() {
            System.out.println("destroy function");
        }
    }
    



    *Servlet中的生命周期:
    1、被创建执行init方法执行一次
    2、提供服务,service方法每次执行
    3、destroy关闭服务时执行一次

    servlet生命周期详解

    *Servlet中的生命周期:
    1、被创建执行init方法执行一次
    servler什么时候被创建?
    默认情况下是第一次访问
    可以配置成在tomcat启动时创建
    在web.xml里的servlet标签配置
    "1"
    ""的为>=0为启动创建,默认复数访问时创建
    servlet是单例的,在内存中同一servlet只会存在一个,多个用户访问时可能存在线程安全问题
    *解决方法:尽量不要在servlet中定义成员变量,即使定义了成员变量也不要对其赋值

    <?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">
        <servlet>
            <servlet-name>MyServlet</servlet-name>
            <servlet-class>cn.it.web.MyServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>MyServlet</servlet-name>
            <url-pattern>/index</url-pattern>
        </servlet-mapping>
    </web-app>
    

    2、提供服务,service方法每次执行
    3、destroy关闭服务时执行一次

    servlet3.0

    好处:
    支持注解配置,可以不需要web.xml了
    步骤:
    1、创建javaee项目,在3.0以上版本可以不创建web.xml
    2、定义一个类,实现servlet接口
    3、复写方法
    4、在类上使用webSer
    示例:创建一个servlet实现类

    @WebServlet(name = "index2",urlPatterns = "/index2")
    public class MyServlet2 implements Servlet {
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
    
        }
    
        @Override
        public ServletConfig getServletConfig() {
            return null;
        }
    
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("servlet2");
        }
    
        @Override
        public String getServletInfo() {
            return null;
        }
    
        @Override
        public void destroy() {
    
        }
    }
    

    webServlet注解:

    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface WebServlet {
        String name() default "";
    
        String[] value() default {};
    
        String[] urlPatterns() default {};
    
        int loadOnStartup() default -1;
    
        WebInitParam[] initParams() default {};
    
        boolean asyncSupported() default false;
    
        String smallIcon() default "";
    
        String largeIcon() default "";
    
        String description() default "";
    
        String displayName() default "";
    }
    
  • 相关阅读:
    记第一次为开源代码报漏洞
    入职第三周——总结前两周学习内容
    入职一星期之感想
    毕业季之礼
    基于mint-ui的移动应用开发案例二(项目搭建)
    基于mint-ui的移动应用开发案例一(简介)
    工作笔记一——杂项
    微信小程序实战小小应用——豆瓣电影
    React学习之坑(二)- 基础入门
    React学习笔记(一)- 环境搭建
  • 原文地址:https://www.cnblogs.com/Kingfan1993/p/13443030.html
Copyright © 2011-2022 走看看