1:MVC是什么?
- MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。
- Model(模型):数据模型,提高要展示的数据 现在一般是分为Value Object(数据Dao)和 服务层(行为Service)
- View(视图):一般负责用户图形界面的展示
- Controller(控制器):用来接受用户的请求 然后委托给Model进行处理 然后处理完毕交给View来展示 所以Controller一般是做为了个调度员
2:spring MVC是什么?
- SpringMVC是基于java实现的MVC设计模型的请求驱动类型的轻量级web框架
- SpringMVC 也是Spring家族的一员
- MVC主要作用是降低视图与业务逻辑的耦合
3:为什么要使用spring MVC?
- MVC对servlet进行了封装
- spring mvc的本质也就是将业务逻辑处理和显示渲染分离开来,通过数据模块进行关联
- 使用人数多,热门
- 简单 , 便捷 , 易学 , 天生和Spring无缝集成
- 支持支持Restful风格 .异常处理 , 本地化 , 国际化 , 数据验证 , 类型转换 , 拦截器 等等
4:spring MVC 的生命周期(流程图):
流程图:
1:客户端发出请求到http里面只要符合web.xml里面的配置就转换到DispatcherServlet(前端控制器)来处理
2:前端控制器请求HandlerMapping(处理器映射器)寻找 Handler
3:处理器向DispatcherServlet(前端控制器)返回Handler(处理器)
4:DispatcherServlet(前端处理器)调用处理器适配器去执行Handler
5:Handler让具体的Controller执行。
6:Handler执行完成给适配器返回 ModelAndView(存储处理完后的结果数据,以及显示该数据的视图包括:Model和view)
7:ModelAndView将解析后的信息传递给DispatcherServlet(前端控制器),如解析控制器映射等
8:DispatcherServlet调用视图解析器(ViewResolver)来解析ModelAndView传递的逻辑视图名。
9:视图解析器将解析的逻辑视图名传给DispatcherServlet。
10:DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图
11:最终视图呈现给用户
第一个程序:
准备工作:先准备导入maven依赖 :
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!--日志--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.21</version> </dependency> <!--J2EE--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!--mysql驱动包--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.35</version> </dependency> <!--springframework--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>com.github.stefanbirkner</groupId> <artifactId>system-rules</artifactId> <version>1.16.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.9</version> </dependency> <!--其他需要的包--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency>
然后创建一个web项目
把tomcat给配置好 可以参考:
tomcat从http://tomcat.apache.org/下载直接解压即可
然后到idea里面配置tomcat环境可参考:https://blog.csdn.net/Grsu_M/article/details/109175915来配置
第一步先配置web.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--通过初始化参数指定SpringMVC配置文件的位置,进行关联--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <!-- 启动顺序,数字越小,启动越早 --> <load-on-startup>1</load-on-startup> </servlet> <!--所有请求都会被springmvc拦截 --> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
二:在资源目录下创建springmvc-servlet.xml(名字随意):
<?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"> <!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 这里的包名 写什么就代表要扫描哪个包里面的注解--> <context:component-scan base-package="com.kuang.mvc"/> <!-- 让Spring MVC不处理静态资源 --> <mvc:default-servlet-handler /> <mvc:annotation-driven /> <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <!-- 前缀 --> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- 后缀 --> <property name="suffix" value=".jsp" /> </bean> </beans>
第三步:创建包里面的类:
//@Controller表示在tomcat启动的时候,把这个类作为一个控制器加载到Spring的Bean工厂
@Controller public class HelloServlet {
//@RequestMapping除了可以使用请求URL映射外 还可以使用请求方法 请求参数和请求头映射请求
@RequestMapping("/hello") public String sayHello(Model model){ //向模型中添加属性msg与值,可以在JSP页面中取出并渲染 model.addAttribute("msg","hello,SpringMVC");//表示向前台传送数据 用的是可以键值对的方式
//web-inf/jsp/hello.jsp return "hello"; }
//下面这种是Restful风格 @RequestMapping("/test/{a}/{b}") public String test1(@PathVariable int a, @PathVariable int b, Model model){ int sum=a+b; //添加数据 model.addAttribute("msg","这数据为:"+sum); return "test"; } }
第四步:在web下面创建一个jsp包包里创建一个hello.jsp文件
因为我们在视图解析器里面加入了前缀和后缀 如果不想这样可以自己改:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body>
<!------ controller层控制跳转到showResume后,便可以直接通过el表达式 ${}获取到该值如下----->
${msg} </body> </html>
第五步 开启tomcat:进入http://localhost:8080/r/hello
或用Restful风格:http://localhost:8080/r/1/2
完成!!!
小白学习MVC的第二天 写的一遍小笔记 以后会努力改进的!!!!
点个赞吧!!!!!!!