web.xml详解之Servlet和URL路径

[译]web.xml详解之Servlet和URL路径

2013-7-11阅读181 评论0


google developers 上的一篇文章,原文见:https://developers.google.com/appengine/docs/java/config/webxml#Servlets_and_URL_Paths

*不是百分之百的原文翻译,这里翻译的比较口语化,并且有我自己的理解。

web.xml中定义了访问路径和servlet之间的映射,也就是定义了当用户访问某个路径的时候,调用哪个servlet进行处理。web server会根据这里的配置决定调用某个类某个方法。比如说对于HTTP GET访问会调用相应的doGet方法。

想要定义一个url到servlet的映射,要先定义<servlet>,然后在<servlet-mapping>中定义url到servlet的映射。

<servlet>标签用来声明servlet,包括servlet的名称(在web.xml中可以被其他元素引用),servlet对应的类,还有初始化的参数<init-param>。可以基于一个类声明多个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>

<servlet-mapping>标签定义了url到servlet之间的映射,这里的url定义的是一种url模式,匹配这个模式的url都会转给servlet处理。url模式可以用星号:* 做模糊匹配,但是不支持字符串中间使用通配符,也不支持一次使用多个*。

在url模式中使用通配符的例子:

    <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处理,servlet使用getPathInfo方法截取请求路径判断是否匹配url模式。

servlet可以用本身的getServletConfig方法来取得初始化参数,再通过getInitParameter方法,将参数名称传入,取得参数的值。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值