web.xml 笔记(一)- on Google Engine

来源:互联网 发布:java中级工程师委培班 编辑:程序博客网 时间:2024/05/02 12:14

  • webxml 笔记一- on Google Engine
    • preface
    • About Deployment Descriptors
    • Servlets and URL Paths
    • JSP
    • Security and Authentication
    • other sources

web.xml 笔记(一)- on Google Engine

preface

  • 本笔记内容来自 google cloud platform O(∩_∩)O~

About Deployment Descriptors

一个网络应用的部署描述文件包括对于该应用classes, resources and configuration的描述,以及web server应该如何将client的请求映射到处理方法中。

这个部署描述文件就是web.xml。其目录在WEB-INF/目录下。其根节点是

以下是一个简单的web.xml的例子:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">    <servlet>        <servlet-name>comingsoon</servlet-name>        <servlet-class>mysite.server.ComingSoonServlet</servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>comingsoon</servlet-name>        <url-pattern>/*</url-pattern>    </servlet-mapping></web-app>

Note:如果使用了Modules,具体配置详见Modules Document

Servlets and URL Paths

web.xml中的映射使得web server可以将外部的请求指向某一个servlet,并使用其方法来处理该请求:
- 通过来声明一个servlet
- 通过来定义一个从URL到一个servlet的映射

声明了一个可以在该xml文件中让其他元素引用的名字、一个被用作servlet的类、以及初始化的参数。你可以用同一个类声明多个servlet(但是初始参数不能相同),每一个声明的servlet名字必须在部署描述文件中独一无二

    <servlet>        <servlet-name>redteam</servlet-name>        <servlet-class>mysite.server.TeamServlet</servlet-class>        <init-param>            <param-name>teamColor</param-name>            <param-value>red</param-value>        </init-param>        <init-param>            <param-name>bgColor</param-name>            <param-value>#CC0000</param-value>        </init-param>    </servlet>    <servlet>        <servlet-name>blueteam</servlet-name>        <servlet-class>mysite.server.TeamServlet</servlet-class>        <init-param>            <param-name>teamColor</param-name>            <param-value>blue</param-value>        </init-param>        <init-param>            <param-name>bgColor</param-name>            <param-value>#0000CC</param-value>        </init-param>    </servlet>

指定了一个URL pattern,以及一个声明了的servlet 名字,并将这两者映射。(“*”在这里的用法和在正则表达式中的相同)

    <servlet-mapping>        <servlet-name>redteam</servlet-name>        <url-pattern>/red/*</url-pattern>    </servlet-mapping>    <servlet-mapping>        <servlet-name>blueteam</servlet-name>        <url-pattern>/blue/*</url-pattern>    </servlet-mapping>

例如:请求http://www.example.com/blue/teamProfile指向的是TeamServlet类,并且teamColor = blue, bgColor = #0000CC。servlet可以通过getPathInfo()来取得该URL中的值,如

String teamColor = getServletConfig().getInitParameter("teamColor");

但是关于静态文件,如对于.js文件的请求,需要通过appengine-web.xml来设置。

JSP

一个应用可以通过JavaServer pages(JSPs)来实现网页。

APP ENGINE允许jsp页面自动生成servlet类。而映射到这个jsp的URL就是从WAR根目录到这个文件的路径。如start.jsp在子目录register/下,App Engine可以将它映射到/register/start.jsp

如果想要对一个jsp文件的映射有详细的描述,可以使用一个来声明,如:

    <servlet>        <servlet-name>register</servlet-name>        <jsp-file>/register/start.jsp</jsp-file>    </servlet>    <servlet-mapping>        <servlet-name>register</servlet-name>        <url-pattern>/register/*</url-pattern>    </servlet-mapping>

注意:如果jsp文件在WAR的根目录下,在中的值应当为”/”

另外,可以通过来install JSP tag libraries。不过TLD并不需要install,因为App engine已经提供了相关的服务,详见JavaServer Pages Standard Tag Library.

    <taglib>        <taglib-uri>/escape</taglib-uri>        <taglib-location>/WEB-INF/escape-tags.tld</taglib-location>    </taglib>

Security and Authentication

因为之前使用的不是google engine,所以并没有涉及使用google account api 来验证的部分,请有需要的读者移步the Google Accounts API。

描述了对于符合某一pattern的URL的约束,如果用户在没有取得访问权限的情况下请求该URL,google app engine会将用户引导至google account sign-in页面,直到用户登陆或者注册,会自动跳转回之前访问的URL。

如:

   <security-constraint>        <web-resource-collection>            <web-resource-name>profile</web-resource-name>           <url-pattern>/profile/*</url-pattern>        </web-resource-collection>        <auth-constraint>            <role-name>*</role-name>        </auth-constraint>    </security-constraint>    <security-constraint>        <web-resource-collection>           <web-resource-name>admin</web-resource-name>            <url-pattern>/admin/*</url-pattern>        </web-resource-collection>        <auth-constraint>            <role-name>admin</role-name>        </auth-constraint>    </security-constraint>

PS:因为写者并没有使用该部分功能,所以暂时省略了部分。如有读者需要关于该部分的详细内容,请戳Security and Authentication。

other sources

  • For more information about the standard of web.xml, see the Metawerx web.xml reference wiki and the Servlet specification.

  • 非google engine配置另见web.xml文件详解

0 0
原创粉丝点击