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 "";
    }
    
  • 相关阅读:
    Spring基础知识
    Hibernate基础知识
    Struts2基础知识
    在eclipse里头用checkstyle检查项目出现 File contains tab characters (this is the first instance)原因
    java后台获取cookie里面值得方法
    ckplayer 中的style.swf 中的 style.xml 中的修改方法
    java hql case when 的用法
    Windows下Mongodb安装及配置
    Mongodb中经常出现的错误(汇总)child process failed, exited with error number
    Mac 安装mongodb
  • 原文地址:https://www.cnblogs.com/Kingfan1993/p/13443030.html
Copyright © 2011-2022 走看看