首页 > 解决方案 > 我不能打开spring boot web吗?

问题描述

在作为 Java 应用程序运行之前,我的项目有 MySql、Spring-boot、REST 服务。我想部署网络应用程序,但系统报告错误消息:Whitelabel Error Page...

在此处输入图像描述

控制器:

@RestController
@RequestMapping("/autoeshop")
public class EmployeeController {

    @Autowired
    EmployeeDAO employeeDAO;

    /* to save an employee*/
    @PostMapping("/employees")
    public Employee saveEmployee(@Valid @RequestBody Employee emp) {
        return employeeDAO.save(emp);
    }

    /*get an employee by id*/
    @GetMapping("/employees/{id}")
    public ResponseEntity<Employee> getEmployee(@PathVariable(value="id") Long empId){
        Employee emp=employeeDAO.get(empId);

        if(emp==null)
            return ResponseEntity.notFound().build();
        return ResponseEntity.ok().body(emp);
    }   

    /*get all employees*/
    @GetMapping("/employees")
    public List<Employee> getAllEmployees(){
        return employeeDAO.getAll();
    }

    /*update an employee*/
    @PutMapping("/employees")
    public void updateEmployee(@PathVariable(value="id") Long empId, @Valid @RequestBody Employee empDetails) {

        Employee emp = employeeDAO.get(empId);
        //if(emp==null)
        //  return ResponseEntity.notFound().build();

        emp.setName(empDetails.getName());
        emp.setDesignation(empDetails.getDesignation());
        emp.setExpertise(empDetails.getExpertise());

        //return ResponseEntity.ok().body((Employee)employeeDAO.update(emp));
        employeeDAO.update(emp);
    }

    /*Delete an employee*/
    @DeleteMapping("/employees/{id}")
    public ResponseEntity<Employee> deleteEmployee(@PathVariable(value="id") Long empId){
        //Employee emp=employeeDAO.get(empId);

        if(employeeDAO.get(empId)==null)
            return ResponseEntity.notFound().build();
        employeeDAO.delete(empId);
        return ResponseEntity.ok().build();
    }
}

应用程序属性:

Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)

spring.datasource.url = jdbc:mysql://localhost:3306/autoeshop
spring.datasource.username = root
spring.datasource.password =



## Hibernate Properties
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update

请告诉我如何部署网络应用程序?谢谢

标签: javarestspring-bootweb

解决方案


实际部署的应用程序:

在spring boot中,只有当应用程序启动(应用程序上下文启动)成功时,http端口才会暴露(在你的情况下是8081)

但是,应用程序中没有/autoeshop/employee注册的映射。您可以查看 spring 应用程序的启动日志,它记录了所有已注册的映射。

现在,如果没有映射,默认行为是返回此错误页面 + http 404(未找到)状态,这正是您所看到的。

所以底线,你应该检查控制器映射,它可能归结为以下之一:

  • 控制器具有使用您尝试检查的注释指定的不同映射
  • Spring boot 没有找到你的控制器(有很多可能的原因)

更新:我现在已经看到你的代码,确实没有 GET 请求映射到 /autoeshop/employee

相反,您有一个映射到/autoeshop/employees(复数)

 /*get all employees*/
@GetMapping("/employees")
public List<Employee> getAllEmployees(){
    return employeeDAO.getAll();
}

推荐阅读