一、mvc简介
MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分。
M:Model,模型层,就是指我们工程中的JavaBean,是用来处理数据的
JavaBean分为两类,
- 一类为实体类Bean:用来存储数据,例如我们的Student、User等实体类。
- 一类为业务处理Bean:就是我们用来处理业务的方法类,即dao对象。
V:View,视图层,指的是工程中的html或是jsp页面,作用是用来和用户进行交互,展示数据。
C:Controller,控制层,就是我们工程中的servlet,用来处理请求和相应请求。
MVC的工作流程:用户通过视图层页面发送请求到服务器,在服务器中Controller接收请求,调用相对应的Model层进行业务处理,处理完成后,将结果返回给Controller,Controller再将处理完成的数据响应到对应的视图层,视图层通过渲染将响应结果呈现给用户。
二、什么是SpringMVC,为什么使用?
SpringMVC它是Spring框架的一个分支,SpringMVC框架主要完成的功能是:接收浏览器的请求响应,对数据进行处理,然后返回页面进行显示,也可以把它理解为和Servlet干的工作是一样的。
使用SpringMVC是为了让controller层更加简便快捷的处理请求,并且提高代码的复用性。
三、使用步骤
3.1 创建Maven-Web工程
创建工程的参考:
Maven仓库的安装于创建工程_好像认识你好久了的博客-优快云博客1、什么是MavenMaven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。可以理解为Maven就是一个项目管理工具。2、为什么使用Maven使用maven自动下载jar包,我们只需要指定jar的坐标即可。在后期实现项目时,项目较大的话,用到的jar包就会很多很多,这使得我们的程序占用空间就会很大,使用Maven,就是我们在编写项目时,不需要再向工程中手动添加jar包,可以通过添加依赖来导入使用jar包,一定程度上减少工程的占用空间。3https://blog.youkuaiyun.com/weixin_54204139/article/details/125057902?spm=1001.2014.3001.5502 工程创建完成后,一些版本较为低的idea,它的web.xml文件版本太低,建议使用较高版本的xml。下面是4.0版本的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">
</web-app>
3.2 引入jar包依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.15.RELEASE</version>
</dependency>
3.3 创建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"
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">
<!--包扫描-->
<context:component-scan base-package="com.xrx.controller"/>
</beans>
3.4 将DispatcherServlet和SpringMVC配置文件注册到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">
<!--默认DispactherServlet加载的springmvc配置文件:WEB-INF/[servlet-name]-servlet.xml
能不能你指定加载的配置文件呢:可以。
-->
<servlet>
<servlet-name>DispactherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!--classpath:表示编译后的路径 :后就是创建的SpringMVC配置文件-->
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DispactherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
3.5 创建一个Controller类来测试
//这个类为controller的注解标志
@Controller
public class Controll {
//设置这个方法的请求路径
@RequestMapping(value="hello")//当只有value这一个属性的时候可以省略,多个属性时不可省略
public String hello(int id){
System.out.println("id:"+id);
return "index.jsp";
}
}
运行流程总结:
* 1. 客户端发生请求http://localhost:8080/qy151_springmvc01/abc
* 2. 来到tomcat服务器。
* 3. springmvc的前端控制器DipatcherServlet接受所有的请求。
* 4. 查看你的请求地址和哪个@RequestMaping匹配。
* 5. 执行对应的方法。方法会返回一个字符串。springmvc把该字符串解析为要转发的网页。
* 6. 把该字符串经过视图解析器拼接。
* 7. 拿到拼接的地址,找到对应的网页。
* 8. 渲染该网页给客户
四、如何在controller接受请求的参数
4.1 少量参数
接收参数就是在对应方法中设置你要传入数量的参数,特别注意的就是传参时,前端参数的名字必须要和你后端方法中参数的名字相同,Springmvc会在你请求时将参数按照参数名自动绑定,所以一定要保证参数名一致。
4.2 大量参数
在接收大量参数时,就把多个参数封装成一个实体类对象进行传递。为了方便在前端将要传递的值放在一个数组中,同样数组中的每一个参数名,要和实体类中的每个属性名要一致,否则会在传值时出问题。Springmvc同样会将数据根据名字进行绑定。
4.3 接收日期类型的参数
我们在传值时,如果有日期类型的参数,在传递时,由于前端传过来时时字符串格式,后端时日期类型,这是就会报错。
解决办法:在时间类型的属性上添加一个注解:@DateTimeFormat(pattern = "yyyy-MM-dd")
//yyyy年 MM:月 dd日 24小时制
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date birthday;//出生日期
并且要在Springmvc配置文件中开启注解驱动
<!--开启注解驱动-->
<mvc:annotation-driven/>
五、处理静态资源
我们在编写网页时,一定有着网页的图片、css、js等一些静态资源,但是,在我们在运行时会出现显示不出来的问题,原因是:springmvc的前端控制器DispatcherSerlvet也把静态资源拦截器 ,导致加载不出来,不显示效果。
解决办法:放行静态资源就好了
在配置文件中放行静态资源:
<!--放行静态资源:哪些资源为静态资源。css img js html-->
<mvc:default-servlet-handler/>