java - 我不能打开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
请告诉我如何部署网络应用程序?谢谢
解决方案
实际部署的应用程序:
在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();
}
推荐阅读
- python-3.x - 熊猫数据框 concat 返回与第一个数据框相同的数据
- excel - 将数据从 Access 导入 Excel 并进行从 $ 到 M$ 的转换
- c - 试图理解 IF 语句的逻辑
- tensorflow - 使用 TensorFlow Keras 拟合数据的问题
- ruby-on-rails - 在 Rails 的 form_for 视图构建器中,两个输入字段(整数)相乘后的值是否可以显示在表单的后续行中?
- r - 解包从另一个缺少命名参数的函数提供的点
- javascript - 窗口中的笑话模拟功能
- node.js - 如何使用衰减算法对 Express 中的照片进行排序?
- azure - 从 Azure Functions 请求图形 API
- python - 在 Pandas 中的 Multiindex DataFrame 中计数