SpringMVC-Rest与静态资源的处理

1.相关控制类

package com.hwy.controller;

import com.hwy.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/*
* 用户Rest风格CRUD
* form表单提交PUT和DELETE出现问题:会将PUT和DELETE作GET提交,因为HTML现在无法支持PUT和DELETE:
* 解决方案:
* 1.需要添加HiddenHttpMethodFilter过滤器
* 2.在表单中添加一个隐藏域  value就是对应的请求方式
* 3.将form的表单设置POST
*
* tomcat7以上的版本对request.method更加严格:只支持 GET/POST
* 解决方案:
* 1.使用tomcat7
* 2.不用转发,使用重定向
* 3.自定义一个过滤器
* */
@Controller
@RequestMapping("/rest")
public class RestController {

    //查询
    @GetMapping("/user/{id}")
    public String get(@PathVariable("id") String id){
        System.out.println("查询"+id);
        return "/index.jsp";
    }

    //修改
    @PutMapping("/user/{id}")
    public String update(User user){
        System.out.println("修改"+user);
        return "/index.jsp";
    }

    //删除
    @DeleteMapping("/user/{id}")
    public String delete(@PathVariable("id") String id){
        System.out.println("删除"+id);
        return "redirect:/index.jsp";
    }
    //新增
    @PostMapping("/user")
    public String add(User user){
        System.out.println("新增"+user);
        return "redirect:/index.jsp";
    }






}

  • 用户Rest风格CRUD

  • form表单提交PUT和DELETE出现问题:会将PUT和DELETE作GET提交,因为HTML现在无法支持PUT和DELETE:

  • 解决方案:

  • 1.需要添加HiddenHttpMethodFilter过滤器

  • 2.在表单中添加一个隐藏域 value就是对应的请求方式

  • 3.将form的表单设置POST

  • tomcat7以上的版本对request.method更加严格:只支持 GET/POST

  • 解决方案:

  • 1.使用tomcat7

  • 2.不用转发,使用重定向

  • 3.自定义一个过滤器

2.jsp类

<%--
  Created by IntelliJ IDEA.
  User: MSI-NB
  Date: 2021/12/9
  Time: 19:12
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<% request.setAttribute("basepath",request.getContextPath());%>
<html>
<head>
    <title>Title</title>
</head>
<body>

<form action="${basepath}/rest/user/1" method="get">
    <input type="submit" value="查询">
</form>

<form action="${basepath}/rest/user" method="post">
    id: <input name="id" type="text"><p></p>
    姓名:<input name="name" type="text"><p></p>
    <input type="submit" value="新增">
</form>

<form action="${basepath}/rest/user/1" method="post">
    <input type="hidden" value="put" name="_method">
    <input type="submit" value="修改">
</form>

<form action="${basepath}/rest/user/1" method="post">
    <input type="hidden" value="delete" name="_method">
    <input type="submit" value="删除">
</form>

</body>

</html>

3.XML

 
    <filter>
        <filter-name>hiddenHttpMethodfilter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilterfilter-class>
    filter>
    
    <filter-mapping>
        <filter-name>hiddenHttpMethodfilter-name>
        <servlet-name>springmvcservlet-name>
    filter-mapping>

静态资源的处理

springmvc.xml中配置

 
    <mvc:resources mapping="/resources/**" location="/resources/"/>

你可能感兴趣的:(SpringMVC,java,restful,java-ee)