SpringMVC【二】SpringMVC 入门程序及执行流程
2021-05-03 01:29
YPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
标签:文件夹 实现 步骤 def 渲染 ota 图解 strong 运行
2、Spring MVC
2.1 简介
Spring MVC 是Spring Framework的一部分,是基于 Java 实现 MVC 的轻量级 Web 框架。
官方文档:https://docs.spring.io/spring/docs/5.2.7.RELEASE/spring-framework-reference/web.html#spring-web
Spring MVC 特点:
- 轻量级,简单易学
- 高效 , 基于请求响应的 MVC 框架
- 与 Spring 兼容性好,无缝结合
- 约定优于配置
- 功能强大:RESTful、数据验证、格式化、本地化、主题等
- 简洁灵活
2.2 中心控制器
Spring 的 web 框架围绕 DispatcherServlet [ 调度Servlet ] 设计。
DispatcherServlet 的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用 Java 5 或者以上版本的用户可以采用基于注解形式进行开发,十分简洁。
Spring MVC 框架像许多其他 MVC 框架一样,以请求为驱动,围绕一个中心 Servlet 分派请求及提供其他功能,DispatcherServlet 是一个实际的 Servlet(它继承自 HttpServlet 基类)。
SpringMVC 的原理
当发起请求时,被前置的控制器拦截到请求;根据请求参数生成代理请求,找到请求对应的实际控制器;控制器处理请求,创建数据模型,访问数据库;将模型响应给中心控制器;控制器使用模型与视图渲染视图结果;将结果返回给中心控制器;再将结果返回给请求者。
2.3 Spring 具体执行流程
-
【DispatcherServlet】 表示前置控制器,是整个 SpringMVC 的控制中心。用户发出请求,DispatcherServlet 接收请求并拦截请求。
假设请求的 url 为 : http://localhost:8080/SpringMVC/hello,这个 url 可被拆成三部分:
http://localhost:8080 服务器域名;SpringMVC 部署在服务器上的web站点;hello 表示控制器。
所以,url 表示为:请求位于服务器 localhost:8080 上的 SpringMVC 站点的 hello 控制器。
-
【HandlerMapping】 处理器映射器,DispatcherServlet 调用它,它会根据请求 url 查找 Handler。
-
HandlerExecution 具体的 Handler,主要作用是根据 url 查找控制器,比如上面的 url 被查找的控制器为 hello。
-
HandlerExecution 将解析后的信息传递给 DispatcherServlet,如解析控制器映射等。
-
【HandlerAdapter】 处理器适配器,其按照特定的规则去执行 Handler。
-
具体的 Controller 来执行 Handler。
-
Controller 将具体的执行信息返回给 HandlerAdapter,如 ModelAndView。
-
HandlerAdapter 将视图逻辑名或模型传递给 DispatcherServlet。
-
DispatcherServlet 调用视图解析器(ViewResolver)来解析 HandlerAdapter 传递的逻辑视图名。
-
【ViewResolver】 将解析过的逻辑视图名传给DispatcherServlet。
-
DispatcherServlet 根据视图解析器解析的视图结果,调用具体的视图。
-
最终视图呈现给用户。
对应编写程序时的实现步骤为:
- 新建 web 项目,导入相关 jar 包
- 编写 web.xml , 注册 DispatcherServlet
- 编写 SpringMVC 配置文件
- 创建对应的控制类 , Controller
- 完善前端视图和 controller 之间的对应
- 测试运行调试
3、Spring MVC 入门程序
3.1 使用配置
-
新建一个模块,添加 web 的支持
-
确定项目中有 spring MVC 的依赖,确定发布的项目中也有所有的依赖
在 Project Structure 中查看 WEB-INF 目录下是否有 lib 文件夹,如果没有则新建一个,并把所有依赖加入。
-
配置 web.xml,注册 DispatcherServlet
springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc-servlet.xml 1 springmvc / -
编写 SpringMVC 的配置文件 springmvc-servlet.xml (在 src—main—resources 文件夹下)
命名:【servlet-name】-servlet.xml
-
添加【处理映射器】
-
添加【处理器适配器】
-
添加【视图解析器】
视图解析器:DispatcherServlet 给它 ModelAndView 1、获取了 ModelAndView 中的数据 2、解析 ModelAndView 的视图名字 3、拼接视图名字,找到对应的视图 /WEB-INF/jsp/hello.jsp 4、将数据渲染到视图上
-
编写要操作业务的 Controller 类 ,要么实现 Controller 接口,要么增加注解;需要返回一个ModelAndView,封装数据,视图跳转
public class HelloController implements Controller { public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { // ModelAndView 模型和视图 ModelAndView mv = new ModelAndView(); // 调用业务层 // 封装对象,放在 ModelAndView 中 String result = "HelloSpringMVC"; mv.addObject("msg", result); // 封装要跳转的视图,放在ModelAndView中,视图跳转 mv.setViewName("test"); return mv; } }
-
将自己的类交给 SpringIOC 容器,注册 bean
-
编写要跳转的 test.jsp 页面(放在 WEB-INF 下新建的 jsp 文件夹中),显示 ModelandView 存放的数据,以及我们的正常页面,即完善前端视图和 controller 之间的对应。
注意:在视图解析器中我们把所有的视图都存放在/WEB-INF/目录下,这样可以保证视图安全,因为这个目录下的文件,客户端不能直接访问。
Title ${msg} -
配置 Tomcat,部署项目,启动测试,在浏览器地址栏输入请求路径 localhost:8080/hello
可能遇到的问题:访问出现 404。排查步骤:
- 查看控制台输出,看一下是不是缺少了什么 jar 包。
- 如果 jar 包存在,显示无法输出,就在 IDEA 的项目发布中,添加 lib 依赖!
- 重启 Tomcat 即可解决!
注意:实际开发中并不会这样写程序。
3.2 使用注解
-
新建模块、添加依赖等,和上面一样
-
配置 web.xml,和使用配置的 web.xml 相同
- web.xml 文件要最新版;
- 注册 DispatcherServlet;
- 关联 SpringMVC 的配置文件;
- 启动级别为 1;
- 映射路径为 / 【不要用 /*,会 404】
-
编写 Spring MVC 配置文件,注意要导入头文件约束
为了支持基于注解的 IOC,设置了自动扫描包的功能
- 让 IOC 的注解生效(开启自动扫描包);
- 静态资源过滤,让Spring MVC不处理静态资源 :HTML、 . JS、 . CSS 、图片和视频等;
- MVC的注解驱动;
- 配置视图解析器
-
创建控制类 Controller,添加注解
- @Controller 是为了让 Spring IOC 容器初始化时自动扫描到;
- @RequestMapping 是为了映射请求路径,类与方法上都可以有映射;
- 方法中声明 Model 类型的参数是为了把 Action 中的数据带到视图中;
- 方法返回的结果是要跳转的页面,因此写上视图的名称 hello,加上配置文件中的前后缀变成 WEB-INF/jsp/hello.jsp
@Controller @RequestMapping("/hello") public class HelloController { // 访问地址:localhost:8080/hello/h1 // 如果没有上面的 hello,直接是 localhost:8080/h1 @RequestMapping("/h1") public String hello(Model model){ // 封装数据,向模型中添加属性msg与值,可以在JSP页面中取出并渲染 model.addAttribute("msg", "hello,SpringMVCAnnotation"); return "hello"; //会被视图解析器处理 } }
-
创建视图层,和之前一样
- WEB-INF/ jsp 目录下创建 hello.jsp,视图可以直接取出并展示从 Controller 带回的信息;
- 可以通过 EL 表达式取出 Model 中存放的值或者对象。
-
配置 Tomcat 运行,在浏览器地址栏输入请求路径 localhost:8080/hello/h1
小结:
使用springMVC必须配置的三大件:处理器映射器、处理器适配器、视图解析器。
通常,我们只需要手动配置视图解析器,而处理器映射器和处理器适配器只需要开启注解驱动即可,省去大段的 xml 配置。
SpringMVC【二】SpringMVC 入门程序及执行流程
标签:文件夹 实现 步骤 def 渲染 ota 图解 strong 运行
原文地址:https://www.cnblogs.com/Songzw/p/13200447.html
上一篇:python文件读写、异常处理
下一篇:springcloud复习3
文章标题:SpringMVC【二】SpringMVC 入门程序及执行流程
文章链接:http://soscw.com/essay/81590.html