Spring-MVC快速入门实例
时间:2021-08-07 00:05:20
收藏:0
阅读:66
Spring-MVC快速入门实例
实例代码:D:\IdeaWorkspaces\Spring-MVC
web请求流程图:

执行流程
1、用户发送请求到前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用处理映射器HandlerMapping
3、处理映射器根据请求url找到具体的处理器,生成处理器执行链HandlerExecutionChain(包含处理器对象和处理器拦截器)返回给DispatcherServlet
4、DispatcherServlet根据处理器Handler获取对应的适配器
5、HandlerAdapter调用处理器Handler
6、Handler(Controller)执行完成后返回ModelAndView
7、HandlerAdapter返回ModelAndView
8、DispatcherServlet统一将返回的ModelAndView派送到ViewResolve(视图解析器)解析
9,视图解析器解析之后返回View
10、对View进行渲染
11、响应用户
调用流程

DispatcherServlet中使用的Bean
DispatcherServlet默认使用WebApplicationContext作为上下文,因此我们来看一下该上下文中有哪些特殊的Bean:
1、Controller:处理器/页面控制器,做的是MVC中的C的事情,但控制逻辑转移到前端控制器了,用于对请求进行处理;
2、HandlerMapping:请求到处理器的映射,如果映射成功返回一个HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象;如BeanNameUrlHandlerMapping将URL与Bean名字映射,映射成功的Bean就是此处的处理器;
3、HandlerAdapter:HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;如SimpleControllerHandlerAdapter将对实现了Controller接口的Bean进行适配,并且掉处理器的handleRequest方法进行功能处理;
4、ViewResolver:ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;如InternalResourceViewResolver将逻辑视图名映射为jsp视图;
5、LocalResover:本地化解析,因为Spring支持国际化,因此LocalResover解析客户端的Locale信息从而方便进行国际化;
6、ThemeResovler:主题解析,通过它来实现一个页面多套风格,即常见的类似于软件皮肤效果;
7、MultipartResolver:文件上传解析,用于支持文件上传;
8、HandlerExceptionResolver:处理器异常解析,可以将异常映射到相应的统一错误界面,从而显示用户友好的界面(而不是给用户看到具体的错误信息);
9、RequestToViewNameTranslator:当处理器没有返回逻辑视图名等相关信息时,自动将请求URL映射为逻辑视图名;
10、FlashMapManager:用于管理FlashMap的策略接口,FlashMap用于存储一个请求的输出,当进入另一个请求时作为该请求的输入,通常用于重定向场景,后边会细述。


2、实例开发步骤
本项目详细执行流程:
1、启动tomcat服务器
2、服务器访问默认项目目录http://localhost:8088/Spring_MVC_war_exploded/
到web.xml找到welcome file 如果没有 就默认访问index.jsp
3、点击连接hello
4、地址url变为Request URL: http://localhost:8088/Spring_MVC_war_exploded/hello
5、地址传递到web.xml的dispatcherServlet前置控制器( MVC C层核心控制器)该控制器拦截了所有访问本项目的url地址。
6、待补充 没搞懂!!!!
1)准备maven -webapp项目
2)pom.xml导入依赖spring-webmvc
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.10.RELEASE</version> </dependency>
3)创建controller包
创建一个HelloController.java
@Controller 注解方式在IOC容器创建bean
@RequestMapping("/hello")注解映射请求路径
RequestMapping注解使用参考文章https://blog.csdn.net/zalan01408980/article/details/82904126
package com.zb.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloController { @RequestMapping("/hello") public String haha(){ System.out.println("Controller"); //指定到WEB-INF/jsp下的success.jsp文件 return "success"; } }
4)创建resource包创建一个spring-mvc.xml配置文件
配置组件扫描 指定要扫描的包 包里的所有已经注解的类和方法都会被在IOC容器内创建bean对象
视图解析器
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://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-package="com.zb.controller"/> <!-- 视图解析器 resourceView 在Controller注解的类的方法中收到返回值 再将返回值与前缀prefix的值WEB-INF/jsp/拼接 与suffix的值.jsp拼接 --> <bean id="resourceView" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> <mvc:annotation-driven/> </beans>
5)配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <servlet> <!--dispatcherServlet前置控制器 MVC C层核心控制器--> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <!-- dipatcherServlet加载springIOC容器--> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <!--1指在web容器加载时 就加载dispatcherServlet--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <!--/ 表示dispatcherServlet拦截所有用户请求url 除了后缀为.jsp的文件url--> <!-- /* 表示拦截所有文件url--> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
6)创建View视图层(即jsp)
创建 WEB-INF/jsp/success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>success</title> </head> <body> <h1>hello world!!!!haha</h1> </body> </html>
index.jsp
<html> <body> <a href="hello"> <h2>Hello World!</h2></a> </body> </html>
7)部署tomcat服务器 测试
原文:https://www.cnblogs.com/codefarmer-zb/p/15110176.html
评论(0)