我制作了一个非常简单的Spring MVC应用程序来学习AOP,但每次我尝试浏览任何应用程序页面时,都会得到(找不到映射)错误,如下所示:
No mapping found for HTTP request with URI [/TestAOP/page1.htm] in DispatcherServlet with name 'appServlet'
我加倍检查了web.xml,servlet-context.xml,控制器代码但是没有注意到任何错误。所以如果有人能够查看我的web.xml,servlet-context.xml和控制器的内容,我将非常感激,并让我知道我在这里缺少什么以及如何克服这个错误。谢谢你的时间
Web.xml中
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
servlet的context.xml中
<annotation-driven /> <context:component-scan base-package="com.sampledomain.app.controller" /> <aop:aspectj-autoproxy/> <resources mapping="/resources/**" location="/resources/" /> <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <beans:property name="prefix" value="/WEB-INF/views/" /> <beans:property name="suffix" value=".jsp" /> </beans:bean>
控制器
@Controller
public class HomeController {
@RequestMapping(value = "/page1", method = RequestMethod.GET)
public String firstPage(HttpServletRequest request,Locale locale, Model model) {
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
return "page01";
}
}
根的context.xml 主要是空的
注意:page01.jsp位于/ WEB-INF / views / folder
下答案 0 :(得分:2)
我建议仔细检查控制器是否由spring实例化。最简单的方法是创建一个带有sysout的空构造函数(“我的控制器已经实例化!!!”)或者其他什么,让我们看看这行是否在catalina.out中。看看是否
<context:component-scan base-package="com.sampledomain.app.controller" />
这是您的控制器的正确包。如果你的控制器没有被弹簧实例化,那么也要检查弹簧配置路径等。
答案 1 :(得分:0)
尝试从网址中删除.htm。即:http:// [server] [:port] / TestAOP / page1。
这应与控制器上的映射相匹配。