Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 路由的简单Spring应用程序返回错误_Java_Spring_Spring Boot - Fatal编程技术网

Java 路由的简单Spring应用程序返回错误

Java 路由的简单Spring应用程序返回错误,java,spring,spring-boot,Java,Spring,Spring Boot,我已经创建了一个简单的Spring应用程序,其中一个路由位于“/a”,但是当我尝试访问该路由时,我得到了一个错误。日志显示正在映射路由,因此我不确定是什么导致了错误。日志中没有错误消息输出 HomeController.java package com.12345; import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.web.bi

我已经创建了一个简单的Spring应用程序,其中一个路由位于“/a”,但是当我尝试访问该路由时,我得到了一个错误。日志显示正在映射路由,因此我不确定是什么导致了错误。日志中没有错误消息输出

HomeController.java

package com.12345;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HomeController {

  static Logger log = Logger.getLogger(HomeController.class.getName());

    @RequestMapping("/a")
    public String home() {
    log.debug("a route reached");
        return "Home";
    }
}
Application.java

package com.12345.config;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan(basePackages="com.12345")
@EnableConfigurationProperties
@EnableAutoConfiguration
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
堆栈跟踪和输出

2016-11-22 10:36:40.512  INFO 644 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@59fd97a8: startup date [Tue Nov 22 10:36:35 PST 2016]; root of context hierarchy
2016-11-22 10:36:40.615  INFO 644 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/a]}" onto public java.lang.String com.12345.HomeController.home()
2016-11-22 10:36:40.620  INFO 644 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2016-11-22 10:36:40.620  INFO 644 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2016-11-22 10:36:40.665  INFO 644 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-11-22 10:36:40.665  INFO 644 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-11-22 10:36:40.717  INFO 644 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-11-22 10:36:41.045  INFO 644 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2016-11-22 10:36:41.137  INFO 644 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8085 (http)
2016-11-22 10:36:41.144  INFO 644 --- [           main] com.12345.config.Application     : Started Application in 5.751 seconds (JVM running for 6.18)
2016-11-22 10:36:48.217  INFO 644 --- [nio-8085-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
2016-11-22 10:36:48.217  INFO 644 --- [nio-8085-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2016-11-22 10:36:48.242  INFO 644 --- [nio-8085-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 25 ms

===============
localhost:8085/a
Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue Nov 22 10:47:39 PST 2016
There was an unexpected error (type=Not Found, status=404).

No message available
2016-11-22 10:36:40.512信息644---[main]s.w.s.m.m.a.RequestMappingHandlerAdapter:正在寻找@ControllerAdvice:org.springframework.boot.context.embedded。AnnotationConfigEmbeddedWebApplicationContext@59fd97a8:启动日期【2016年11月22日星期二10:36:35太平洋标准时间】;上下文层次结构的根
2016-11-22 10:36:40.615信息644---[main]s.w.s.m.m.a.RequestMappingHandlerMapping:将“{[/a]}”映射到公共java.lang.String.com.12345.HomeController.home()
2016-11-22 10:36:40.620信息644---[main]s.w.s.m.a.RequestMappingHandlerMapping:将“{[/error]}”映射到public org.springframework.http.ResponseEntity org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2016-11-22 10:36:40.620 INFO 644-[main]s.w.s.m.a.RequestMappingHandlerMapping:将“{[/error],products=[text/html]}”映射到public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2016-11-22 10:36:40.665信息644---[main]o.s.w.s.handler.simplerlhandler映射:将URL路径[/webjars/**]映射到[class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]类型的处理程序上
2016-11-22 10:36:40.665信息644---[main]o.s.w.s.handler.simplerlhandler映射:将URL路径[/**]映射到[class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]类型的处理程序上
2016-11-22 10:36:40.717信息644---[main]o.s.w.s.handler.simplerlhandler映射:将URL路径[/**/favicon.ico]映射到[class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]类型的处理程序上
2016-11-22 10:36:41.045信息644---[main]o.s.j.e.a.注释MBeanExporter:在启动时为JMX暴露注册bean
2016-11-22 10:36:41.137信息644---[main]s.b.c.e.t.TomcatEmbeddedServletContainer:Tomcat在端口上启动:8085(http)
2016-11-22 10:36:41.144信息644---[main]com.12345.config.Application:应用程序在5.751秒内启动(JVM运行6.18)
2016-11-22 10:36:48.217信息644---[nio-8085-exec-1]o.a.c.c.c.[Tomcat].[localhost].[/]:初始化Spring FrameworkServlet“dispatcherServlet”
2016-11-22 10:36:48.217信息644---[nio-8085-exec-1]o.s.web.servlet.DispatcherServlet:FrameworkServlet“DispatcherServlet”:初始化已开始
2016-11-22 10:36:48.242信息644---[nio-8085-exec-1]o.s.web.servlet.DispatcherServlet:FrameworkServlet“DispatcherServlet”:初始化在25毫秒内完成
===============
本地主机:8085/a
白标错误页
此应用程序没有/error的显式映射,因此您将其视为回退。
2016年11月22日星期二10:47:39太平洋标准时间
出现意外错误(类型=未找到,状态=404)。
没有可用的消息

我一直使用注释:

@RestController
@RequestMapping("")
在控制器类上访问控制器并始终工作

你试试看怎么样:

package com.12345;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@RestController
@RequestMapping("")
public class HomeController {

  static Logger log = Logger.getLogger(HomeController.class.getName());

    @RequestMapping("/a")
    public String home() {
    log.debug("a route reached");
        return "Home";
    }
}
然后在应用程序中,我有:

@SpringBootApplication  
这应该是一个诀窍:

package com.12345.config;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.ComponentScan;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@ComponentScan(basePackages="com.12345")
@EnableConfigurationProperties
@EnableAutoConfiguration
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

我一直使用注释:

@RestController
@RequestMapping("")
在控制器类上访问控制器并始终工作

你试试看怎么样:

package com.12345;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@RestController
@RequestMapping("")
public class HomeController {

  static Logger log = Logger.getLogger(HomeController.class.getName());

    @RequestMapping("/a")
    public String home() {
    log.debug("a route reached");
        return "Home";
    }
}
然后在应用程序中,我有:

@SpringBootApplication  
这应该是一个诀窍:

package com.12345.config;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.ComponentScan;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@ComponentScan(basePackages="com.12345")
@EnableConfigurationProperties
@EnableAutoConfiguration
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

@ResponseBody
添加到
home()
应该可以解决这个问题。 如果没有它,返回“Home”意味着响应静态文件
Home


或者,将
@Controller
更改为
@RestController
也可以
@RestController
@Controller
+
@ResponseBody
@ResponseBody
添加到
home()
应该可以解决这个问题。 如果没有它,返回“Home”意味着响应静态文件
Home

或者,将
@Controller
更改为
@RestController
也可以
@RestController
@Controller
+
@ResponseBody

这里:

@RequestMapping("/a")
public String home() {
log.debug("a route reached");
    return "Home";
}
这里返回一个名为“Home”的视图。所以你必须有一个家。
ext
其中
ext
是视图解析器使用的后缀扩展名。
如果添加
@ResponseBody
,则返回字符串“Home”作为响应的内容。完全不同。

这里:

@RequestMapping("/a")
public String home() {
log.debug("a route reached");
    return "Home";
}
这里返回一个名为“Home”的视图。所以你必须有一个家。
ext
其中
ext
是视图解析器使用的后缀扩展名。

如果添加
@ResponseBody
,则返回字符串“Home”作为响应的内容。这是完全不同的。

对于您所呈现的代码,请求实际上已被接收。如果尚未将记录器配置为实际从调试类别中进行日志记录,则日志语句可能已消失


这里的错误是home()方法的返回值。它将导致Spring使用您的视图解析器,或者如果您还没有配置视图解析器,它将返回到默认的InternalResourceViewResolver。它将查找以下文件“src/main/resources/static/Home”,并将其作为视图转发。由于在您的案例中找不到它,Spring将尝试转发到未定义的错误页面。

使用您显示的代码,请求实际上已收到。如果尚未将记录器配置为实际从调试类别中进行日志记录,则日志语句可能已消失

这里的错误是home()方法的返回值。它将导致Spring使用您的view resol