我是Spring的新手,已经阅读了很多但我无法弄清楚为什么这不起作用。我在下面列出了相关部分......
web.xml中:
<servlet>
<servlet-name>display</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>display</servlet-name>
<url-pattern>*.p</url-pattern>
</servlet-mapping>
显示servlet.xml中:
<mvc:annotation-driven />
<context:component-scan base-package="com" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp" />
displayController.java:
package com;
@Controller
public class displayController {
@RequestMapping("/display")
public ModelAndView displayName() {
System.out.println("-- in handleRequest");
ModelAndView mv = new ModelAndView("display");
user u = new user();
u.setUsername("bob");
mv.addObject("user", u);
return mv;
}
}
现在,据我所知,这就是我认为发生的事情,但事实并非如此......
1。我去了一个网址“/user/display.p”
2。应用程序在web.xml中查找,找到url模式“* .p”并注意它应该与servlet显示链接。然后创建DispatcherServlet的实例并加载display-servlet.xml中的上下文。
3。当加载display-servlet.xml时,它注意到mvc:annotation-driven并做了一些事情(不确定我是否理解那个,但我认为我需要它。然后,它注意到了组件扫描并扫描display Comtroller所在的“com”包。
4。在displayController中搜索注释,发现它是一个控制器,任何带有“/ display”的url都应该自动触发displayName()函数。
5。 [在这里的某个地方突然......]
6。然后,应该发生什么(但不是),应该加载视图“display”并加载“/WEB-INF/jsp/display.jsp”。但是,没有找到视图“display”,我收到错误“警告:在DispatcherServlet中找不到带有URI [/testing/user/display.p]的HTTP请求的映射,名称为'display'”
有人可以帮我吗?
谢谢!
答案 0 :(得分:0)
试试这个
package com;
@Controller
public class displayController {
@RequestMapping("/user/*)
public ModelAndView displayName() {
System.out.println("-- in handleRequest");
ModelAndView mv = new ModelAndView("display");
user u = new user();
u.setUsername("bob");
mv.addObject("user", u);
return mv;
}
}
调度程序将使用模式* .p将请求委托给dispatcherServlet,dispatcherServlet会将/ user / *请求委托给您的方法。