什么是MVC架构
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式,它们各自处理自己的任务:
MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
什么是springMVC
springmvc是spring框架的一种分支。SpringMVC 是类似于 Struts2 的一个 MVC 框架,在实际开发中,==接收浏览器的请求响应,对数据进行处理,然后返回页面进行显示==,但是上手难度却比 Struts2 简单多了。而且由于 Struts2 所暴露出来的安全问题,SpringMVC 已经成为了大多数企业优先选择的框架。
快速入门springMVC
(1)创建一个web工程
2,引入springmvc的依赖
<!--maven可以把该依赖相关的依赖都引入。-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
3,创建控制层(controller)
/**
* @program: spring01
* @description:
* @author: 不会代码的坤仔
* @create: 2021-12-04 09:18
**/
@Controller//表示为控制层
public class Hellocontroller {
@RequestMapping("/hello01")//根据请求路径相应的方法
public String hello01(){
System.out.println("111111111111111");
return "hello01";
}
@RequestMapping("/a")
public String a(){
//System.out.println("aaaaaaaaaaaaaaaaaa");
return "index";
}
}
4,配置springMVC的配置文件
<?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.aaa.qy145.ninth.rqk.comtroller"/>
<!--时间类型放行-->
<mvc:annotation-driven/>
<!--静态资源放行-->
<mvc:default-servlet-handler/>
<!--视图解析解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
5,引入前端控制器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>Spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
加载springmvc的配置文件
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:Spring.xml</param-value>
</init-param>
</servlet>
servlet映射路径
/:表示所有的控制层的路径 以及静态资源
/*:表示全部 包含jsp网页
<servlet-mapping>
<servlet-name>Spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
7,springmvc的流程
1、 用户发送请求至前端控制器DispatcherServlet。
2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet调用HandlerAdapter处理器适配器。
5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、 Controller执行完成返回ModelAndView。
7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、 ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、 DispatcherServlet响应用户。
* 1. 客户端发生请求http://localhost:8080/145springmvc01/hello01
* 2. 来的tomcat服务器。
* 3. springmvc的前端控制器DipatcherServlet接受所有的请求。
* 4. 查看你的请求地址和哪个@RequestMaping匹配。
* 5. 执行对应的方法。方法会返回一个字符串。springmvc把该字符串解析为要转发的网页。
* 6. 把该字符串经过视图解析器拼接。
* 7. 拿到拼接的地址,找到对应的网页
springmvc如何接受请求参数
注意:
如果有参数列表参数名必须保持一致
接收参数个数少
@RequestParam:
@RequestMapping("/a")
public String hello(
//@RequestParam: value设置接受的参数名称。 相当于别名
//required:该参数不是必须 defaultValue:默认值
@RequestParam(value = "ages",required = false,defaultValue = "33") int age,
@RequestParam(value = "username",required = false, defaultValue = "张三")String name){
//System.out.println("姓名:"+age+"年龄:"+name);
return "index2";
}
接收多个参数
需要创建一个接收对象的类,用来存放接收来的参数
/**
* @program: spring01
* @description:
* @author: 不会代码的坤仔
* @create: 2021-12-04 14:59
**/
@Data
public class Users {
private String username;
private Integer age;
private String sex;
private String add;
//接收时间需要添加的注解
@DateTimeFormat(pattern = "yyyy-MM-dd")//获取时间数据 (yyyy-MM-dd )类型 年-月-日
private Date birth;
}
contoller层
@RequestMapping("/b")
public String forms(Users users){
System.out.println(users);
return "index2";
}
接收时间类型的参数
在接收的参数的上方加上 @DateTimeFormat 注解 并设置想要的时间格式
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birth;
同时配置文件 中放行时间类
<!--特殊类放行 (时间)-->
<mvc:annotation-driven/>
静态资源
什么是静态资源
静态资源是浏览器能够直接打开的,一个js文件,在打开方式中选择IE浏览器打开,浏览器可以直接打开没有出现问题,那么就说明它是一个静态资源。html文件、css文件、js文件等它们都是静态资源。
放行静态资源
<!--静态资源放行-->
<mvc:default-servlet-handler/>