`
wangyanlong0107
  • 浏览: 481150 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

【转】web.xml文件分析

 
阅读更多

<?xml version="1.0" encoding="UTF-8"?>    <!-- web.xml文件的schema信息 -->                                                 
                                                                                                                           
<!-- 其他的元素都被放到了web-app标签之中 -->                                                                               
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"                                                                           
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                                                                    
  version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee                                                        
  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">                                                                        
                                                                                                                           
  <description>                         <!-- description标签是对站点的描述 -->                                                             
  </description>                                                                                                           
                                                                                                                           
  <display-name>                     <!-- display-name标签定义站点的名称 -->                                                            
  </display-name>                                                                                                          
                                                                                                                           
  <distributable>                      <!-- distributable标签,该站点是否支持分布式管理 -->                                                
  </distributable>                                                                                                         
                                                                                                                           
  <content-param>                   <!-- 用来设定web站台的环境参数-->                                                                  
    <param-name>                    <!-- 参数的名字  -->                                                                               
        MyName                                                                                                               
    </param-name>                                                                                                          
    <param-value>                     <!-- 参数的值 -->                                                                                  
        SuperMos                                                                                                             
    </param-value>                                                                                                         
  </content-param>                  <!-- getServletContent().getInitParameter("MyName"); -->                                           
                                                                                                                           
                                                                                                                           
  <filter>                                   <!-- 用来声明filter的相关的设定 -->                                                                
    <filter-name>                       <!-- 这里保存的当然就是filter的名字 -->                                                            
        SetCharacterEncoding                                                                                                 
    </filter-name>                                                                                                         
                                                                                                                           
    <filter-class>                        <!-- 这里来定义的就是filter类 -->                                                                  
        com.yinhai.SetCharacterEncodingFilter                                                                                
    </filter-clss>                                                                                                         
                                                                                                                           
    <init-param>                        <!-- 这里来定义参数 -->                                                                            
      <param-name>                  <!-- 这里来指定参数的名称 -->                                                                      
          encoding                                                                                                           
      </param-name>                                                                                                        
      <param-value>                   <!-- 这里来制定参数的值 -->                                                                        
          utf-8                                                                                                              
      </param-value>                                                                                                       
    </init-param>                                                                                                          
  </filter>                                  <!-- filter必须和filter-mapping配合使用 -->                                                        
                                                                                                                           
  <filter-mapping>                    <!-- 指定filter所对应的URL -->                                                                     
      <filter-name>                     <!-- 这里来指定filter的名字 -->                                                                    
            SetCharacterEncoding                                                                                             
      </filter-name>                                                                                                       
      <url-pattern>                     <!-- 这里来指定filter所作用的URL -->                                                               
            /*                                                                                                               
      </url-pattern>                                                                                                       
  </filter-mapping>                                                                                                        
                                                                                                                           
  <servlet>                              <!-- 用来声明一个servlet数据 -->                                                                   
    <servlet-name>                                                                                                         
          SuperMos                                                                                                           
    </servlet-name>                                                                                                        
    <servlet-class>                                                                                                        
          com.yinhai.SuperMosServlet                                                                                         
    </servlet-class>                                                                                                       
    <jsp-file>                           <!-- 指定web站台中的某个jsp页面的完整的路径 -->                                                     
                                                                                                                           
    </jsp-file>                                                                                                            
    <init-param>                      <!-- 用来定义参数使用的,里面有name和value -->                                                       
                                                                                                                           
    </init-param>                                                                                                          
  </serlet>                                                                                                                
                                                                                                                           
  <servlet-mapping>                <!-- 和servlet配合使用的标签用来定义url -->                                                         
    <servlet-name>                                                                                                         
        SuperMos                                                                                                             
    </servlet-name>                                                                                                        
    <url-pattern>                                                                                                          
        /yinhai/SuperMosquito                                                                                                
    </url-pattern>                                                                                                         
  </servlet-mapping>                                                                                                       
                                                                                                                           
  <session-config>                     <!-- 用来定义web站点的session参数 -->                                                               
    <session-timeout>                <!-- 用来定义该站点的session有效期,时间为分钟 -->                                                   
        30                                                                                                                   
    </session-timeout>                                                                                                     
  </session-config>                                                                                                        
                                                                                                                           
  <mime-mapping>                    <!-- 定义一个扩展名和某一个MIME type做对应 -->                                                      
    <extension>                          <!-- 扩展名的名称 -->                                                                               
        xls                                                                                                                  
    </extension>                                                                                                           
    <mime-type>                        <!-- 对应的MIME的格式 -->                                                                           
         application/vnd.ms-excel                                                                                             
    </mime-type>                                                                                                           
  </mime-mapping>                                                                                                          
                                                                                                                           
  <welcome-file-list>                 <!-- 用来定义首页的列单 -->                                                                         
    <welcome-file>                    <!-- 定义首页的文件名称 -->                                                                         
          index.jsp                                                                                                          
    </welcome-file>                                                                                                        
    <welcome-file>                                                                                                         
          index.html                                                                                                         
    </welcome-file>                                                                                                        
  </welcome-file-list>                                                                                                     
                                                                                                                           
  <error-page>                        <!-- 用来处理错误的代码或者是异常的页面 -->                                                         
    <error-code>                      <!-- 指定错误的代码  -->                                                                            
        404                                                                                                                  
    </error-code>                                                                                                          
    <location>                           <!-- 指定在web站点内的相应的资源的路径 -->                                                          
         /error404.jsp                                                                                                       
    </location>                                                                                                            
  </error-page>                                                                                                            
  <error-page>                        <!-- 用来处理错误的代码或者是异常的页面 -->                                                         
    <error-code>                      <!-- 指定错误的异常信息  -->                                                                        
          java.lang.Exception                                                                                                
    </error-code>                                                                                                          
    <location>                           <!-- 指定在web站点内的相应的资源的路径 -->                                                          
         /exception.jsp                                                                                                    
    </location>                                                                                                            
  </error-page>                                                                                                            
                                                                                                                           
  <taglib>                               <!-- 用来指定jsp页面用到的tag Library路径  -->                                                      
    <taglib-uri>                        <!-- 指定TLD文件的uri,在jsp页面中用taglib指令取出 -->                                               
        TagLib                                                                                                             
    </taglib-uri>                                                                                                          
    <taglib-location>                <!-- 指定TLD文件的存放位置  -->                                                                     
        /WEB-INF/tlds/TagLib.tld                                                                                           
    </taglib-location>                                                                                                     
  </taglib>                                                                                                                
                                                                                                                           
  <resource-ref>                      <!-- 利用jndi可以取得可用资源,比如数据源 -->                                                         
    <description>                      <!-- 资源的说明 -->                                                                                  
        JNDI JDBC DataSource of SuperMos                                                                                   
    </description>                                                                                                         
    <res-ref-name>                 <!-- 资源的名称 -->                                                                                  
        jdbc/SuperMos_db                                                                                                   
    </res-ref-name>                                                                                                        
    <res-type>                        <!-- 资源的种类 -->                                                                                  
        javax.sql.DataSource                                                                                               
    </res-type>                                                                                                            
    <res-auth>                        <!-- 资源的许可,由Container或者Application -->                                                       
        Container                                                                                                          
    </res-auth>                                                                                                            
    <res-sharing-scope>          <!-- 资源是否可以共享Shareable,Unshareable -->                                                     
        Shareable                                                                                                          
    </res-sharing-scope>                                                                                                   
  </resource-ref>                                                                                                          
                                                                                                                           
</web-app>                                                                                                                

 

 

<jsp-config> 包括<taglib> 和<jsp-property-group> 两个子元素。   
    其中<taglib>元素在JSP 1.2时就已经存在;而<jsp-property-group>是JSP 2.0 新增的元素。
    <jsp-property-group>元素主要有八个子元素,它们分别为:   
    1.<description>:设定的说明;
    2.<display-name>:设定名称;
    3.<url-pattern>:设定值所影响的范围,如:/CH2 或 /*.jsp;
    4.<el-ignored>:若为true,表示不支持EL 语法;
    5.<scripting-invalid>:若为true,表示不支持<% scripting %>语法;
    6.<page-encoding>:设定JSP 网页的编码;
    7.<include-prelude>:设置JSP 网页的抬头,扩展名为.jspf;
    8.<include-coda>:设置JSP 网页的结尾,扩展名为.jspf。

 


一个简单的<jsp-config>元素完整配置:

<jsp-config>
    <taglib>
        <taglib-uri>Taglib</taglib-uri>
        <taglib-location>/WEB-INF/tlds/MyTaglib.tld</taglib-location>
    </taglib>
    <jsp-property-group>
        <description>Special property group for JSP Configuration JSP example.</description>
        <display-name>JSPConfiguration</display-name>
        <url-pattern>/jsp/* </url-pattern>
        <el-ignored>true</el-ignored>
        <page-encoding>GB2312</page-encoding>
        <scripting-invalid>true</scripting-invalid>
        <include-prelude>/include/prelude.jspf</include-prelude>
        <include-coda>/include/coda.jspf</include-coda>
    </jsp-property-group>
</jsp-config>


配置web.xml来限制对某些servlet的请求

 

 

     有时我们只希望通过认证的用户才能请求某些servlet的话,就可以在web.xml中来进行相应的配置,来达到此目的。

这就要用到<security-constraint></security-constraint>元素。
对于tomcat,中web.xml使用security-constraint元素需要在位于<Tomcat-installation-directory>/conf/tomcat-users.xml的XML文件中创建用户名和密码。比如下面的这个tomcat-users.xml文件:

 

 

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,manager"/>
<user username="admin" password="admin" roles="admin"/>
</tomcat-users>

 

此XML片段包括一个tomcat-users根元素,它包含一个或多个role和user元素。
然后在Web应用程序的web.xml中创建security-constraint、login-config和security-role元素。

 

<security-constraint>
      <web-resource-collection>
          <web-resource-name>HelloServlet</web-resource-name>
          <url-pattern>/HelloServlet</url-pattern>
          <http-method>GET</http-method>
          <http-method>POST</http-method>
      </web-resource-collection>


      <auth-constraint>
          <description>This applies only to the "tomcat" security role</description>
          <role-name>admin</role-name>
      </auth-constraint>


      <user-data-constraint>
          <transport-guarantee>NONE</transport-guarantee>
      </user-data-constraint>
</security-constraint>

 

<login-config>
      <auth-method>BASIC</auth-method>
</login-config>


<security-role>
      <role-name>admin</role-name>
</security-role>

 

      其中security-constraint元素包含一个或多个web-resource-collection元素,它是描述Web应用程序中的哪些web资源受到指定安全限制的保护。http-method元素指定安全限制覆盖的HTTP方法。上面的例子中,当我们对/HelloServlet的GET或POST请求时将触发配置的安全机制。
    auth-constraint元素用于描述允许访问Web组件的安全角色。此例中安全角色的例子有tomcat、manager、admin。而只有当作为admin角色的用户才可以访问HelloServlet。

 

    Web应用程序通过login-config元素来认证用户,并确认该用户是否为正确的角色。
     longin-config包含的transport-guarantee子元素用来指定认证方法,BASIC是一种常见的Web认证方式,浏览器给用户提示一个对话框,要求输入用户名和密码,随后Tomcat将给出的用户名和密码与tomcat-users.xml中的用户名和密码进行比较,然后使用前面的security-constraint配置来确定用户是否可访问受保护的servlet。

 

除BASIC外,还可以是FORM、CLIENT-CERT、DIGEST等

 

其实这种认证方法实际上有两个步骤:
1、检查提供的用户名和密码是否正确。
2、判断用户是否映射到特定的安全角色。例如,用户可能提供了正确的用户名和密码,但没有映射到特定的安全角色,也将被禁止访问特定的Web资源

分享到:
评论

相关推荐

    Web.xml配置详解

    详细介绍了web.xml文件的内容。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    ASP.NET配置文件Web.config用法详解

    Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过VB.NET新建一个Web应用程序后...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    Web项目中使用Spring, 使用 Spring 的器监听器 ContextLoaderListener.docx

    一、Web项目中使用Spring o1. 新建一个Maven项目 o2. 使用之前的案例 o3. 定义index页面 o4. 定义RegisterServlet o5. 定义result页面 o6. web.xml 注册 Servlet o7. 运行结果分析 二、 使用 Spring 的器监听器 ...

    Pb_xml.zip_icecza_pb web_pb 6.5 安装使用_pb解析XML_xml

    加载文件:在这里,您可以只加载一个XML文件,并看到它解析在TreeView 。 pb_list_style :档案emplyees.xml将解析和转化利用pb_list_style.xsl ,由此产生的HTML中显示规则 pb_cat_style :档案emplyees.xml将...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    XML实用大全(web开发必备手册)

    3.1.3 将XML文件装入Web浏览器... 35 .2 考察简单的XML文档... 37 3.3 赋于XML标记以意义... 39 .4 为XML文档编写样式单... 40 .5 将样式单附加到XML文档上... 41 3.6 本章小结... 43 第4章 数据的结构化... ...

    XML实用大全----xml详细参考书

    3.1.3 将XML文件装入Web浏览器... 35 .2 考察简单的XML文档... 37 3.3 赋于XML标记以意义... 39 .4 为XML文档编写样式单... 40 .5 将样式单附加到XML文档上... 41 3.6 本章小结... 43 第4章 数据的结构化... ...

    J2EE电子商务系统开发从入门到精通

    2.6.1 web.xml文件..... 38 2.6.2 Struts-config.xml文件..... 39 2.7 Struts标签库..... 43 2.7.1 Bean标签库..... 43 2.7.2 HTML标签库..... 44 2.7.3 Logic标签库..... 45 2.8 Struts开发环境搭建..... 46 2.8.1 ...

    altova-xmlspy-enterprise-2010-v12-3

    它提供了世界领先的XML编辑器,在原图形架构设计师,一个代码生成器,文件转换器,调试器,分析器,完整的数据库集成,支持WSDL,SOAP,XSLT,XPath,XQuery,XBRL,Open XML文档,加上视觉Studio和Eclipse插件,...

    在线考试系统 eclipse+MySQL

    4. 将doc目录下的exam.xml文件拷贝到Tomcat的安装目录下的conf\Catalina\localhost文件夹下,并修改exam.xml文件中的docBase,将该值指向该工程目录,如"F:\jsp\21\WebRoot"; 5. 确保Tomcat安装目录的common\lib下...

    Eclipse+Web开发从入门到精通(实例版)

    3.4 使用CAP 进行代码分析... 54 3.5 使用 Easy Explorer 快速查看文件夹... 56 第2篇 Web开发技术实例详解 第4 章 在 Eclipse 中进行资源构建 ——Ant 使用实例... 60 4.1 Ant 简介... 60 4.1.1 ...

    spring mvc项目

    spring mvc maven项目,导入IDEA后无报错,需要在IDEA中...该项目使用servlet3.0规范,无web.xml,无spring.xml等配置文件,所有的配置均通过Java Config、注解搞定,项目中还集成了log4j2技术,以及前端html文件等。

    《程序天下:J2EE整合详解与典型案例》光盘源码

    13.4.4 配置本项目的web.xml文件 13.5 编写网上调查系统的JSP页面 13.5.1 用户注册画面regedit.jsp 13.5.2 用户登录画面login.jsp 13.5.3 设定调查题目的画面surveyName.jsp 13.5.4 设定调查项目的画面surveyOption....

    XML编程综合资料库

    3.1.3 将XML文件装入Web浏览器... 35 .2 考察简单的XML文档... 37 3.3 赋于XML标记以意义... 39 .4 为XML文档编写样式单... 40 .5 将样式单附加到XML文档上... 41 3.6 本章小结... 43 第4章 数据的结构化... ...

    基于SSH的网上书店管理系统.zip-11

    通过设计实现网上书店网站,综合应用JaveEE应用开发中Struts2,Spring,Hibernate框架等技术,结合关系数据库管理,熟悉并学会灵活三大框架,以提高对WEB相关B/S应用系统的分析设计能力和解决实际问题的能力。...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    13.4.4 配置本项目的web.xml文件 13.5 编写网上调查系统的JSP页面 13.5.1 用户注册画面regedit.jsp 13.5.2 用户登录画面login.jsp 13.5.3 设定调查题目的画面surveyName.jsp 13.5.4 设定调查项目的画面surveyOption....

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    13.4.4 配置本项目的web.xml文件 13.5 编写网上调查系统的JSP页面 13.5.1 用户注册画面regedit.jsp 13.5.2 用户登录画面login.jsp 13.5.3 设定调查题目的画面surveyName.jsp 13.5.4 设定调查项目的画面surveyOption....

Global site tag (gtag.js) - Google Analytics