社区首页 >问答首页 >此应用程序对/error没有显式映射。

此应用程序对/error没有显式映射。
EN

Stack Overflow用户
提问于 2015-06-30 01:22:45
回答 53查看 701.6K关注 0票数 171

我使用maven来编写教程https://spring.io/guides/gs/uploading-files/

我使用的所有密码都是复制的。

应用程序可以运行,但我得到了错误:

这个应用程序没有/error的显式映射,所以您认为这是一个退步。Tue 6月30日17:24:02 CST 2015发生了一个意外的错误(type=Not Found,status=404)。没有可用的消息

我怎么才能修好它?

EN

回答 53

Stack Overflow用户

发布于 2016-08-18 04:07:58

确保主类位于其他类之上的根包中。

当您运行Spring应用程序(即带有@SpringBootApplication注释的类)时,Spring只会扫描主类包下面的类。

代码语言:javascript
代码运行次数:0
复制
com
   +- APP
         +- Application.java  <--- your main class should be here, above your controller classes
         |
         +- model
         |   +- user.java
         +- controller
             +- UserController.java
票数 208
EN

Stack Overflow用户

发布于 2017-01-19 11:18:40

当我们创建Spring应用程序时,我们用@SpringBootApplication注释对其进行注释。这个注释‘结束’了许多其他必要的注释,以使应用程序工作。其中一个这样的注释就是@ComponentScan注释。这个注释告诉Spring查找Spring组件并配置运行的应用程序。

应用程序类需要位于包层次结构的顶端,这样Spring就可以扫描子包并找到其他必需的组件。

代码语言:javascript
代码运行次数:0
复制
package com.test.spring.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

下面的代码片段工作,因为控制器包在com.test.spring.boot包下

代码语言:javascript
代码运行次数:0
复制
package com.test.spring.boot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

    @RequestMapping("/")
    public String home(){
        return "Hello World!";
    }
}

下面的代码片段不工作,因为控制器包不在com.test.spring.boot包之下。

代码语言:javascript
代码运行次数:0
复制
package com.test.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

     @RequestMapping("/")
     public String home(){
         return "Hello World!";
     }
 }

来自Spring文档:

许多Spring开发人员总是使用@Configuration@EnableAutoConfiguration@ComponentScan注释他们的主类。由于这些注释经常一起使用(特别是如果您遵循上面的最佳实践),Spring提供了一个方便的@SpringBootApplication替代方案。 @SpringBootApplication注释相当于使用@Configuration@EnableAutoConfiguration@ComponentScan的默认属性。

票数 86
EN

Stack Overflow用户

发布于 2015-08-05 08:50:28

您可以通过在应用程序中添加一个ErrorController来解决这个问题。您可以让错误控制器返回您需要的视图。

应用程序中的错误控制器如下所示:

代码语言:javascript
代码运行次数:0
复制
import org.springframework.boot.autoconfigure.web.ErrorAttributes;
import org.springframework.boot.autoconfigure.web.ErrorController;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * Basic Controller which is called for unhandled errors
 */
@Controller
public class AppErrorController implements ErrorController{

    /**
     * Error Attributes in the Application
     */
    private ErrorAttributes errorAttributes;

    private final static String ERROR_PATH = "/error";

    /**
     * Controller for the Error Controller
     * @param errorAttributes
     */
    public AppErrorController(ErrorAttributes errorAttributes) {
        this.errorAttributes = errorAttributes;
    }

    /**
     * Supports the HTML Error View
     * @param request
     * @return
     */
    @RequestMapping(value = ERROR_PATH, produces = "text/html")
    public ModelAndView errorHtml(HttpServletRequest request) {
        return new ModelAndView("/errors/error", getErrorAttributes(request, false));
    }

    /**
     * Supports other formats like JSON, XML
     * @param request
     * @return
     */
    @RequestMapping(value = ERROR_PATH)
    @ResponseBody
    public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {
        Map<String, Object> body = getErrorAttributes(request, getTraceParameter(request));
        HttpStatus status = getStatus(request);
        return new ResponseEntity<Map<String, Object>>(body, status);
    }

    /**
     * Returns the path of the error page.
     *
     * @return the error path
     */
    @Override
    public String getErrorPath() {
        return ERROR_PATH;
    }


    private boolean getTraceParameter(HttpServletRequest request) {
        String parameter = request.getParameter("trace");
        if (parameter == null) {
            return false;
        }
        return !"false".equals(parameter.toLowerCase());
    }

    private Map<String, Object> getErrorAttributes(HttpServletRequest request,
                                                   boolean includeStackTrace) {
        RequestAttributes requestAttributes = new ServletRequestAttributes(request);
        return this.errorAttributes.getErrorAttributes(requestAttributes,
                includeStackTrace);
    }

    private HttpStatus getStatus(HttpServletRequest request) {
        Integer statusCode = (Integer) request
                .getAttribute("javax.servlet.error.status_code");
        if (statusCode != null) {
            try {
                return HttpStatus.valueOf(statusCode);
            }
            catch (Exception ex) {
            }
        }
        return HttpStatus.INTERNAL_SERVER_ERROR;
    }
}

以上类基于Springs BasicErrorController类。

您可以像这样在一个ErrorController文件中实例化上面的@Configuration

代码语言:javascript
代码运行次数:0
复制
 @Autowired
 private ErrorAttributes errorAttributes;

 @Bean
 public AppErrorController appErrorController(){return new AppErrorController(errorAttributes);}

您可以通过实现ErrorAttributes选择覆盖默认的ErrorAttributes。但在大多数情况下,DefaultErrorAttributes应该就足够了。

票数 50
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31134333

复制
相关文章
显式锁
Lock和ReentrantLock: 与内置加锁机制(synchronized)不同的是,Lock提供到了一种无条件的、可轮询的、定时的以及课中断的锁获取操作,所有加锁和解锁的方式都是显式的。Lock接口方法声明如下: public interface Lock{ void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock(long
SuperHeroes
2018/05/31
4410
Hibernate之关联关系映射(一对多和多对一映射,多对多映射)
别先生
2018/01/02
4.7K0
Hibernate之关联关系映射(一对多和多对一映射,多对多映射)
显式原型与隐式原型
* 函数的prototype属性: 在定义函数时自动添加的, 默认值是一个空Object对象
李才哥
2020/03/28
4310
显式原型与隐式原型
上手隐式锁,显式锁
对于聚簇索引记录来说,有一个 trx_id 隐藏列,该隐藏列记录着最后改动该记录的 事务id 。那么如果在当前事务中新插入一条聚簇索引记录后,该记录的 trx_id 隐藏列代表的的就是 当前事务的 事务id ,如果其他事务此时想对该记录添加 S锁 或者 X锁 时,首先会看一下该记录的trx_id 隐藏列代表的事务是否是当前的活跃事务,如果是的话,那么就帮助当前事务创建一个 X锁 (也就是为当前事务创建一个锁结构, is_waiting 属性是 false ),然后自己进入等待状态 (也就是为自己也创建一个锁结构, is_waiting 属性是 true )。
一个风轻云淡
2022/11/15
5100
上手隐式锁,显式锁
对继承映射的理解
继承关系的映射策略有三种: ① 每个继承结构一张表(table per class hierarchy),不管多少个子类都用一张表。 ② 每个子类一张表(table per subclass),公共信息放一张表,特有信息放单独的表。 ③ 每个具体类一张表(table per concrete class),有多少个子类就有多少张表。 第一种方式属于单表策略,其优点在于查询子类对象的时候无需表连接,查询速度快,适合多态查询;缺点是可能导致表很大。后两种方式属于多表策略,其优点在于数据存储紧凑,其缺点是需要进行连接查询,不适合多态查询。
唐怀瑟
2018/08/30
5330
执行Get-NetTCPConnection没有回显,但是执行netstat -ano有回显
问题:执行Get-NetTCPConnection没有回显,但是执行netstat -ano有回显,如下图
Windows技术交流
2023/09/12
2190
JavaScript显式原型与隐式原型
在JavaScript中,每个函数都有一个特殊的属性称为"prototype"。这个"prototype"属性是一个对象,它定义了该函数创建的对象的共享属性和方法。
堕落飞鸟
2023/05/17
3150
MySQL显式事务与隐式事务
显式事务是指在应用程序中明确指定事务的开始和结束,使用BEGIN、COMMIT和ROLLBACK语句来控制事务的执行。
堕落飞鸟
2023/05/11
1.2K0
【SSH快速进阶】——Hibernate 多对一映射 和 一对多映射
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/50339147
DannyHoo
2018/09/13
6330
【SSH快速进阶】——Hibernate 多对一映射 和 一对多映射
并发编程之显式条件
我们之前介绍 synchronized 关键字语义的时候说过,synchronized 虽然不需要我们手动的加锁和释放锁了,但不代表他没有用到锁。同时,我们说每个对象本身结构中也内置了阻塞队列,线程持有器,锁重入计数器等字段。
Single
2019/02/14
4970
并发编程之显式条件
我们之前介绍 synchronized 关键字语义的时候说过,synchronized 虽然不需要我们手动的加锁和释放锁了,但不代表他没有用到锁。同时,我们说每个对象本身结构中也内置了阻塞队列,线程持有器,锁重入计数器等字段。
Single
2019/05/25
3470
Selenium等待:sleep、隐式、显式和Fluent
Selenium等待页面加载在Selenium自动化测试中起着重要的作用。它们有助于使测试用例更加稳定,增强健壮性。Selenium提供多种等待,根据某些条件在脚本执行相应的等待,从而确保Selenium执行自动化测试时不会导致脚本失败。
FunTester
2020/09/27
2.7K0
Entity Framework 多对多映射
上一篇文章我们讲解了EF中的一对对多的关系映射,这篇文章我们讲解EF中的多对多(Many-to-Many Relationship)关系映射。这篇文章我们同样通过一个简单的例子来讲解多对多的关系映射。
喵叔
2020/09/08
1.1K0
Entity Framework 多对多映射
Hibernate单向多对一映射
Hibernate的多对一映射(Many-to-One)用于建立两个实体类之间的关联关系,其中一个实体类可以关联到多个另一个实体类的实例,而另一个实体类只能关联到一个特定的实例。这种关系是单向的,即只能从多的一方引用到一的一方,而无法反向引用。
堕落飞鸟
2023/05/15
3610
Hibernate之关联关系映射(一对一主键映射和一对一外键映射)
本文讲述了如何使用Hibernate进行一对一关联映射,通过实例介绍了User和IdCart两个实体类,以及如何在Hibernate中配置一对一关联映射。
别先生
2018/01/02
1.3K0
并发编程之显式锁原理
Synchronized 关键字结合对象的监视器,JVM 为我们提供了一种『内置锁』的语义,这种锁很简便,不需要我们关心加锁和释放锁的过程,我们只需要告诉虚拟机哪些代码块需要加锁即可,其他的细节会由编译器和虚拟机自己实现。
Single
2018/10/11
3680
并发编程之显式锁原理
并发显式锁之读写锁
上一篇文章我们介绍了一个显式锁,ReentrantLock ,了解到它是一个『独占式』锁,简而言之就是,
Single
2019/05/25
4450
并发显式锁之读写锁
上一篇文章我们介绍了一个显式锁,ReentrantLock ,了解到它是一个『独占式』锁,简而言之就是,
Single
2019/02/14
3880
【Flask】显式应用程序对象和销毁行为以及销毁行为在flask项目中的使用
基于WSGI的Python web应用程序必须有一个中央调用对象来实现实际应用程序。在Flask中,中心调用对象是Flask类的一个实例。每个Flask应用程序必须创建该类的一个实例,并将模块的名称传递给该实例。但为什么Flask不能自动做好所有这些事情呢?
上进小菜猪
2022/12/13
7780
android学习笔记----隐式意图和显式意图
显式意图:显式意图明确指明了启动活动的上下文和想要启动的目标活动,显式意图明确指定了Intent应该传递给哪个组件。 隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。
砖业洋__
2023/05/06
1.4K0
android学习笔记----隐式意图和显式意图

相似问题

此应用程序对/error坏请求400没有显式映射。

14

此应用程序对/error白标签错误没有显式映射。

10

这个应用程序没有对/error的显式映射

14

白字错误页应用程序对/error没有显式映射

20

每次我收到error-白色标签错误页面时,此应用程序没有显式的/error映射

214
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文