中国建设网站首页用电脑做服务器的建一个网站
web/
2025/10/7 19:30:57/
文章来源:
中国建设网站首页,用电脑做服务器的建一个网站,网站建设优化推广哈尔滨,软文推广渠道前言
欢迎阅读 Spring MVC 系列教程的第二篇文章#xff01;在上一篇文章中#xff0c;我们介绍了 Spring MVC 的基本概念和使用方法。今天#xff0c;我们将深入探讨 Spring MVC 中不同的请求方式#xff0c;以及如何在你的应用程序中正确地处理它们。
在 Web 开发中在上一篇文章中我们介绍了 Spring MVC 的基本概念和使用方法。今天我们将深入探讨 Spring MVC 中不同的请求方式以及如何在你的应用程序中正确地处理它们。
在 Web 开发中客户端向服务器发送请求时可以使用不同的请求方式来表达不同的操作意图。常见的请求方式包括 GET、POST、PUT、DELETE 等。每种请求方式都有其特定的语义和用途因此在开发过程中我们需要根据实际需求选择合适的请求方式并在服务器端进行相应的处理。
Spring MVC 提供了强大而灵活的机制来处理各种类型的请求方式。无论你是构建一个简单的表单提交页面还是创建一个 RESTful APISpring MVC 都能够满足你的需求。在本文中我们将详细介绍 Spring MVC 中处理不同请求方式的方法并提供实际示例来帮助你更好地理解和应用这些概念。
如果你是一个初学者或者对 Spring MVC 的请求方式处理机制感到困惑别担心本文将从基础知识开始逐步引导你了解每种请求方式的特点和用途。我们将涵盖 GET 和 POST 请求的处理以及如何通过注解和配置文件来定义请求映射和处理方法。 一、前期准备
1、新建项目结构如下 2、添加依赖 dependencies!-- springmvc 依赖会将spring的核心包一并添加进来 --!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.3.23/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.30/version/dependencydependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion1.4.5/version/dependency/dependencies 3、在 jsp 包下新建一个 index.jsp 页面 % page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleTitle/title
/head
body
h1welcome to springmvc/h1
/body
/html简单的输出一句话即可。
4、配置 web.xml
?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0servletservlet-namedispatcher/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classload-on-startup1/load-on-startup/servletservlet-mappingservlet-namedispatcher/servlet-name!-- 所有的请求都经过核心控制器但是不处理 static 是无感知的 --url-pattern//url-pattern/servlet-mapping/web-app 通过以上配置当有请求到达应用的根路径时DispatcherServlet 将会接收到该请求并根据配置的映射规则将请求分发给相应的 Controller 进行处理。这样就实现了请求的转发和处理。 需要注意的是这段配置只是 Spring MVC 的一部分还需要进一步配置和编写 Controller等组件来完整地搭建一个可用的 Spring MVC 应用。 5、新建 dispatcher-servlet.xml 并配置
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd!-- 扫描 --context:component-scan base-packageedu.nf.ch02/!-- 启用注解处理器 --mvc:annotation-driven/!-- 视图解析器 --bean classorg.springframework.web.servlet.view.InternalResourceViewResolverproperty nameprefix value/WEB-INF/jsp//property namesuffix value.jsp//bean/beans
这是一个典型的 Spring MVC 配置文件它使用 XML 格式来定义 Spring MVC 的相关配置。让我逐行解释一下每个元素的作用 context、mvc命名空间的别名简化了后续元素的引用。context:component-scan指定要扫描的基础包路径用于自动注册 Spring Bean。mvc:annotation-driven启用注解处理器用于处理带有注解的控制器类和方法。bean classorg.springframework.web.servlet.view.InternalResourceViewResolver定义视图解析器用于将逻辑视图名解析为具体的视图对象。 prefix 属性指定 JSP 文件的前缀路径通常是 /WEB-INF/jsp/。suffix 属性指定 JSP 文件的后缀通常是 .jsp。 通过这个配置文件Spring MVC 将能够自动扫描指定包路径下的控制器类并根据注解进行请求映射和处理。同时它还配置了视图解析器使得在控制器方法中返回的逻辑视图名能够正确解析为对应的 JSP 视图。 二、get 请求使用 RequestMapping 注解
1、在 controller 包下新建一个 RequestMapController 控制器 Controller
public class RequestMapController {RequestMapping(value /getUser)public ModelAndView getUser() {return new ModelAndView(index);}}具体来说这段代码的作用如下 Controller 注解标识这个类是一个控制器类它告诉 Spring 这个类需要被扫描和管理。 RequestMapping 注解用于将请求映射到处理方法上。在这里value /getUser 表示当请求路径为 /getUser 时会调用该方法进行处理。你可以根据实际需求修改映射的路径。 getUser() 方法返回一个 ModelAndView 对象用于指定要渲染的视图和模型数据。在这里new ModelAndView(index) 表示要渲染名为 index 的视图。你可以根据实际需求修改要返回的视图名称。 通过以上代码当有请求路径为 /getUser 的请求到达时Spring MVC 将会调用 getUser() 方法进行处理并将返回的视图名称 index 渲染给客户端。
2、RequestMapping 注解的第二种使用方式
Controller
public class RequestMapController {RequestMapping(value /getUser, method RequestMethod.GET)public ModelAndView getUser() {return new ModelAndView(index);}}通过添加 method RequestMethod.GET 参数进一步限定了请求的 HTTP 方法为 GET。
具体来说这段代码的作用如下 RequestMapping 注解用于将请求映射到处理方法上。在这里value /getUser 表示当请求路径为 /getUser 时会调用该方法进行处理。 method RequestMethod.GET 参数指定了请求的 HTTP 方法为 GET。这意味着只有使用 GET 方法发送的请求才会被映射到该方法进行处理其他 HTTP 方法如 POST、PUT、DELETE 等的请求将不会被处理。 通过以上代码当有使用 GET 方法请求路径为 /getUser 的请求到达时Spring MVC 将会调用相应的处理方法进行处理。
需要注意的是RequestMethod.GET 是一个枚举类型它定义了多种 HTTP 方法包括 GET、POST、PUT、DELETE 等。你可以根据实际需求选择适合的方法。
3、运行结果
启动 jetty 服务器 启动服务器后输入控制器的配置的 /getUser 回车访问即可调用 getUser 方法ModelAndView就会将返回的视图名称 index 渲染给客户端。 三、post 请求使用 RequestMapping 注解
1、第一种写法 RequestMapping(value /login)public ModelAndView login() {return new ModelAndView(index);}当客户端发送到 /login 路径的请求时将会调用 login() 方法进行处理并返回一个名为 index 的视图进行渲染。 2、第二种写法 RequestMapping(value /login, method {RequestMethod.POST, RequestMethod.GET})public ModelAndView login() {return new ModelAndView(index);}login() 方法可以处理两种请求方式POST 和 GET。 RequestMethod.POST 表示该方法可以处理 HTTP POST 请求。RequestMethod.GET 表示该方法可以处理 HTTP GET 请求。 通过在 RequestMapping 注解中指定 method 属性并传入一个包含所支持的请求方式的数组我们可以限制处理器方法只处理特定的请求方式。这样做的好处是可以提高应用程序的安全性和可靠性确保只有符合预期的请求方式才能访问相应的处理器方法。
当客户端发送 POST 或 GET 请求到 /login 路径时都会调用 login() 方法进行处理并返回一个名为 index 的视图进行渲染。
3、运行结果 四、使用 GetMapping 注解
从 springmvc 4.0 开始提供了新的子注解来替换 RequestMapping
1、什么是 GetMapping 注解
在传统的 Spring MVC 中我们可以使用 RequestMapping 注解来定义请求映射规则并通过指定请求方法为 GET 来限定处理器方法只能处理 GET 请求。但是这种方式需要在注解中指定请求方法并且代码的可读性较低。
为了简化代码编写和提高可读性Spring MVC 4.3 版本引入了一系列的便捷注解其中包括 GetMapping。它是 RequestMapping(method RequestMethod.GET) 的缩写形式表示该方法只能处理 HTTP GET 请求。
使用 GetMapping 注解时我们可以直接指定请求路径而无需显式地指定请求方法。这样可以使代码更加简洁明了同时也提高了代码的可读性和可维护性。
2、使用注解 /*** return* GetMapping()只用于 get 请求*/GetMapping(/getUser2)public ModelAndView getUser2() {return new ModelAndView(index);} public ModelAndView getUser2() 是一个处理器方法它返回一个 ModelAndView 对象。在这个例子中该方法的作用是获取用户信息并返回一个逻辑视图名为 index 的视图。 GetMapping 是一个组合注解它是 Spring MVC 4.3 版本引入的一个便捷注解等价于 RequestMapping(method RequestMethod.GET)。它表示该方法只能处理 HTTP GET 请求。 通过使用 GetMapping(/getUser2) 注解我们可以将请求路径和请求方式GET直接绑定到 getUser2() 方法上简化了代码的编写并提高了可读性。 这段代码的含义是当客户端发送 GET 请求到 /getUser2 路径时将会调用 getUser2() 方法进行处理并返回一个名为 index 的视图进行渲染。 3、运行结果 五、使用 PostMapping 注解
1、什么是 PostMapping 注解
PostMapping 注解是 Spring MVC 提供的一个注解用于将 HTTP POST 请求映射到处理方法上。它是 RequestMapping 注解的一个特定版本专门用于处理 POST 请求。
具体来说PostMapping 注解的作用如下 PostMapping 注解用于将 POST 请求映射到处理方法上。在这里你可以指定一个或多个请求路径当请求的路径匹配其中之一时会调用该方法进行处理。 与 RequestMapping 注解类似PostMapping 注解也支持通过 value 或 path 参数指定请求路径例如PostMapping(value /login2) 或 PostMapping(path /login2)。 通过 consumes 参数你可以指定接受的请求内容类型Content-Type。例如PostMapping(value /login2, consumes application/json) 表示只接受 Content-Type 为 application/json 的请求。 通过 produces 参数你可以指定响应的内容类型Content-Type。例如PostMapping(value /login2, produces application/json) 表示响应的 Content-Type 将为 application/json。 使用 PostMapping 注解可以更加清晰地表达处理 POST 请求的意图并提高代码的可读性和可维护性。
需要注意的是PostMapping 注解仅用于映射 HTTP POST 请求如果需要处理其他 HTTP 方法的请求可以使用 GetMapping、PutMapping、DeleteMapping 等相应的注解。 2、使用 PostMapping 注解 /*** PostMapping() : 只用于 post 请求* return*/PostMapping(/login2)public ModelAndView login2() {return new ModelAndView(index);} public ModelAndView login2() 是该方法的签名它表示该方法的返回类型为 ModelAndView。ModelAndView 是 Spring MVC 中用于指定要渲染的视图和模型数据的对象。 return new ModelAndView(index) 表示该方法返回一个名为 index 的视图。在这里index 是视图的名称你可以根据实际需求修改要返回的视图名称。 当有使用 POST 方法请求路径为 /login2 的请求到达时Spring MVC 将会调用该方法进行处理并返回名为 index 的视图。
3、运行结果 HTTP 错误 405 Request method GET not supported 意味着你发送了一个不支持的 HTTP 请求方法。 通常情况下这个错误是因为你发送了一个 GET 请求到一个只支持 POST 请求的接口或方法上。根据代码示例来看login2() 方法使用了 PostMapping 注解指定该方法只能处理 POST 请求。 当发送一个 GET 请求到 /login2 路径时由于该方法不支持 GET 请求服务器会返回 HTTP 405 错误。 要解决这个问题你可以采取以下几种方式之一 将请求方式改为 POST根据代码示例将请求方式改为 POST以匹配 login2() 方法的注解。例如在浏览器中使用表单提交或者使用 POST 请求工具发送请求。 修改方法注解如果希望该方法同时支持 GET 和 POST 请求可以将 PostMapping 注解改为 RequestMapping(method {RequestMethod.GET, RequestMethod.POST})这样该方法就可以处理 GET 和 POST 请求了。 需要根据具体情况来选择适合的解决方案。 4、添加页面提交表单
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleTitle/title
/head
body
form methodpost action../login2input typesubmit value登录
/form
/body
/html
写一个提交表单来请求这个 login2。
运行结果 六、Spring MVC 中处理 GET 和 POST 请求的方式 使用注解 RequestMappingRequestMapping 注解是 Spring MVC 中最常用的处理请求的注解。通过指定请求路径和请求方法可以将一个方法映射到相应的 GET 或 POST 请求上。使用注解 GetMapping 和 PostMappingSpring 4.3 版本引入了更方便的注解 GetMapping 和 PostMapping用于直接指定 GET 或 POST 请求。 七、GET 和 POST 请求方式的区别
GET 和 POST 是两种常见的 HTTP 请求方式它们在以下几个方面存在区别 数据传输方式 GET通过 URL 参数将数据附加在请求的 URL 中进行传输。数据以键值对的形式出现在 URL 的查询字符串中例如 localhost:8080/login2?key1value1key2value2。POST通过请求体将数据发送给服务器。数据以键值对的形式出现在请求体中不会暴露在 URL 中。 安全性 GET由于数据附加在 URL 上因此在网络传输过程中可能被拦截、缓存或保存在浏览器历史记录中。敏感数据不应该使用 GET 请求发送。POST数据包含在请求体中相对于 GET 请求更安全因为请求体的内容不容易被拦截或缓存。 缓存 GET可以被浏览器缓存当再次发起相同的 GET 请求时浏览器可以直接从缓存中获取响应结果提高性能。POST默认情况下不会被浏览器缓存每次都会向服务器发送请求。 请求体大小限制 GET由于数据附加在 URL 中URL 的长度有限制不同浏览器和服务器对 URL 长度的限制不同。通常情况下GET 请求的数据大小限制较小。POST由于数据包含在请求体中对数据大小的限制相对较大一般取决于服务器的配置和网络环境。 幂等性 GETGET 请求是幂等的即多次重复请求不会对服务器产生副作用。例如多次请求同一个 URL不会对服务器端数据产生变化。POSTPOST 请求一般不是幂等的多次重复请求可能会对服务器产生副作用。例如重复提交表单可能导致重复创建相同的数据。 根据上述区别选择适当的请求方式取决于具体的业务需求。一般而言GET 请求适用于获取资源、查询数据等无副作用的操作而 POST 请求适用于提交数据、创建资源等可能产生副作用的操作。 八、gitee 案例
案例地址ch02 · qiuqiu/SpringMVC - 码云 - 开源中国 (gitee.com)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88649.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!