springmvc请求方式的转换

本文深入解析HTTP协议中的GET、POST、DELETE、PUT等请求方法,介绍如何在网页中使用这些方法,以及如何通过POST请求模拟其他请求方式。文章还详细说明了在后端控制器中如何配置请求方式,以及如何利用过滤器进行请求转换。

1、在页面发出请求的时候,只见过get和post两种请求方式:

1)超链接、js文件加载<script src=”js/jquery.js”>css文件加载<link href=”css/main.css”>都是发出get请求;
2)表单通过method属性设置get或者post请求
3)异步操作:type属性设置get或者post请求

2、请求方式:get、post、delete、put、head、trace、options

http协议只实现了get和post,所以页面只有两种请求方式被实现了:get和post;
那么其他的请求方式没有被实现,可以通过一种手段模拟其他请求方式,比如delete、put、head等等

3、如何实现模拟?

1)必须是post请求才能模拟转换------原始请求是post

<!-- 先模拟一个put请求 -->
<form action="put.action" method="post">
	
</form>

2)固定参数对请求的时候的数据key=value:
_method=delete/put/…

> <!-- 这个标签对应的文本框必须是隐藏的 --> 	<input type="hidden" name="_method"
> value="put"> 	<p>id<input type="text" name="id"></p> 	<p><input
> type="submit" value="提交"></p>

3)在后端控制器中@RequestMapping注解中添加对应的方式(属性=值)

@RequestMapping(value="/put.action",method = RequestMethod.PUT)
	public String put(int id) {
		/////////
		System.out.println(id);
		/////
	//在转发此main.jsp页面时,还是put请求方式;但是此时这个页面的响应使用的是get请求的处理方式
	//405请求方式和处理请求的方式不匹配
	return "redirect:/show.action";
}
@RequestMapping("/show.action")//自动匹配相应的请求方式
	public String show() {
		return "/WEB-INF/main.jsp";
	}

4)需要一个过滤器—请求转换的过滤器

<!-- post请求转其他请求方式的过滤器 -->
<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、一般情况下可能会根据不同的CRUD操作,来对应不同的请求方式;
即如果是查询操作–使用get请求、
如果是保存操作–使用post请求、
如果是修改操作–使用put请求、
如果是删除操作–使用delete请求

### SpringMVC 请求处理流程详解 SpringMVC 是基于 Servlet 的轻量级 Web 开发框架,其请求处理流程清晰且模块化。以下是 SpringMVC 请求处理的核心步骤及其图解说明。 #### 1. DispatcherServlet 初始化 DispatcherServlet 是整个 SpringMVC 框架的前端控制器,在应用启动时会初始化并加载配置文件中的 Bean 定义和其他必要资源[^1]。它负责接收所有的 HTTP 请求并将它们分派到相应的处理器。 #### 2. HandlerMapping 查找处理器 当接收到客户端请求后,DispatcherServlet 调用 `HandlerMapping` 接口来查找能够处理该请求的具体处理器(Controller)。这个过程中可能会涉及 URL 映射规则匹配以及方法级别的注解解析[^2]。 #### 3. HandlerAdapter 执行处理器 通过 `HandlerMapping` 获取到的目标处理器可能是一个普通的 Java 方法或者带有特定注解的方法。此时需要借助 `HandlerAdapter` 来适配这些不同的处理器形式以便统一调用逻辑[^2]。 ```java // 示例代码展示如何定义一个简单的 Controller @Controller public class ExampleController { @RequestMapping("/example") public String handleRequest(Model model) { model.addAttribute("message", "Hello, Spring MVC!"); return "viewName"; } } ``` #### 4. 处理业务逻辑与数据模型构建 实际的业务逻辑由具体的 Controller 实现类完成。在此阶段可以操作数据库、调用服务层接口等,并最终生成用于视图渲染的数据模型对象 Model[^3]。 #### 5. ViewResolver 解析视图名称 一旦 Controller 返回了一个逻辑视图名,则交由 `ViewResolver` 将此逻辑名字转换成物理视图页面路径地址。例如 JSP 文件的位置或其他模板引擎所对应的文件位置。 #### 6. 渲染视图并向客户端发送响应 最后一步是由选定好的视图技术(比如 Thymeleaf 或 FreeMarker)利用前面准备完毕的数据模型来进行动态内容填充工作;之后把完整的 HTML 文档作为回应传回给原始发出请求的那个浏览器端用户界面显示出来[^3]。 --- ### 流程图描述 下面给出了一张简化版的 SpringMVC 请求处理流程图: ![SpringMVC Request Flow](https://via.placeholder.com/800x400?text=SpringMVC+Request+Flow) > 注:由于无法直接嵌入图片,请自行查阅参考资料中提到的相关图表以获得更直观的理解[^3]。 --- ### 总结 综上所述,SpringMVC请求处理机制遵循典型的 MVC 设计模式原则,其中包含了多个重要的组件协作完成从接受请求到最后返回结果的一系列动作。每一个环节都有专门的设计理念支持高效灵活的应用开发需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值