三层架构与MVC设计模式介绍
一张图介绍
之前在写软件设计的三层架构的时候,有一张图直接拿过来
springMVC的一些简单介绍
入门案例
一、入门案例之需求分析
二、搭建开发环境
1.利用骨架创建一个maven项目
因为这个项目要部署到服务器,所以采用如下骨架创建
二、在pom.xml导入相关依赖坐标
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.pxx</groupId>
<artifactId>springmvc_1.0</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<name>springmvc_1.0 Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!--
给一个下面配置的版本,后面都不用配置了
-->
<spring.version>5.0.2.RELEASE</spring.version>
</properties>
<dependencies>
<!--springIOC的核心框架-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>springmvc_1.0</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
想要玩SpringMVC的框架,就必须去配置前端的控制解析器,也就是在web.xml中进行配置
上面没有配完,就只是一个最基本的配置
然后下面我们在resources里面配置一个springmvc.xml文件
下面我们来配置一下服务器
下面我们进入编码状态
先创建一个index.jsp文件
那么根据我们的业务要求,就会去请求到一个类,这个类,在springMVC中相当于就是控制器的角色Controller
这个类我们就可以通过IOC把类交给Spring来进行管理。那么这个时候Spring的配置文件就起作用了。
我们必须去配置一下springmvc.xml。也就是加入涉及mvc的约束,还有context的约束
上面把类交给了Spring管理,也就是在内存里面有对象了,那么如何才能找到这个类里面的方法呢
就是在方法上面做一个请求映射
现在我们必须去加载springmvc.xml的配置文件,不加载springmvc.xml的配置文件,怎么加载对象,怎么配置注解和扫描包
这样就配好,服务器一启动,就会创建一个DispatcherServlet对象,这个对象一创建,就会给我们去加载springmvc.xml的配置文件,这个配置一加载,就会扫描包,然后产生对象。
这里返回一个success,表明就是要去访问success.jsp页面
那么下面我们去创建这个页面
也就是说,上面方法执行完,就要去找这个成功的页面,可是怎么找呢,我们就要在springmvc.xml里面配置一个视图的解析器
开启对注解的支持
下面去index.jsp页面加上请求路径
部署一下项目,配置一个访问路径
入门案例流程总结
入门案例使用组件介绍
RequestMapping注解的使用说明
重新部署一下项目
下面说一下RequestMapping注解的属性
请求参数绑定入门
下面新建一个jsp页面来测试参数绑定
那么在控制器层面,我们在创建一个获取相关参数的控制器
修改param.jsp页面代码
重新部署一下项目启动
请求参数绑定实体类型
我们先来写一个传送数据的表单,还是在param.jsp的页面来做
再去看一下我们控制层
然后我们去创建一个相关的account对象,它内部还报了一个引用的user对象
然后再来创建user对象
再回过头去编写一下我们的jsp文件
重新部署一下服务器
配置解决中文乱码的过滤器
现在我们直接去配置一个过滤器就行
请求参数绑定集合类型
先去修改一下account类
然后我们去修改一下param.jsp
自定义类型转换器演示异常
一般来说,我们从前端传过来的参数,都是字符串类型的,那为什么我们上面进行封装的时候,那么匹配自如呢,是因为springMVC已经在底层给我们进行了参数的数据类型转换。
但是,有一点必须知道,如果有时候我们输入的数据格式不对,springMVC就识别不来,换句话说,Spring 也就给我们转换不了。比如日期格式2012/12/12,这种日期springMVC可能是可以帮我们识别的,但是如果我们写的是这种格式2012-12-23,可能就会出现异常。
下面展示一下这种异常
先在前端写一个传输数据的表单
然后去控制器类里面写这个方法
服务器重新部署一下
自定义类型转换器代码编写
接口上定义泛型的意思就是,是在实现该接口的时候,指定数据类型。所以上面可以这样重写
转换器是有了,但是还没有注册到springMVC容器里面,这个需要在springmvc.xml里面配置
注意还要去修改User表中的一些参数信息,如果不匹配,是封装不上数据的
感觉Spring对这个日期的解析支持不太够啊
获取Servlet原生的API
常用注解
写一个注解相关的控制器
运行结果:
下面说一下restfule代码设计风格
但是restfule这种编程风格,可能会出现的问题就是,同一个访问,但是访问方式都是一样的情况。
那么上面这两种方式执行哪一个?restfule就说了,可以通过在路径上面传入一个占位符解决
先来说一下这个注解放到参数上
在来说放到参数上面