您当前的位置: 首页 >  安全

white camel

暂无认证

  • 2浏览

    0关注

    442博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Servlet——映射细节、3.0注解配置、Servlet是单例会造成线程不安全问题

white camel 发布时间:2020-01-21 17:04:35 ,浏览量:2

目录
  • Servlet映射细节
  • Servlet3.0新特性-注解配置
  • Servlet线程不安全问题
Servlet映射细节

跳转到目录

  • 一个Servlet可以有多个(可以使用多个资源名称找到当前的Servlet), 也可以有多个 在这里插入图片描述
  • 配置Servlet可以使用通配符( * ) * : 表示任意字符 /* :可以使用任意的字符访问当前的Servlet /xxx/* : xxx表示一个模块,/system/* (登陆验证) *.拓展名: 请求的资源必须以.zy结尾才能访问Servlet 在这里插入图片描述
  • 自定义的Servlet的<servlet-name>不能够为default,使用它会造成项目下面的静态资源找不到;在Tomcat/conf/web.xml文件中配置一个名字为default的Servlet,该Servlet在负责访问项目下的静态资源 在这里插入图片描述
Servlet3.0新特性-注解配置

跳转到目录 一、传统的使用XML做Servlet配置

    
    
        secondServlet
        com.sunny._01_servlet.MyServlet2
        
        
            encoding
            UTF-8
        
    

    
        secondServlet
        /MyServlet2
    

问题: 在一个应用中存在很多Servlet,那么配置文件就会非常臃肿,开发效率低,不便于后期的维护. 解决方案: 在Tomcat7开始, 可以使用 注解(WebServlet) 来取代XML配置.

二、使用注解(WebServlet)做Servlet配置

  • 使用注解配置Servlet的步骤:
  1. 在Servlet类上贴@WebServlet注解
    // m1就表示资源名称
    @WebServlet("/m1")
    
  2. 在web.xml文件中进行如下的配置 metadata-complete=“true”:表示是否忽略Servlet上面的注解 metadata-complete="false"表示是否不忽略Servlet上面的注解, 缺省值
  3. 如何在注解中配置Servlet参数
        @WebServlet(value = "/m1",
               initParams = {
                       @WebInitParam(name = "encoding", value = "UTF-8"),
                       @WebInitParam(name = "name", value = "gzy")
               }
       )
    

三、Web.xml和配置注解的选择

  • 配置Web.xml
    • 优点: 配置清晰直观,因为和Java代码分离,维护性高.
    • 缺点: 在Web.xml中配置很多Servlet造成文件臃肿,维护性低
  • 注解
    • 优点: 开发效率高,方便快速定位
    • 缺点: 与Java代码耦合在一起,维护性低.
  • 如何选择:
    • 在开发中, XML文件用于做通用配置,个别配置使用注解.
Servlet线程不安全问题 (重点)

跳转到目录 在这里插入图片描述

  • Servlet的线程不安全问题 根本原因: Servlet是单例的, Servlet中的非static的成员变量只有一份,多个客户端好比是多个线程,都访问的是同一空间.
  • 解决方案
    • 在Servlet中不要使用成员变量, 使用局部变量,每一个用户,每次请求都会调用service方法,而局部变量在service方法中,每一次访问都是新的空间.
关注
打赏
1661428283
查看更多评论
立即登录/注册

微信扫码登录

0.0381s