详细解读-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>   


相关文章
|
3月前
|
JSON 前端开发 Java
Spring MVC 核心组件与请求处理机制详解
本文解析了 Spring MVC 的核心组件及请求流程,核心组件包括 DispatcherServlet(中央调度)、HandlerMapping(URL 匹配处理器)、HandlerAdapter(执行处理器)、Handler(业务方法)、ViewResolver(视图解析),其中仅 Handler 需开发者实现。 详细描述了请求执行的 7 步流程:请求到达 DispatcherServlet 后,经映射器、适配器找到并执行处理器,再通过视图解析器渲染视图(前后端分离下视图解析可省略)。 介绍了拦截器的使用(实现 HandlerInterceptor 接口 + 配置类)及与过滤器的区别
239 0
|
缓存 安全 Java
Spring Get请求 与post请求
本文详细介绍了Spring框架中GET请求和POST请求的区别及应用场景。GET请求用于从服务器获取资源,参数附在URL末尾,适合查看非敏感信息;POST请求用于向服务器提交数据,参数在请求体中传输,适合处理敏感信息。Spring通过`@GetMapping`和`@PostMapping`注解分别处理这两种请求。此外,文章还提供了示例代码,展示了如何在Spring中实现这两种请求的处理。最后,文章总结了推荐使用POST请求的原因,包括更高的安全性、更大的数据传输量、更好的幂等性及灵活性。
468 1
Spring Get请求 与post请求
|
6月前
|
缓存 安全 Java
深入解析HTTP请求方法:Spring Boot实战与最佳实践
这篇博客结合了HTTP规范、Spring Boot实现和实际工程经验,通过代码示例、对比表格和架构图等方式,系统性地讲解了不同HTTP方法的应用场景和最佳实践。
588 5
|
11月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
1002 2
|
12月前
|
设计模式 前端开发 Java
Spring MVC——项目创建和建立请求连接
MVC是一种软件架构设计模式,将应用分为模型、视图和控制器三部分。Spring MVC是基于MVC模式的Web框架,通过`@RequestMapping`等注解实现URL路由映射,支持GET和POST请求,并可传递参数。创建Spring MVC项目与Spring Boot类似,使用`@RestController`注解标记控制器类。
135 1
Spring MVC——项目创建和建立请求连接
|
前端开发 Java Spring
【Spring】“请求“ 之后端传参重命名,传递数组、集合,@PathVariable,@RequestPart
【Spring】“请求“ 之后端传参重命名,传递数组、集合,@PathVariable,@RequestPart
237 2
|
JSON 前端开发 Java
【Spring】“请求“ 之传递 JSON 数据
【Spring】“请求“ 之传递 JSON 数据
229 2
|
前端开发 Java Spring
【Spring】“请求“ 之传递单个参数、传递多个参数和传递对象
【Spring】“请求“ 之传递单个参数、传递多个参数和传递对象
328 2
|
XML Java 应用服务中间件
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
1108 2
|
Java API UED
【实战秘籍】Spring Boot开发者的福音:掌握网络防抖动,告别无效请求,提升用户体验!
【8月更文挑战第29天】网络防抖动技术能有效处理频繁触发的事件或请求,避免资源浪费,提升系统响应速度与用户体验。本文介绍如何在Spring Boot中实现防抖动,并提供代码示例。通过使用ScheduledExecutorService,可轻松实现延迟执行功能,确保仅在用户停止输入后才触发操作,大幅减少服务器负载。此外,还可利用`@Async`注解简化异步处理逻辑。防抖动是优化应用性能的关键策略,有助于打造高效稳定的软件系统。
231 2