为Servlet创建一个JSP类型的URL
如果我们想访问servlet像访问一个jsp页面一样时
当我们想要链接看起来像对JSP 文件请求一样。那么对于servlet 的URL 样式时该怎么操作呢?
我们可以创建一个servlet-mapping元素使其包含一个JSP样式的URL pattern
在以前我们提到过,对于一个servlet你可以随意的为它取上别名。例如, 看上去访问JSP 文件的请求可以容易地被映射成对servlet的访问 。
Example : Deployment descriptor example of mapping a JSP-style URL to a servlet
<! DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-application_2_3.dtd"
>
< web-app >
< servlet >
< servlet-name > JspInfo </ servlet-name >
< servlet-class > com.parkerriver.cookbook.JspInfo </ servlet-class >
</ servlet >
< servlet-mapping >
< servlet-name > JspInfo </ servlet-name >
< url-pattern > /info.jsp </ url-pattern >
</ servlet-mapping >
</ web-app >
对于URL样式/info.jsp 开头的斜杠意味着在这个部署描述符中从这个web应用的根目录开始。所以对这个JspInfo 的servlet而言它的完整的URL应该为:
http://www.mysite.org/cookbook/info.jsp.
你也可以对一个单独的servlet映射成对任何JSP页面的引用。
Example Mapping all JSP URLs to a single servlet
<! DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-application_2_3.dtd"
>
< web-app >
< servlet >
< servlet-name > JspInfo </ servlet-name >
< servlet-class > com.parkerriver.cookbook.JspInfo </ servlet-class >
</ servlet >
< servlet-mapping >
< servlet-name > JspInfo </ servlet-name >
< url-pattern > *.jsp </ url-pattern >
</ servlet-mapping >
</ web-app >
对于使用一个文件的扩展后缀名以星号加点在加上其后缀名为URL样式时,如<url-pattern>*.jsp</url-pattern>一样,在URL样式中千万不要在加上一个斜杠(/).
对于这类型映射将会是有用处的,如果您移植一个版本为使用很多JSP 页面的应用到整个地依靠servlets 应用的另一个版本时。对于那些把你的包含以前jsp页面的URL放入收藏夹的用户将是一个相当周到的考虑。