【发布时间】:2013-07-09 09:04:43
【问题描述】:
我是使用 Spring MVC 开发的新手。 我正在尝试从我的 jsp 文件中调用控制器。 我将请求映射注释提供给控制器,但是当我尝试从 url 上的 mainview.jsp 调用时:(我正在 localhost 上测试)“/AirlineDB_Spring/views/mainview.jsp”(这工作正常), 项目名称从 url 中消失,我得到这个地址,它给了我 404:“/passengers/”我不知道为什么“AirlineDB_Spring/”从链接中消失,这看起来是主要问题。
我的控制器代码:
@Controller
@RequestMapping(value="/passengers")
public class PassengerController{
@SuppressWarnings("unchecked")
@RequestMapping(method=RequestMethod.GET)
public String list(Model model) {
List<String> tl = new ArrayList<String>();
tl.add("one");
tl.add("two");
tl.add("three");
model.addAttribute("testlist", tl);
return "mainview";
}
我的jsp文件代码是:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Airline Database</title>
</head>
<body>
<h2>Passengers</h2>
<a href="/passengers/">click</a>
<c:forEach items="${model.testlist}" var="test" varStatus="loopStatus">
${loopStatus.count} ${test}<br/>
</c:forEach>
</body>
</html>
我的 web.xml 文件:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:WEB-INF/spring/*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>airlinedb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>airlinedb</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
servlet-context.xml 包含以下内容:
<context:annotation-config/>
<context:component-scan base-package="airlinedb.controller"/>
<mvc:annotation-driven/>
我通过互联网搜索,发现了很多与控制器映射有关的问题,但没有一个对我有用,我也尝试使用 href="/passenger" 调用控制器但得到相同的 404。 我不知道我缺少什么配置,我可以看到我得到了错误的 url,但我不知道可能出了什么问题。 谁能帮帮我?
【问题讨论】:
-
你在哪里查看解析器?
-
我认为问题出在您的 jsp 上:您是否尝试过重定向到
? -
视图解析器在 servlet-context.xml 中:
-
我尝试了您的建议:
现在 url 看起来不错,但它仍然是 404,我收到错误消息,即 DispatcherServlet 中没有此 URI 的映射,我用的“/”不应该是一个通用的映射,我可以使用多种类型的url吗? -
是的,这个消息意味着没有与这个地址相关的视图。你能告诉我你得到 404 的地址吗?
标签: java jsp spring-mvc