首页 > 其他分享 >通过Spring MVC 实现 Restful 风格请求⽀持

通过Spring MVC 实现 Restful 风格请求⽀持

时间:2023-11-23 15:01:18浏览次数:40  
标签:Spring public MVC user ResponseEntity Restful id

 

通过Spring MVC可以很方便地实现Restful风格的请求支持。Restful风格的请求是一种基于HTTP协议的轻量级的Web服务架构风格,它通过HTTP的GET、POST、PUT、DELETE等方法来实现对资源的增删改查操作。在Spring MVC中,我们可以使用注解来定义Restful风格的请求处理方法,并且可以方便地进行参数绑定、返回结果的封装等操作。

下面是一个使用Spring MVC实现Restful风格请求的示例代码。

  1. 首先,我们需要在项目的配置文件中配置Spring MVC的相关配置。可以在web.xml文件中添加如下配置:
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/springmvc-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
  1. 在项目的src/main/webapp/WEB-INF/目录下创建springmvc-config.xml文件,并添加如下配置:
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <context:component-scan base-package="com.example.controller" />

    <mvc:annotation-driven />

</beans>
  1. 在项目的src/main/java目录下创建com.example.controller包,并在该包下创建UserController类,用于处理用户相关的请求。示例代码如下:
package com.example.controller;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    public ResponseEntity<User> getUser(@PathVariable("id") Long id) {
        // 根据id查询用户信息
        User user = userService.getUserById(id);
        if (user == null) {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
        return new ResponseEntity<>(user, HttpStatus.OK);
    }

    @PostMapping("/")
    public ResponseEntity<Void> createUser(@RequestBody User user) {
        // 创建用户
        userService.createUser(user);
        return new ResponseEntity<>(HttpStatus.CREATED);
    }

    @PutMapping("/{id}")
    public ResponseEntity<Void> updateUser(@PathVariable("id") Long id, @RequestBody User user) {
        // 更新用户信息
        userService.updateUser(id, user);
        return new ResponseEntity<>(HttpStatus.OK);
    }

    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteUser(@PathVariable("id") Long id) {
        // 删除用户
        userService.deleteUser(id);
        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
    }
}

在上述代码中,我们使用了@Controller注解来标识该类为一个控制器,@RequestMapping注解用于指定请求的URL路径。通过@GetMapping、@PostMapping、@PutMapping、@DeleteMapping等注解可以指定不同的HTTP方法来处理对应的请求。

在getUser方法中,我们使用@PathVariable注解来绑定URL路径中的参数,使用ResponseEntity来封装返回结果。在createUser、updateUser、deleteUser方法中,我们使用@RequestBody注解来绑定请求体中的参数。

  1. 在UserController类中,我们可以注入一个UserService类来处理用户相关的业务逻辑。示例代码如下:
package com.example.service;

import org.springframework.stereotype.Service;

@Service
public class UserService {

    public User getUserById(Long id) {
        // 根据id查询用户信息
        // ...
    }

    public void createUser(User user) {
        // 创建用户
        // ...
    }

    public void updateUser(Long id, User user) {
        // 更新用户信息
        // ...
    }

    public void deleteUser(Long id) {
        // 删除用户
        // ...
    }
}

在上述代码中,我们使用@Service注解来标识该类为一个服务类,可以在其中实现具体的业务逻辑。

通过以上步骤,我们就可以使用Spring MVC来实现Restful风格的请求支持了。在浏览器中访问
http://localhost:8080/users/1,即可调用getUser方法来获取id为1的用户信息。通过POST、PUT、DELETE等方法可以实现对用户的创建、更新和删除操作。

这只是一个简单的示例,实际项目中可能会涉及到更多的业务逻辑和参数处理方式。但是通过Spring MVC的注解和封装,我们可以很方便地实现Restful风格的请求支持,提高开发效率。

标签:Spring,public,MVC,user,ResponseEntity,Restful,id
From: https://www.cnblogs.com/hanbing81868164/p/17851561.html

相关文章

  • 手把手教你玩转 SpringBoot 日志
    本文根据文章:https://lebron.blog.csdn.net/article/details/132953586?spm=1001.2014.3001.5502进行修改一、日志重要吗程序中的日志重要吗?在回答这个问题前,笔者先说个事例:笔者印象尤深的就是去年某个同事,收到了客户反馈的紧急bug。尽管申请到了日志文件,但因为很多关键步骤......
  • Spring中@Mapper和@Repository的区别与使用
    本文根据文章:https://blog.csdn.net/m0_45210394/article/details/126223145进行修改@Mapper是mybatis的注解,标注在dao层接口上,可以通过动态代理生成接口的实例bean(编译之后能生成相应的接口实现类)@Repository是spring的注解,也标注在dao层接口上,但是@Repository注解只是表明这......
  • Bean instantiation via constructor failed; nested exception is org.springframewo
    一、从公司的的GitLab下载项目到本地二、nacos-2.0.1启动不了我以为是我中文路径问题,然后放到全是英文的一样报错,百度一圈没找到解决方法。三、大佬路过,瞟了我一眼的电脑解决了。删除D:\nacos-2.0.0\data 下面的所有文件即可 原因就是有人把自己的数据上传到git了,导致......
  • 基于java+springboot的酒店预定网站、酒店客房管理系统
    该系统是基于Java的酒店客房预订系统设计与实现。是给师弟开发的毕业设计。现将源代码开放出来,感兴趣的同学可以下载。演示地址前台地址:http://hotel.gitapp.cn后台地址:http://hotel.gitapp.cn/admin后台管理帐号:用户名:admin123密码:admin123功能介绍平台采用B/S结构,后端采用主......
  • springboot多文件上传代码实例及解析
    这篇文章主要介绍了springboot多文件上传代码实例及解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下一说明spingMVC支持文件上传,我们通过Apach的commons-fileupload包的CommonsMultipartResolver去实现了spingMVC的Mu......
  • Spring_2023_11_23_1 Spring--整合JDBC===》JdbcTemplate
    Spring--整合JDBC===》JdbcTemplateListquery(Stringsql,RowMapperrowMapper,@NullableObject...args)Stringsql执行的sql语句,可以使用占位符RowMapper接口:2.1mapRow(ResultSetrs,introwNum):查询出数据的每一行的映射2.1.1ResultSetrs:结果中存储的是一......
  • SpringBoot注入时设置《多例》
    SpringBoot设置多例1、准备数据测试接口packagecom.cc.jschdemo.springmultiton;/***<p>spring多例测试</p>**@author--*@since2023/11/23*/publicinterfaceISpringMultiton{}测试接口实现(注入spring)packagecom.cc.jschdemo.springmultiton;i......
  • spring笔记
     Async First,let’sgoovertherules. @Async hastwolimitations:Itmustbeappliedto public methodsonly.Self-invocation—callingtheasyncmethodfromwithinthesameclass—won’twork.https://www.baeldung.com/spring-async......
  • Springboot全局异常处理
    自定义异常枚举类枚举类用于定义自定义的异常类型,对应自定义错误码,错误信息,状态码publicenumErrorCodeEnum{USERINFO_EXCEPTION(10001,HttpStatus.INTERNAL_SERVER_ERROR,"UserInfoException"),AUTHORIZATION_EXCEPTION(10002,HttpStatus.UNAUTHORIZED,"Authoriza......
  • 使用SpringBoot实现文件的上传
    使用SpringBoot实现文件的上传springboot可以直接使用org.springframework.web.multipart.MultipartFile所以非常容易实现一、首先是简单的单文件上传先在index.html页面下写一个简单的form表单<h1>单文件</h1><formclass="form-signin"th:action="@{/SingleFile/upload}"......