为了账号安全,请及时绑定邮箱和手机立即绑定

servlet映射url模式中/和/*的差异

servlet映射url模式中/和/*的差异

海绵宝宝撒 2019-06-04 17:27:10
servlet映射url模式中/和/*的差异熟悉的代码:<servlet-mapping>     <servlet-name>main</servlet-name>     <url-pattern>/*</url-pattern></servlet-mapping><servlet-mapping>     <servlet-name>main</servlet-name>     <url-pattern>/</url-pattern></servlet-mapping>我的理解是/*映射到http://host:port/context/*.怎么样/?它肯定不会映射到http://host:port/context只有根。事实上,它会接受http://host:port/context/hello,但拒绝http://host:port/context/hello.jsp.有人能解释一下http://host:port/context/hello地图?
查看完整描述

3 回答

?
MM们

TA贡献1886条经验 获得超2个赞

我想用映射规则和一个例子来补充BalusC的答案。

Servlet 2.5规范中的映射规则:

  1. 映射精确URL
  2. 映射通配符路径
  3. 地图扩展
  4. 映射到默认servlet

在我们的示例中,有三个servlet。/是我们安装的默认servlet。Tomcat安装两个servlet来服务jsp和jspx。所以要绘制地图http://host:port/context/hello

  1. 没有安装确切的URL servlet,下一步。
  2. 没有安装通配符路径servlet,下一步。
  3. 不匹配任何扩展,下一步。
  4. 映射到默认servlet,返回。

地图http://host:port/context/hello.jsp

  1. 没有安装确切的URL servlet,下一步。
  2. 没有安装通配符路径servlet,下一步。
  3. 找到扩展servlet,返回。


查看完整回答
反对 回复 2019-06-04
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

也许您也需要知道URL是如何映射的,因为我遭受了404好几个小时。有两种处理程序处理请求。BeanNameUrlHandlerMappingSimpleUrlHandlerMapping..当我们定义servlet-mapping,我们正在使用SimpleUrlHandlerMapping..我们需要知道的一件事是,这两个处理程序共享一个称为alwaysUseFullPath默认为false.

false这里意味着Spring将不使用Mapp的完整路径,也就是控制器的url。什么意思?这意味着当您定义servlet-mapping:

<servlet-mapping>
    <servlet-name>viewServlet</servlet-name>
    <url-pattern>/perfix/*</url-pattern></servlet-mapping>

处理程序将实际使用*找到控制器的一部分。例如,下面的控制器将面临一个404使用/perfix/api/feature/doSomething

@Controller()@RequestMapping("/perfix/api/feature")public class MyController {
    @RequestMapping(value = "/doSomething", method = RequestMethod.GET) 
    @ResponseBody
    public String doSomething(HttpServletRequest request) {
        ....
    }}

这是一个完美的匹配,对吗?但为什么404..如前所述,默认值为alwaysUseFullPath是假的,这意味着在您的请求中,只有/api/feature/doSomething用于查找相应的控制器,但没有任何Controller关心该路径。您需要将url更改为/perfix/perfix/api/feature/doSomething或移除perfix来自MyController基地@RequestingMapping.


查看完整回答
反对 回复 2019-06-04
  • 3 回答
  • 1 关注
  • 1198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信