zoukankan      html  css  js  c++  java
  • Java Web核心组件之Servlet的使用介绍

      Servlet是Java Servlet的简称,称为小程序或服务连接器,用Java编写的服务端程序,主要功能在于交互式地浏览和修改数据,生成动态的Web内容;Servlet运行于支持Java的应用服务器中;从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展HTTP协议的Web服务器;

      Servlet编程需要用javax.servletjavax.servlet.http两个包下面的类和接口,在所有的类和接口中,javax.servlet.servlet接口最为重要。所有的servlet程序都必须实现该接口或者继承实现了该接口的类;

                  

      上面这张图是Servlet的类关系的结构图;其中Servlet是接口,GenericServlet是实现Servlet接口的抽象类,HttpServlet是继承GenericServlet的抽象类;

      •  Servlet接口

        ServletAPI中最重要的是Servlet接口,所有Servlet都会直接或间接的与该接口发生联系,或是直接实现该接口,或间接继承自实现了该接口的类,见下图; 

            

                  

        该接口包含这五个方法:

    init(ServletConfig config)
    ServletConfig getServletConfig()
    service(ServletRequest req,ServletResponse res)
    String getServletInfo()
    destroy()
    

      

      •  GenericServlet抽象类 

        对Servlet接口中的部分方法(initdestroy)添加了实现,使得开发时只需要考虑针对service()方法的业务实现即可 ,每次客户端向服务器发出请求时,服务器就会调用这个方法,service()方法有两个参数(ServletRequest和ServletResponse),ServletRequest保存了客户向服务器发送的请求,而ServletResponse用来设置如何对客户进行响应;

      •  HttpServle抽象

         继承GenericServlet的基础上进一步的扩展 ;

      Servlet的url-pattern配置方式  

        1.全路径匹配,精确匹配,url-pattern怎么写的,外界就怎么访问

    在继承HttpServlet类的上面添加注解@WebServlet("/demo");
    在web.xml中添加<url-pattern>/demo</url-pattern>;
    

      

        2.目录匹配,带"*"的

    在继承HttpServlet类的上面添加注解@WebServlet("/demo/*");
    在web.xml中添加<url-pattern>/demo/*</url-pattern>;
    

      

        3..扩展名匹配,请求的url路径只需要满足扩展名就行

    在继承HttpServlet类的上面添加注解@WebServlet("*.jsp");
    在web.xml中添加<url-pattern>*.jsp</url-pattern>;
    

      

      Servlet也可以使用@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 "";
    }
    

      

       @WebServlet注解列表

    属性名类型描述
    name String 指定Servlet 的 name 属性,等价于 <servlet-name>。如果没有显式指定,则该 Servlet 的取值即为类的全限定名;
    value String[] 该属性等价于 urlPatterns 属性;两个属性不能同时使用;
    urlPatterns String[] 指定一组 Servlet 的 URL 匹配模式,等价于<url-pattern>标签;
    loadOnStartup int 指定 Servlet 的加载顺序,等价于 <load-on-startup>标签;
    initParams WebInitParam[] 指定一组 Servlet 初始化参数,等价于<init-param>标签;
    asyncSupported boolean 声明 Servlet 是否支持异步操作模式,等价于<async-supported> 标签;
    description String 该Servlet 的描述信息,等价于<description>标签;
    displayName String 该Servlet的显示名,通常配合工具使用,等价于<display-name>标签;
  • 相关阅读:
    周总结07(2018.1.8-2018.1.13)
    软件工程概论课总结
    第二阶段团队冲刺-seven
    人月神话阅读笔记06
    第二阶段团队冲刺-six
    周总结06(2018.1.1-2018.1.6)
    第二阶段团队冲刺-five
    开发记录06
    开发记录05
    开发记录04
  • 原文地址:https://www.cnblogs.com/coder-zyc/p/10754084.html
Copyright © 2011-2022 走看看