以下是我的控制器类的代码:
package edu.byu.cio.test.web.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
@RequestMapping(value = "/")
public String helloWorld() {
System.out.println("HomeController: Passing through...");
return "WEB-INF/views/home.jsp";
}
@RequestMapping(value="/name/{Name}", method = RequestMethod.GET)
public String compare(@PathVariable("Name") String Name) {
return "WEB-INF/views/home.jsp";
}
}
我有兴趣调用第二种方法。
当我执行get请求时:
http://localhost:8081/mvc-basic/name/somename
注意:我已将其配置为侦听端口8081。
我收到以下错误:
HTTP Status 404 - /mvc-basic/name/WEB-INF/views/home.jsp
--------------------------------------------------------------------------------
type Status report
message /mvc-basic/name/WEB-INF/views/home.jsp
description The requested resource (/mvc-basic/name/WEB-INF/views/home.jsp) is not available.
--------------------------------------------------------------------------------
Apache Tomcat/6.0.26
我认为URI模式是正确的但我想知道为什么它会显示这个错误。你在上面的代码中发现了什么错误吗?我感谢您的帮助。
答案 0 :(得分:1)
当我第一次使用Spring Source Tool套件时遇到了这个问题。经过这么多的努力,我发现控制器类的问题并不是最新的。
当我第一次编写类似的代码时,我没有使用URI模板变量并将其部署在tc服务器上。后来我多次添加URI模板并重新发布/重新启动服务器,以为控制器类会自动构建。
后来我发现我在“项目”菜单上未选中“自动构建”运行项目。
如果您使用STS或任何基于eclipse的工具,请确保选中“自动构建”,并确保部署最新的Controller类。
答案 1 :(得分:0)
您需要从* -servlet.xml上下文文件中发布viewResolver bean以确定,但是您的视图解析器可能会定义一个“.jsp”后缀,这意味着您无需指定它。 JSP的根目录也将默认为/ WEB-INF。
不要在控制器中返回“WEB-INF / views / home.jsp”,而是尝试返回“views / home”。