初见SpringMVC之网络请求
来源:互联网 发布:手机淘宝买东西视频 编辑:程序博客网 时间:2024/06/06 03:01
初见SpringMVC之网络请求
SpringMVC是Spring框架中的一部分,是一款轻量级的Web框架。本系列文章是学习SpringMVC框架的入门级介绍,主要从六个方面介绍SpringMVC的基本功能,也是最核心的功能。
1.SpringMVC在使用上如何代替Servlet完成对Http请求的处理。
2.SpringMVC框架基本架构,受理网络请求的一般流程。
3.SpringMVC对数据绑定的支持。
4.SpringMVC对json数据交互的支持
5.SpringMVC拦截器的用法
6 SpringMVC对文件上传和文件下载的支持
一丶基于注解的方式SpringMVC完成对网络请求的处理
在本节中介绍SpringMVC基于注解的方式完成网络请求处理的功能,提供一个简单的案例,来说明使用SpringMVC简单使用。在介绍的过程中,不详细介绍配置文件和类的作用,SpringMVC的核心类和配置文件的作用在下节中详细介绍。
1.向项目中添加所需要jar包
。
图1.1 SpringMVC依赖jar包
2.在web.xml文件中配置DispatcherServerlet,DispatcherServlet是SpringMVC核心调度器,也是实现功能的关键。
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup></servlet><servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern></servlet-mapping>
3.在src目录下,创建名为springmvc-config.xml的SpingMVC的配置文件。
<?xmlversion="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> <!-- 定义组件扫描器,指定需要扫描的包 --> <context:component-scan base-package="com.bupt.controller" /> <!-- 定义视图解析器 --> <bean id="viewResolver" class= "org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--设置前缀 --> <propertyname="prefix" value="/WEB-INF/" /> <!--设置后缀 --> <propertyname="suffix" value=".jsp" /> </bean></beans>
4.完成上述步骤后,基本完成了SpringMVC环境的搭建工作,现在可以配置SpringMVC中的Controll类来处理网络请求了。创建一个Controll类,命名为HelloSpringMVC。在/WEB-INF下创建一个名为hello.jsp的文件,如下所示:
Controll类
/** * Controller注解代表这个类是SpringMVC中控制器类 * 用来处理网络请求 * @authorSmartTu */@Controllerpublic class HelloSpringMVC { /** *RequestMapping注解,描述了方法和url之间的映射关系 * 此时,当请求路径以/hello结尾时,是该方法受理请求。 * @return */ @RequestMapping(value="/hello") publicString hello(){ /** * 跳转到/WEB-INF/success.jsp页面 * 前缀/WEB-INF/,后缀.jsp都在springmvc-config.xml中的视图解析器里面配置了 * 所以此时可以省略前缀和后缀。 */ return "hello"; }}
hello.jsp文件
<%@page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPEhtml PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type" content="text/html;charset=UTF-8"><title>Inserttitle here</title></head><body> hello springMVC</body></html>
5.在浏览器中访问http://localhost:8080/HelloSpringMV/hello,观察访问过结果(HellpSpringMV是工程名字)
图1.2 SpringMVC测试结果
SpringMVC的基本架构,受理网络请求的一般流程
SpringMVC是基于Servlet的Web框架,在上节中利用SpringMVC受理网络请求时,一个关键步骤就是在web.xml文件中配置DispatcherServlet。SpringMVC通过DispatcherServlet拦截了所有的网络请求,然后由DispatcherServlet将相应的网络请求分发到和具体的类和方法中处理,最后DispacherServlet拿到方法的返回参数,进行视图渲染等工作。
上述过程是SpringMVC受理网络请求的一般流程,如果要完成上述请求,一个DispatcherServlet明显不够,需要解决一下问题:
(1)DispathcerServlet拦截了所有网络请求后,通过Url找到对应Handler,这个工作由谁完成?Handler(处理器)代表受理具体网络请求的类和方法,上节HelloSpringMVC中的hello方法就是Handler。
(2)得到Handler之后,Handler方法的调用是否DispatcherServlet负责吗?
(3)Handler方法调用后的返回参数,是不是传给DispatcherServlet?DispatcherServlet如何处理返回参数?
下面通过一个流程图来回答上述问题:
图 2.1 SpringMVC处理Http请求一般流程
执行的顺序和标号的顺序保持一致。
(1) DispatcherServlet拦截用户发送给服务器的http请求
(2)DispatcherServlet拦截Http请求之后,将Http请求转发给HandlerMapping,(3)HandlerMapping通过url找到对应的Handler,并且将Handler传给DispatcherServlet。(回答问题1)
(4)DispatcherServlet收到Handler之后,自己并不调用Handler,将Handler转发给合适的HandlerAdapter。(回答问题2)
(5)HandlerAdapter调用并且执行Handler
(6)Handler处理器执行完毕之后,将返回参数,传递给HandlerAdapter,比如上节中的”succss”参数
(7)HandlerAdapter并不处理Handler返回参数,将返回参数交给DispatcherServlet。
(8)DispathcerServlet也不直接处理Handler返回的参数,将交给ViewResolver处理
(9)ViewResovler对Handler返回的参数进行处理,然后向DispatcherServlet中返回具体的View(视图)
(10)Dispacher对View进行渲染(填充数据),将渲染结果转发给Result。
(11)Result将服务器处理的结果返回给前端。
上述11个过程是SpringMVC处理HTTP请求的一般过程,在使用SpringMVC框架时,我们只需要配置DispatcherServerlet以及编写Handler就行,SpringMVC会帮我们完成其余的所有功能。
- 初见SpringMVC之网络请求
- 初见SpringMVC之数据绑定
- 初见SpringMVC之json交互
- 面试之网络编程初见
- 【SSM】SpringMVC初见
- 初见Python网络爬虫
- 初见网络爬虫
- 第一章 初见网络爬虫
- Swift之网络请求
- 请求网络之HttpUrlConnection
- 网络请求之HttpClient
- xUtils之网络请求
- 网络请求之RestFul
- 网络请求之-NSURLConnection
- 网络请求之-AFNetworking
- 网络请求之-NSURLSeesion
- Groovy 我之初见
- Petshop 4.0 之初见
- 随便乱扯:软件开发中的布鲁克斯法则
- mac 安装 MySQL报错 -bash: mysql: command not found
- 【事件总线】解析EventBus
- 剑指offer47道经典 java版
- find the longest of the shortest HDU
- 初见SpringMVC之网络请求
- informix使用得一些小常识
- volatile
- 4.1分支管理
- RxJava操作符学习笔记
- 生活小记42
- python的numba加速
- C++与pascal的区别
- 欢迎使用CSDN-markdown编辑器