详细解读-Spring请求处理(下)

简介: 详细解读-Spring请求处理(下)

二、请求映射处理

1.@RequestMapping

作用:将请求和处理请求的控制器方法关联起来,建立映射关系。

@RequestMapping用来匹配客户端发送的请求,可以在方法上使用, 也可以在类上使用。

方法:表示用来匹配要处理的请求

类上:表示为当前类的所有方法的请求地址添加一个前置路径,访问 的时候必须要添加此路径


@RequestMapping就是用来标识此方法用来处理什么请求,其中的/可以取消

取消后默认也是从当前项目的根目录开始查找,一般在编写的时候看个人习惯

同时,@RequestMapping也可以用来加在类上,

 @RequestMapping("/bobo1")
    public String bobo1(User user) {
        System.out.println(user);
        return "index.jsp";
    }


2.@PathVariable

此注解就是提供了对占位符URL的支持,就是将URL中占 位符参数绑定到控制器处理方法的参数中。

@PathVariable 用在参数上面的 专门用来获取URL目录级别的参数

比如 http://localhost:8080/springmvc/path/user/123/xushu 要获得123 @RequestMapping(“/user/{id}”) : @PathVariable(“id”) Int eger id 10


示例:

@RequestMapping("/user/{id}/{username}") 
public String path01(@PathVariable("id") Integer id,@PathVariable("username") String name)
{ 
  System.out.println(id); 
  System.out.println(name);
  return "/index.jsp"; 
}


3.REST

REST即表述性状态传递(英文:Representational State Transfer, 简称REST)是RoyFielding博士在2000年他的博士论文中提出来的一种软件架 构风格。

它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。 一种相较与之前URL所产生一种更优雅的URL风格


如果是原来的架构风格,需要发送四个请求,分别是?

查询用户:http://localhost:8080/app/user.do?action=getUser&id=xxx GET 增加用户:

http://localhost:8080/app/user_add.do POST 修改用户:

http://localhost:8080/app/xiugaiuser.do POST 删除用户:

http://localhost:8080/app/delete.do?id=1 GET/POST


让不同的请求方式表示不同的请求类型就可以简化我们 的查询,改成名词

看URL就知道要什么看http method就知道干什么

查询用户: http://localhost:8080/xxx/user/1 GET ­­查询

查询多个用户: http://localhost:8080/xxx/users GET

新增用户: http://localhost:8080/xxx/user POST ­­­新增

修改用户: http://localhost:8080/xxx/user/1 PUT ­­修改

删除用户:http://localhost:8080/xxx/user/1 DELETE ­­删除


对网络上所有的资源都有一个资源标志符;

对资源的操作不会改变标识符;

同一资源有多种表现形式(xml、json);

所有操作都是无状态的(Stateless)

符合上述REST原则的架构方式称为RESTful


HiddenHttpMethodFilter:浏览器 form 表单只支持 GET与 POST 请求,而DELETE、PUT 等 method 并不支持,Spring3.0 添加了一个过滤器,可以将这些请求转换为标准的 http 方法,使得支持 GET、POST、PUT 与DELETE 请求。

在web.xml中配置过滤器,来实现delete和put方法

<!--    处理html不支持rest中put和delete-->
    <filter>
        <filter-name>hiddenHttpMethod</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>hiddenHttpMethod</filter-name>
        <servlet-name>springmvc</servlet-name>
    </filter-mapping>
@Controller
@RequestMapping("/rest")
public class RestController {
    // 查询
    @GetMapping("/user/{id}")
    public String get(@PathVariable("id") Integer id){
        System.out.println("查询用户:"+id);
        return "/index.jsp";
    }
    // 新增
    @PostMapping("/user")
    public String add(User user){
        System.out.println("新增用户:"+user);
        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") Integer id){
        System.out.println("删除用户:"+id);
        return "/index.jsp";
    }
}


4.静态资源的访问

当页面中包含静态资源的时候我们能够正确的获取到吗?

72912f52179043b3b6d50beaf89dc831.png


在自己设置的xml文件中加入一个配置

我这里图片放在web文件夹下的image文件夹中

   <mvc:default-servlet-handler/>
<!--    <mvc:annotation-driven></mvc:annotation-driven>-->
    <mvc:resources mapping="/images/**" location="/image/"/>


访问静态资源,只要在xml文件中加入如下配置即可:

<mvc:default-servlet-handler/>
    <mvc:annotation-driven></mvc:annotation-driven>   


相关文章
|
2月前
|
缓存 安全 Java
Spring Get请求 与post请求
本文详细介绍了Spring框架中GET请求和POST请求的区别及应用场景。GET请求用于从服务器获取资源,参数附在URL末尾,适合查看非敏感信息;POST请求用于向服务器提交数据,参数在请求体中传输,适合处理敏感信息。Spring通过`@GetMapping`和`@PostMapping`注解分别处理这两种请求。此外,文章还提供了示例代码,展示了如何在Spring中实现这两种请求的处理。最后,文章总结了推荐使用POST请求的原因,包括更高的安全性、更大的数据传输量、更好的幂等性及灵活性。
Spring Get请求 与post请求
|
1月前
|
设计模式 前端开发 Java
Spring MVC——项目创建和建立请求连接
MVC是一种软件架构设计模式,将应用分为模型、视图和控制器三部分。Spring MVC是基于MVC模式的Web框架,通过`@RequestMapping`等注解实现URL路由映射,支持GET和POST请求,并可传递参数。创建Spring MVC项目与Spring Boot类似,使用`@RestController`注解标记控制器类。
36 1
Spring MVC——项目创建和建立请求连接
|
26天前
|
前端开发 Java 测试技术
深入剖析:Spring Boot Controller中请求处理方法的访问修饰符
【10月更文挑战第21天】 在Spring Boot应用中,Controller类中的请求处理方法通常用于处理HTTP请求。这些方法的访问修饰符(private或public)对方法的行为和可访问性有着重要影响。本文将深入探讨在Controller中使用private和public修饰符的区别,以及它们对Spring MVC框架的影响。
25 8
|
1月前
|
前端开发 Java Spring
【Spring】“请求“ 之后端传参重命名,传递数组、集合,@PathVariable,@RequestPart
【Spring】“请求“ 之后端传参重命名,传递数组、集合,@PathVariable,@RequestPart
28 2
|
1月前
|
JSON 前端开发 Java
【Spring】“请求“ 之传递 JSON 数据
【Spring】“请求“ 之传递 JSON 数据
87 2
|
1月前
|
前端开发 Java Spring
【Spring】“请求“ 之传递单个参数、传递多个参数和传递对象
【Spring】“请求“ 之传递单个参数、传递多个参数和传递对象
115 2
|
1月前
|
XML Java 应用服务中间件
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
180 2
|
3月前
|
安全 Java 应用服务中间件
如何在 Spring Boot 3.3 中实现请求 IP 白名单拦截功能
【8月更文挑战第30天】在构建Web应用时,确保应用的安全性是至关重要的。其中,对访问者的IP地址进行限制是一种常见的安全措施,特别是通过实施IP白名单策略,可以只允许特定的IP地址或IP段访问应用,从而有效防止未授权的访问。在Spring Boot 3.3中,我们可以通过多种方式实现这一功能,下面将详细介绍几种实用的方法。
251 1
|
3月前
|
Java API UED
【实战秘籍】Spring Boot开发者的福音:掌握网络防抖动,告别无效请求,提升用户体验!
【8月更文挑战第29天】网络防抖动技术能有效处理频繁触发的事件或请求,避免资源浪费,提升系统响应速度与用户体验。本文介绍如何在Spring Boot中实现防抖动,并提供代码示例。通过使用ScheduledExecutorService,可轻松实现延迟执行功能,确保仅在用户停止输入后才触发操作,大幅减少服务器负载。此外,还可利用`@Async`注解简化异步处理逻辑。防抖动是优化应用性能的关键策略,有助于打造高效稳定的软件系统。
74 2
|
4月前
|
Java Spring
spring restTemplate 进行http请求的工具类封装
spring restTemplate 进行http请求的工具类封装
216 3