Spring MVC での開発は初めてです。jsp ファイルからコントローラを呼び出そうとしています。コントローラーに requestmapping アノテーションを付けましたが、次の 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 を取得していることはわかりますが、何が間違っているのかわかりません。誰でも私を助けることができますか?