web.xml
それはServlet
仕様開発JavaWeb
のアプリケーション・デプロイメント・ディスクリプタ。
二つの要素
名前 | 説明 | 一般的 |
---|---|---|
表示名 | これは、Webアプリケーションの名前を定義します | T |
説明 | 説明情報文のWEBアプリケーション | T |
配布 | タグ要素が空である場合、その有無、分散処理ステーションかどうかを指定することができる。この要素がweb.xmlに存在する場合、現像ステーションで表しを分散JSPコンテナの複数の間で実行されるように設計されています。 | F |
コンテキスト-PARAM | アプリケーションの規定の範囲内の初期化パラメータ。アプリケーション内で共有。 | T |
フィルタ | javax.servlet.Filterインタフェースを実現するために、クラス名に関連付けられたフィルタエレメント。 | T |
フィルタマッピング | 名前のフィルタたら、フィルタマッピング要素は、1つのまたは複数の関連するサーブレットやJSPページでそれを使用する必要があります。 | T |
リスナー | サーブレットAPIバージョン2.3の変更およびセッションまたはサーブレット環境を削除する、確立したときにイベントリスナーに通知する、イベントリスナーのためのサポートを追加します。イベントリスナクラスそのリスナーの要素を指定します。 | T |
サーブレット | サーブレットやJSPページに初期化パラメータまたはカスタムURLを開発するには、まず、サーブレットやJSPページに名前を付ける必要があります。サーブレット要素は、このタスクを達成するために使用されます。 | T |
サーブレット・マッピング | これは、サーブレットとURLの間のマッピングを定義し、その名前が<servlet> 要素に接続されています。 |
T |
セッション設定 | セッションは、一定時間内にアクセスされない場合は、サーバーはメモリを節約するためにそれを放棄することができます。 タイムアウト値は明示のHttpSessionの単一のセッションオブジェクトsetMaxInactiveIntervalメソッドを使用して設定することができる、またはセッション設定要素のデフォルトタイムアウト値を使用して製剤化することができます。 |
T |
MIMEマッピング | Webアプリケーションは、保証を提供することで、特定のMIMEタイプへの割り当て、MIME-mapping要素を確保することを望んで、特殊なファイルを考えている場合。 | F |
歓迎のファイルリスト | Welcomeページ(html 、htm 、またはjsp 、など) |
T |
エラーページ | 例外が表示されるように指定、スローされます。 | T |
JSP-config設定 | WebアプリケーションのJSPファイルのグローバル構成情報を提供します。これは、2つのサブ要素があり、taglib そしてjsp-property-group 。 |
F |
セキュリティ制約 | 1つ以上のWebリソースコレクションに関連付けられているセキュリティ上の制約のために | F |
ログイン-config設定 | どのようにアクセス保護されたページにしようとするユーザを認証するためにサーバーを指定する必要があります。それはであるsercurity-constraint 関節の要素の使用。 |
T |
セキュリティ役割 | セキュリティロールを定義します。定義は、オプションのセキュリティロールの説明とセキュリティロールの名前が含まれています。 | F |
resource-env-refType | 管理対象リソースに関連した文。 | F |
resource-ref | 工場で使用するリソース外部リソースを宣言します。 | F |
フィルタ設定
Servlet
コンテナは、クライアント要求を受信し、応答結果を出し、フィルターはチェックして、その中の情報を変更することができweb
、フィルタのアプリケーションを追加し、必要であるweb.xml
2つの要素を設定するには:<filter>
と<filter-mapping>
、次は、<filter>
要素の典型的な:
<filter>
<filter-name>SampleFilter</filter-name>
<filter-class>com.yan.SampleFilter</filter-class>
</filter>
上記のコードは、名前のフィルタを定義しSampleFilter
たクラスがあり、このフィルタを実現しますcom.yan.SampleFilter
。
<filter>
サブ要素:
プロパティ | 説明 |
---|---|
<フィルタ名> | 複数のフィルタがある定義されたフィルタ名、Webアプリケーション、名前の重複を許可しません |
<フィルタクラス> | 指定されたトランザクションのフィルタリングを特定する責任があり、このフィルタクラスを実現。 |
<フィルタ-mapping>要素は、責任濾過をフィルタリングするために使用されるURL
例示的なものです:
<filter-mapping>
<filter-name>SampleFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
以上代码指明当客户请求访问Web
应用中的所有JSP
文件时,将触发SampleFilter
过滤器工作.具体的过滤事务由在<filter>
元素中指定的类中完成.
<filter-mapping>
元素的子元素描述:
属性 | 描述 |
---|---|
<filter-name> |
指定过滤器名,这里的过滤器名必须和<filter> 元素中定义的名称对应. |
<url-pattern> |
指定过滤器负责过滤的URL |
配置Servlet
<servlet>
元素用来定义Servlet
,以下代码定义了一个名为SampleServlet
的Servlet
,实现这个Servlet
类的是com.yan.servlet.SampleServlet
:
<servlet>
<servlet-name>SampleServlet</servlet-name>
<servlet-class>com.yan.servlet.SampleServlet</servlet-class>
</servlet>
<servlet>
元素的属性描述:
属性 | 描述 |
---|---|
<servlet-name> |
定义Servlet 名字 |
<servlet-class> |
指定实现这个Servlet 的类 |
<init-param> |
定义Servlet 的初始化参数,对应的是<servlet-class> 定义的类中的实例属性.包含参数名和参数值,在一个 <servlet> 元素中可以有多个<init-param> .在Servlet 类中通过getInitParameter(String name) 方法访问初始化参数. |
<load-on-startup> |
指定当Web 应用启动时,加载Servlet 的次序,当这个值为正数或0时,Servlet 容器先加载数值较小的Servlet ,如果为负数或没有设定,那么Servlet 容器将在Web 客户首次访问这个Servlet 时加载它,即懒加载. |
配置Servlet映射
<servlet-mapping>
元素用来设定客户访问某个Servlet
的URL
,以下代码为SampleServlet
指定URL
为/sample
:
<servlet-mapping>
<servlet-name>SampleServlet</servlet-name>
<url-parttern>/sample</url-parttern>
</servlet-mapping>
<servlet-mapping>
使得程序中定义的Servlet
类名和客户访问的URL
彼此独立.当Servlet
类名发生改变时,只要修改<servlet>
元素中的<servlet-class>
子元素即可.
而客户端访问Servlet
的URL
无须做相应的改动.
<servlet-mapping>
元素的子元素:
属性 | 描述 |
---|---|
<servlet-name> |
指定Servlet 名字,与<servlet> 元素中定义的名字匹配 |
<url-pattern> |
指定访问这个Servlet 的URL ,这里只需给出相对于整个Web 应用的URL 路径 |
配置Session
<session-config>
元素用来设定HTTP Session
的生命周期.例如,如下代码指明Session
可以保持不活动状态的最长时间为30秒,超过这一时间,Servlet
容器将把它作为无效Session
处理.
<session-config>
<session-timeout>30</session-timeout>
</session-config>
配置Welcome文件清单
当客户访问Web
应用时,如果仅仅给出Web
应用的Root URL
,没有指定具体的文件名或资源路径,Servlet
会自动调用Web
应用的Welcome
文件.<welcome-file-list>
元素用来设定Welcome
文件清单.:
<welcom-file-list>
<welcome-file>login.jsp</welcome-file>
<welcome-file>login.html</welcome-file>
</welcom-file-list>
<welcome-file>
可以是一个序列,找到第一个合法文件即返回给客户端.
配置资源引用
如果Web
应用访问了由Servlet
容器管理的某个JNDI Resource,则必须在web.xml
文件中声明对这个JNDI Resource的引用.表示资源引用的元素为<resource-ref>
:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/sampleDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
其子元素描述:
属性 | 描述 |
---|---|
<description> |
说明 |
<res-ref-name> |
指定所引用资源的JNDI名字 |
<res-type> |
指定所引用资源的类名字 |
<res-auth> |
指定管理所引用资源的Manager ,有两个可选值:Container 和Application ,分别表示由容器还是Web应用 来创建和管理Resource . |
配置安全约束
<security-constraint>
用来为Web
应用应以安全约束.以下代码指明当前用户访问该Web
应用下的所有资源时,必须具备admin
角色.
<security-constraint>
<web-resource-collection>
<web-resource-name>sample application</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
元素的子元素:
元素 | 描述 |
---|---|
<web-resource-collection> |
声明受保护的Web 资源 |
<auth-constraint> |
声明可以访问受保护的资源的角色,可以包含多个<role-name> 子元素 |
<user-data-constraint> |
核心是<transport-guarantee> ,它指定客户端和服务器之间的通信应为NONE ,INTEGRAL 或CONFIDENTIAL 。默认为 NONE ,表示该应用程序不需要任何运输保证。值 INTEGRAL 表示应用程序要求在客户端和服务器之间发送的数据必须以在传输过程中无法更改的方式发送。机密意味着应用程序要求以防止其他实体观察传输内容的方式传输数据。 在大多数情况下,如果出现 INTEGRAL 或CONFIDENTIAL 标志,则表明需要使用SSL。 |
<web-resource-collection>
元素的子元素:
元素 | 描述 |
---|---|
<web-resource-name> |
标识受保护的Web 资源 |
<url-pattern> |
指定受保护的URL 路径,可以是多个 |
<http-method> |
指定受保护的方法,可以是多个 |
配置安全验证登录界面
<login-config>
元素指定当Web
客户访问受保护的Web
资源时,系统弹出的登录对话框的类型.以下代码配置了基于表单验证的登录界面:
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Form-Based Authentication</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
<login-config>
元素的各个子元素:
属性 | 描述 |
---|---|
<auth-method> |
指定验证方法,它有三个可选:BASIC (基本验证),DIGEST (摘要验证)和FORM (表单验证) |
<realm-name> |
设定安全域的名称 |
<form-login-config> |
当验证方法为FORM 时,配置验证页面和出错页面 |
<form-login-page> |
当验证方法为FORM 时,登录界面路径 |
<form-error-page> |
当验证方法为FORM 时,设定出错页面 |
配置对安全验证角色的引用
<security-role>
元素指明这个Web
应用引用的所有角色的名字.例如,如下代码声明引用了admin
角色:
<security-role>
<description>
The Role that is required to log in to the sample Application
</description>
<role-name>admin</role-name>
</security-role>
安全配置的说明
如上我们所配置的安全信息生效,需要在WEB-INF/tomcat-user.xml
中配置相应的角色信息:
<role rolename="admin"/>
<user username="admin" password="admin" roles="admin"/>
当用户访问当前页面/sample
时,会找到<login-config>
的实际配置给用户一个登录渠道,当用户输入的用户名密码对应上tomcat-user.xml
中配置的user
后找到其归属的role
,如果role
为admin
,则允许访问.