1.Servlet

作者: _麻辣香锅不要辣 | 来源:发表于2019-11-08 10:57 被阅读0次

    概念

    Servlet(server applet)就是运行在服务器端的小程序,Servlet是一个接口,定义了Java类被浏览器访问到(Tomcat识别)的规则。

    例子

    1.创建JavaEE项目
    2.定义一个类,实现Servlet接口
    3.实现接口中的抽象方法
    4.配置Servlet(2.5在web.xml中配置,3.0用注解的方式配置)

    public class ServletDemo 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() {
    
        }
    }
    
    <?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_3_1.xsd"
             version="3.1">
    <servlet>
            <servlet-name>first_servlet</servlet-name>
            <servlet-class>cn.yb.test.ServletDemo</servlet-class>
            <!--指定Servlet创建的时机-->
            <!--1.第一次访问时创建-->
            <!--load-on-startup 值为负数-->
            <!--2.在服务器启动时创建-->
            <!--load-on-startup 值为正数-->
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>first_servlet</servlet-name>
            <url-pattern>/firstservlet</url-pattern>
        </servlet-mapping>
    </web-app>
    

    3.0中使用@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 "";
    }
    

    原理

    1.当服务器接收到客户端浏览器的请求后,会解析请求url的路径,获取访问的Servlet的资源路径
    2.查找web.xml文件,是否有对应的<url-pattern>
    3.有的话,tomcat会根据对应的<servlet-class>的全类名,将字节码文件加载进内存,并且创建其对象
    4.调用其方法


    1.png

    Servlet体系结构

    Servlet --- 接口
    GenericServlet --- 抽象类
    HttpServlet---抽象类

    • GenericServlet:将Servlet接口中其他的方法做了默认的空实现,只将service()方法作为抽象方法
    • HttpServlet:对http协议的一种封装,简化操作
    public class ServletDemo1 extends GenericServlet {
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("hello");
        }
    }
    
    public class ServletDemo1 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            super.doGet(req, resp);
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            super.doPost(req, resp);
        }
    }
    

    相关文章

      网友评论

          本文标题:1.Servlet

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