Tomcat9版本不支持jsp处理PUT,DELETE之外的请求的解决方案(405方法不允许)

在springMVC中使用REST风格编写时,处理PUT/DELETE请求会出现405方法不允许的错误:

image-20201019195107737

image-20201019195040588

解决方案:tomcat高版本不支持jsp的get/post/head之外的请求,可以设置错误页面参数isErrorPage=“true”

image-20201019195309614

0633181)]

这样可以捕获异常继续执行

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 是一个用于创建独立运行的Spring应用程序的框架。Hibernate 是一个流行的Java ORM框架,用于将Java对象映射到关系数据库中。JSPJavaServer Pages)是一种用于创建动态Web页面的Java技术。 在使用Spring Boot和Hibernate时,可以通过注解来轻松配置和使用Hibernate。同时,Spring Boot也提供了对JSP支持,可以使用Thymeleaf、Freemarker等模板引擎来创建动态页面。 以下是一个基于Spring Boot、Hibernate和JSP的示例项目: 1. 配置pom.xml文件,添加相关依赖 ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> </dependencies> ``` 2. 创建实体类User,使用Hibernate注解进行映射 ```java @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotBlank @Size(min = 3, max = 50) private String username; @NotBlank @Size(max = 120) private String password; // getters and setters } ``` 3. 创建数据访问层Repository,继承自JpaRepository ```java public interface UserRepository extends JpaRepository<User, Long> { Optional<User> findByUsername(String username); } ``` 4. 创建控制层Controller,使用Spring MVC注解进行配置 ```java @Controller @RequestMapping("/users") public class UserController { @Autowired private UserRepository userRepository; @GetMapping public String list(Model model) { model.addAttribute("users", userRepository.findAll()); return "users/list"; } @GetMapping("/{id}") public String view(@PathVariable("id") Long id, Model model) { User user = userRepository.findById(id) .orElseThrow(() -> new IllegalArgumentException("Invalid user Id:" + id)); model.addAttribute("user", user); return "users/view"; } @GetMapping("/new") public String createForm(Model model) { model.addAttribute("user", new User()); return "users/create"; } @PostMapping public String create(@Valid User user, BindingResult result) { if (result.hasErrors()) { return "users/create"; } userRepository.save(user); return "redirect:/users"; } @GetMapping("/{id}/edit") public String updateForm(@PathVariable("id") Long id, Model model) { User user = userRepository.findById(id) .orElseThrow(() -> new IllegalArgumentException("Invalid user Id:" + id)); model.addAttribute("user", user); return "users/update"; } @PostMapping("/{id}") public String update(@PathVariable("id") Long id, @Valid User user, BindingResult result) { if (result.hasErrors()) { user.setId(id); return "users/update"; } userRepository.save(user); return "redirect:/users"; } @DeleteMapping("/{id}") public String delete(@PathVariable("id") Long id) { userRepository.deleteById(id); return "redirect:/users"; } } ``` 5. 创建视图页面,使用JSP模板引擎进行渲染 ```html <!-- /src/main/resources/templates/users/list.jsp --> <table> <thead> <tr> <th>Username</th> <th></th> </tr> </thead> <tbody> <c:forEach items="${users}" var="user"> <tr> <td>${user.username}</td> <td> <a href="<c:url value='/users/${user.id}'/>">View</a> <a href="<c:url value='/users/${user.id}/edit'/>">Edit</a> <form action="<c:url value='/users/${user.id}'/>" method="post"> <input type="hidden" name="_method" value="delete"/> <input type="submit" value="Delete"/> </form> </td> </tr> </c:forEach> </tbody> </table> <a href="<c:url value='/users/new'/>">New User</a> <!-- /src/main/resources/templates/users/view.jsp --> <h1>${user.username}</h1> <a href="<c:url value='/users/${user.id}/edit'/>">Edit</a> <form action="<c:url value='/users/${user.id}'/>" method="post"> <input type="hidden" name="_method" value="delete"/> <input type="submit" value="Delete"/> </form> <!-- /src/main/resources/templates/users/create.jsp --> <h1>Create User</h1> <form action="<c:url value='/users'/>" method="post"> <div> <label for="username">Username:</label> <input type="text" id="username" name="username" value="${user.username}" required/> <span th:if="${#fields.hasErrors('username')}" th:errors="*{username}"></span> </div> <div> <label for="password">Password:</label> <input type="password" id="password" name="password" value="${user.password}" required/> <span th:if="${#fields.hasErrors('password')}" th:errors="*{password}"></span> </div> <div> <button type="submit">Create</button> </div> </form> <!-- /src/main/resources/templates/users/update.jsp --> <h1>Edit User</h1> <form action="<c:url value='/users/${user.id}'/>" method="post"> <input type="hidden" name="_method" value="put"/> <div> <label for="username">Username:</label> <input type="text" id="username" name="username" value="${user.username}" required/> <span th:if="${#fields.hasErrors('username')}" th:errors="*{username}"></span> </div> <div> <label for="password">Password:</label> <input type="password" id="password" name="password" value="${user.password}" required/> <span th:if="${#fields.hasErrors('password')}" th:errors="*{password}"></span> </div> <div> <button type="submit">Update</button> </div> </form> ``` 这就是一个基于Spring Boot、Hibernate和JSP的示例项目。通过使用注解配置,可以轻松地创建一个简单的Web应用程序。同时,使用Thymeleaf、Freemarker等模板引擎也可以很容易地替换JSP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值