Spring mvc请求处理错误(404)

时间:2015-05-08 07:39:35

标签: java spring spring-mvc

我是Spring新手,我尝试使用handler方法捕获请求。问题是我无法达到处理程序方法。

@RequestMapping(value = "/gsaFeedRun", method = RequestMethod.GET)
public ModelAndView handleRequest(@ModelAttribute BaseFormBean formBean, BindingResult result,
HttpServletRequest request) throws Exception {
    System.out.println("Request grabbed!\n");
    getContext().getUserProfile().setLanguage(ProjectConstants.getLANGUAGE_TR());
    createSessionData(request);
    final java.io.File myFile = new java.io.File("C:\\DEVEL\\xmlCollections.txt");
    readCollectionOfRoots(myFile); //Read the list of the desired root's lists file
    return null;
} 

我检查了servlet.xml文件,似乎没问题。请求localhost:8080/abc/gsaFeedRun从未应答,并显示在控制台上:

***ERROR... page-not-found.jsp - 404 - /abc/gsaFeedRun

我需要澄清一点,没有必要向用户返回任何模型视图。控制器应该做一些计算。

这个问题可能是什么原因?

2 个答案:

答案 0 :(得分:1)

无法发送空。

处理程序方法支持以下返回类型:

一个ModelAndView对象(Servlet MVC或Portlet MVC),模型隐式地丰富了命令对象和@ModelAttribute注释引用数据访问器方法的结果。

一个Model对象,通过RequestToViewNameTranslator隐式确定视图名称,并且模型隐式地使用命令对象和@ModelAttribute注释引用数据访问器方法的结果。

用于公开模型的Map对象,其中视图名称通过RequestToViewNameTranslator隐式确定,并且模型隐式地使用命令对象和@ModelAttribute注释引用数据访问器方法的结果进行了充实。

一个View对象,该模型通过命令对象和@ModelAttribute注释的引用数据访问器方法隐式确定。处理程序方法还可以通过声明Model参数(见上文)以编程方式丰富模型。

一个String值,它被解释为视图名称,模型通过命令对象和@ModelAttribute注释的引用数据访问器方法隐式确定。处理程序方法还可以通过声明ModelMap参数(见上文)以编程方式丰富模型。

@ResponseBody注释方法(仅限Servlet),用于访问Servlet响应HTTP内容。返回值将使用消息转换器转换为响应流。

用于访问Servlet响应HTTP标头和内容的HttpEntity或ResponseEntity对象(仅限Servlet)。实体主体将使用消息转换器转换为响应流。

HttpHeaders对象返回没有正文的响应。

一个Callable,由Spring MVC用于在由Spring MVC代表应用程序透明管理的单独线程中异步获取返回值。

DeferredResult,应用程序使用它在自己选择的单独线程中生成返回值,作为返回Callable的替代方法。

应用程序用于在自己选择的单独线程中生成返回值的ListenableFuture,作为返回Callable的替代方法。 如果方法处理响应本身(通过直接编写响应内容,为此目的声明类型为ServletResponse / HttpServletResponse / RenderResponse的参数)或者视图名称应该通过RequestToViewNameTranslator隐式确定(不声明响应参数),则返回void在处理程序方法签名中;仅适用于Servlet环境中。)

任何其他返回类型将被视为要暴露给视图的单个模型属性,使用在方法级别通过@ModelAttribute指定的属性名称(或基于返回类型的类名称的默认属性名称)除此以外)。该模型将使用命令对象和@ModelAttribute带注释的引用数据访问器方法的结果进行隐式丰富。

来自文档:RequestMapping

答案 1 :(得分:0)

问题解决了。对于任何遇到此问题的人,问题的原因和解决方案:

yourProject-servlet.xml文件(您的bean和其他初始化所在的文件)包含以下语句:

<context:component-scan base-package="your controller package" >

在这里通知Spring框架有关映射到请求的方法/类的位置。因此,您需要在此包下创建控制器文件(包含带有@Controller语句的方法和/或类)。