SpringMVC框架04—RESTful入门

1、RESTful的基本概念

REST(Representational State Transfer)表述性状态转移,REST并不是一种创新技术,它指的是一组架构约束条件和原则,符合REST的约束条件和原则的架构,就称它为RESTful架构。
RESTful具体来讲就是HTTP协议的四种形式表示四种基本操作:
GET(获取资源)、POST(新建资源)、PUT(修改资源)、DELETE(删除资源)

2、RESTful架构的特点

统一了客户端访问资源的接口
url更加简洁,易于理解,便于扩展
有利于不同系统之间的资源共享

3、RESTful开发风格示例

  • 查询课程,method=‘get‘,http://localhost:8080/id
  • 添加课程,method=‘post‘,http://localhost:8080/course
  • 删除课程,method=‘delete‘,http://localhost:8080/id
  • 修改课程,method=‘put‘,http://localhost:8080/course

4、RESTful的代码实现

4.1、配置过滤器

在web.xml配置文件中编辑代码:

<!--设置HTTP请求方式-->
<filter>
  <filter-name>hiddenHttpMethodFilter</filter-name>
  <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>hiddenHttpMethodFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

4.2、创建实体类

示例代码:

public class Course {
    private int id;
    private String name;
    private double price;

    //getter,setter方法

}

4.3、创建DAO

示例代码:

@Repository
public class CourseDao {

    //模拟数据库存储
    private Map<Integer, Course> courseMap = new HashMap<>();

    /**
     * 添加课程
     */
    public void add(Course course){
        courseMap.put(course.getId(),course);
    }

    /**
     * 查询所有课程
     */
    public Collection<Course> getAll(){
        return courseMap.values();
    }

    /**
     * 通过ID查询课程
     */
    public Course getById(int id){
        return courseMap.get(id);
    }

    /**
     * 修改课程
     */
    public void update(Course course){
        courseMap.put(course.getId(),course);
    }

    /**
     * 删除课程
     */
    public void delete(int id){
        courseMap.remove(id);
    }

}

4.4、POST添加数据

Controller类中的业务方法:

@Controller
public class CourseController {

    @Autowired
    private CourseDao courseDao;

    /**
     * 添加课程
     */
    @PostMapping("/add")
    public String add(Course course){
        courseDao.add(course);
        System.out.println(course);
        return "redirect:/getAll";
    }
}

add.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<html>
<head>
    <title>添加课程</title>
</head>
<body>
<h1>添加课程</h1>
<hr>
<form action="${pageContext.request.contextPath}/add" method="post">
    <p>
        课程编号:<input type="text" name="id">
    </p>
    <p>
        课程名称:<input type="text" name="name">
    </p>
    <p>
        课程价格:<input type="text" name="price">
    </p>
    <p>
        <input type="submit" value="提交">
    </p>
</form>
</body>
</html>

4.5、GET查询数据

Controller类中的业务方法:

/**
 * 查询所有课程
 */
@GetMapping("/getAll")
public String getAll(Model model){
    model.addAttribute("courses",courseDao.getAll());
    System.out.println("getAll.......");
    return "index";
}

/**
 * 根据ID查询课程
 */
@GetMapping("/getById/{id}")
public String getById(@PathVariable("id") int id,Model model){
    model.addAttribute("course",courseDao.getById(id));
    return "edit";
}

index.jsp页面,用于展示数据:

<table border="1" width="80%">
    <tr>
        <th>课程编号</th>
        <th>课程名称</th>
        <th>课程价格</th>
        <th>编辑</th>
    </tr>
    <c:forEach items="${courses}" var="course">
        <tr>
            <td>${course.id}</td>
            <td>${course.name}</td>
            <td>${course.price}</td>
            <td>
                <form action="${pageContext.request.contextPath}/getById/${course.id}" method="get">
                    <input type="submit" value="编辑">
                </form>
                &nbsp;&nbsp;
                <form action="${pageContext.request.contextPath}/delete/${course.id}" method="post">
                    <input type="hidden" name="_method" value="DELETE">
                    <input type="submit" value="删除">
                </form>
            </td>
        </tr>
    </c:forEach>
</table>

4.6、PUT修改数据

Controller类中的业务方法:

/**
 * 修改课程
 */
@PutMapping("/update")
public String update(Course course){
    courseDao.update(course);
    return "redirect:/getAll";
}

edit.jsp页面

<form action="${pageContext.request.contextPath}/update" method="post">
    <p>
        课程编号:<input type="text" name="id" value="${course.id}">
    </p>
    <p>
        课程名称:<input type="text" name="name" value="${course.name}">
    </p>
    <p>
        课程价格:<input type="text" name="price" value="${course.price}">
    </p>
    <p>
        <input type="hidden" name="_method" value="PUT">
        <input type="submit" value="提交">
    </p>
</form>

4.7、DELETE删除数据

Controller类中的业务方法:

/**
 * 删除课程
 */
@DeleteMapping("/delete/{id}")
public String delete(@PathVariable("id") int id){
    courseDao.delete(id);
    return "redirect:/getAll";
}

index.jsp页面中的删除按钮:

<form action="${pageContext.request.contextPath}/delete/${course.id}" method="post">
  <input type="hidden" name="_method" value="DELETE">
  <input type="submit" value="删除">
</form>

原文地址:https://www.cnblogs.com/jpwz/p/10540067.html

时间: 2024-10-27 17:13:48

SpringMVC框架04—RESTful入门的相关文章

springMvc框架之Restful风格

method: @Controller @RequestMapping("/test") public String MyController{ @RequestMapping("/begin") public String hi(HttpServletRequest request){ String name=request.getParameter("name"); System.out.println(name); return "

SpringMVC框架(1)--基础入门

Spring框架可优化的部分: 因为应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) ,这样的弊端是配置文件加载多次,应用上下文对象创建多次.所以在Web项目中,可以使用ServletContextListener监听Web应用的启动,我们可以在Web应用启动时,就加载Spring的配置文件,创

SpringMVC 框架系列之初识与入门实例

SpringMVC 框架系列之初识与入门实例 1.SpringMVC 概述 (1).什么是 MVC:Model-View-Control Control 层属于框架性质,完成的主要工作是:封装 web 请求为一个数据对象.调用业务逻辑层来处理数据对象.返回处理数据结果及相应的视图给客户端. (2).什么是 SpringMVC Spring mvc 和 Struts2 都属于表现层的框架,是 Spring 框架的一部分,Spring 框架的 Control 层的核心是 DispatcherServ

SpringMvc框架 解决在RESTFUL接口后加任意 “.xxx” 绕过权限的问题

问题描述: 框架使用的是SpringMVC.SpringSecurity,在做权限拦截的时候发现一个问题,假设对请求路径/user/detail进行了权限拦截,在访问/user/detail.abc的时候却能有权限访问 问题原因: SpringMVC框架会将“/user/detail.abc”与RequestMapping中的“/user/detail”进行正则匹配,匹配规则为:/user/detail.*,因此请求进来时能将/user/detail.abc交给/user/detail的Cont

[精华]springMVC环境搭建基础入门总汇!

1.SpringMVC概述 SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于 Spring       FrameWork 的后续产品,已经融合在 Spring Web Flow 里面.Spring 框架提供了构建 Web 应用程序的全功 能 MVC 模块.使用 Spring 可插入的 MVC 架构,从而在使用 Spring 进行 WEB 开发时,可以选择使用 Spring 的 Spring MVC 框架或集成其他 MVC 开发框架,如

Farseer.net轻量级开源框架 V1.x 入门篇:数据库配置及其它配置文件

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 V1.x 入门篇:新版本说明 下一篇:Farseer.net轻量级开源框架 V1.x 入门篇:表实体类映射 前言 Farseer.Net是支持多数据库的ORM,使用者通过配置文件即可切换指定的数据库而不需要修改项目中的任何代码.本篇讲述如何进行数据库环境的配置.同时也讲述其它配置文件的使用. 配置文件 1.配置文件的路径: 不管是WebForm.Mvc.WinForm,配置文件统一放在:~

springmvc学习笔记(5)-入门程序小结

springmvc学习笔记(5)-入门程序小结 springmvc学习笔记5-入门程序小结 入门程序配置小结 非注解的完整的配置文件 注解的完整配置文件 通过入门程序理解springmvc前端控制器.处理器映射器.处理器适配器.视图解析器用法.并附上入门程序的非注解的完整的配置文件,注解的完整配置文件. 入门程序配置小结 前端控制器配置: 第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析 第二种:/,所以访问的地址都由DispatcherServl

SpringMVC 基础教程 简单入门实例

SpringMVC 基础教程 简单入门实例 标签: Spring MVCspringmvcSpringMVC教程基础教程SpringMVC实例 2013-05-09 13:44 170403人阅读 评论(69) 收藏 举报  分类: Java(23)  Spring框架(3)  版权声明:本文为博主原创文章,未经博主允许不得转载. spring MVC 入门教程二: 一个简单的入门实例教程 该实例的源码和实例中的jar 源码:http://download.csdn.net/detail/swi

springmvc框架简介

1.springmvc Spring  MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型. springmvc包括以下组件,主要有以下作用 1.前端控制器(DispatcherServlet)  (不需要开发) 接收用户请求,发送响应 2.处理器映射器(HandlerMapping)(不需要开发) 根据请求的url来查找handler 3.处理器适配器(Handle