您的位置:首页 > 其它

servlet的 线程安全问题&创建时机改变&映射细节

2018-10-15 21:20 381 查看
版权声明:本文为博主原创,无版权,未经博主允许可以随意转载,无需注明出处,随意修改或保持可作为原创! https://blog.csdn.net/qq_41517071/article/details/83064892

 Servlet的细节: 


a: servlet 的线程安全问题:

 
 1) Servlet是单例的, 不安全的。
   当Servlet的实例被创建后,自始至终在驻留在内存当中。 只有一份。 
   当多条线程对servlet的全局变量进行访问的时候,就容易引发数据的安全问题。 
   
   
 2)以下几种方式 , 去解决数据的安全问题: 
       a:尽量的不要使用全局变量:  使用局部变量。 
       b:提供无状态的成员:  不提供get 和 set方法: 
       c: 提供只读状态: 只提供get方法: 
       
  

b: 改变Servlet的创建时机: 


  默认情况: 在客户端浏览器第一次发出请求的时候, 服务器端创建servlet。 
  改变:  在服务器端启动的时候,创建servlet 。  创建时机提前。 
  web.xml文件当中:    
  <load-on-startup>0</load-on-startup> 
  
     数值越小, 创建的时机越早。 
 

c:  当前web 应用程序的:  web.xml

  tomcat: web.xml  tomcat 运行时候依赖的一个文件。 
    
    当前web应用程序的web.xml 继承了 tomcat服务器的web.xml 文件。   在加载web.xml的时候,优先加载父文件。 
    
    

d: servlet的映射细节: 


 
  (1)同一个servlet 可以绑定多个映射路径: 
  案例:  
 <servlet-mapping>
    <servlet-name>CServlet</servlet-name>
    <url-pattern>/servlet/CServlet</url-pattern>
    <url-pattern>/servlet/xxx</url-pattern>
  </servlet-mapping>
  
 (2) 配置映射路径的时候,可以使用通配符: 
  1)
   <url-pattern>/servlet/xxx</url-pattern> 
   映射标签在进行配置的时候,必须是/ 开头。 /相对路径, 相对于当前的web应用:  http://localhost:8080/javaEE-04/
 2) 同一个servlet 可以配置多个映射路径:   
  <servlet-mapping>
    <servlet-name>CServlet</servlet-name>
    <url-pattern>/servlet/CServlet</url-pattern>
    <url-pattern>/servlet/*</url-pattern>
  </servlet-mapping>
    
   
   3) 通配符的使用: 
   *: 代表任意: 
   /* :代表的是任意的请求: 
   *.do  : 只要是.do结尾的都可以。 
   
   注意: * 只能为前缀 或者是后缀。 不能在中间使用:  
   
   4)通配符的优先级的问题:  
       在使用通配符的时候,才有精确匹配的原则。   

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: