我使用Spring MVC创建了hello world示例,但是在servlet URL映射中有一件我不理解的事情,我在web.xml中做了以下事情:
<servlet>
<servlet-name>HelloWeb</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWeb</servlet-name>
<url-pattern>/test/*</url-pattern>
</servlet-mapping>
现在,如果我想调用以下控制器:
@Controller
@RequestMapping("/hello")
public class HelloWorld {
@RequestMapping(method = RequestMethod.GET)
public String printWelcome(ModelMap model){
model.addAttribute("message","hello world");
return "index";
}
}
它将使用以下链接: http://localhost:8080/test/hello
但是当我将servlet url-pattern更改为“/ *”并尝试: http://localhost:8080/hello
它不起作用,它不应该与我的servlet匹配吗? as *匹配所有内容
答案 0 :(得分:0)
它不适用于/*
,因为您尚未为该模式注册/创建控制器。
适用于http://localhost:8080/hello
,因为您拥有控制器@RequestMapping("/hello")
只需将RequestMapping更改为@RequestMapping("/")
以获取网址格式/*
答案 1 :(得分:0)
使用&#34; / *&#34;注册servlet时然后它会覆盖所有servlet映射,如果有的话。因此应该避免。这会覆盖默认的servlet映射,因此所有默认的url处理也会被覆盖,因此任何特定的url匹配都会失败。在你的情况下它是/你好。
根据您的情况,您最初使用/ test / *注册了这个用/ test注册的所有网址,因此它们已被识别。