MVC模式

MVC模式是指Model-View-Controller模式,是开发Web应用程序时常用的一种代码分层方式。

通过MVC设计模式可打造出一个松耦合+高重用性+高可适用性的完美架构,这也是架构设计的目标之一。

MVC优点:

1.MVC三个模块相互独立,松耦合架构。

2.多视图共享一个模型,大大提高代码的可重用性。

3.控制器提高了应用程序的灵活性和可配置性。

4.有利于软件工程化管理。

缺点:

1.增加了系统结构和实现的复杂性,不适合小规模的项目。

2.层与模型之间需要控制器做中间的连接控制,所以效率低。

搭建Spring MVC环境

1.引入jar包

Spring MVC jpa框架搭建 springmvc框架优点_MVC

2.画页面

Spring MVC jpa框架搭建 springmvc框架优点_intellij-idea_02

Spring MVC jpa框架搭建 springmvc框架优点_MVC_03

 3.编写控制器类

Spring MVC jpa框架搭建 springmvc框架优点_Spring MVC jpa框架搭建_04

 4.创建配置文件,定义控制器

Spring MVC jpa框架搭建 springmvc框架优点_MVC_05

5.Spring MVC架构底层是基于Servlet实现的,和所有Servlet一样,需要在web.xml文件中配置定义之后才会生效。

Spring MVC jpa框架搭建 springmvc框架优点_MVC_06

 6.运行

Spring MVC jpa框架搭建 springmvc框架优点_mysql_07

 

Spring MVC jpa框架搭建 springmvc框架优点_java_08

使用注解开发SpringMVC框架

第一步,在配置文件中导入命名空间并写上注解扫描相关配置

Spring MVC jpa框架搭建 springmvc框架优点_mysql_09

 第二步,修改控制器类,添加注解

Spring MVC jpa框架搭建 springmvc框架优点_mysql_10

第三步,运行查看结果

Spring MVC jpa框架搭建 springmvc框架优点_Spring MVC jpa框架搭建_11

前后端数据交互

@RequestMapping注解

Spring MVC jpa框架搭建 springmvc框架优点_mysql_12

 需要注意的是,在整个Web项目中,@RequestMapping映射的请求信息必须保证全局唯一。

入参处理:

Spring MVC jpa框架搭建 springmvc框架优点_mysql_13


@RequestParam注解的使用方法非常简单,只要在控制器接口方法中定义希望传入的参数,并在该参数前添加注解即可。


这边注意如果传中文的话需要在web.xml中写上相关配置

Spring MVC jpa框架搭建 springmvc框架优点_java_14

为了方便查看,我们加上超链接进行测试

Spring MVC jpa框架搭建 springmvc框架优点_java_15

这样写的话即使是地址,也不会中文乱码

Spring MVC jpa框架搭建 springmvc框架优点_MVC_16

Spring MVC jpa框架搭建 springmvc框架优点_intellij-idea_17

但是这种注解在我们不传任何参数的时候,点击第二个超链接,会出现400:

 400的情况有两种:

1.请求的参数是必须的,但是控制器未接收到。

例如刚刚并没有传参数,所以报400

Spring MVC jpa框架搭建 springmvc框架优点_Spring MVC jpa框架搭建_18

2.请求的参数无法直接转换成 接受类型(在SpringMVC的项目中很多见)

我们传的年龄不是数字类型的,无法转换成我们接受的类型,也会报400

Spring MVC jpa框架搭建 springmvc框架优点_MVC_19

Spring MVC jpa框架搭建 springmvc框架优点_intellij-idea_20

并且400在后台控制台中是不报错的

Spring MVC jpa框架搭建 springmvc框架优点_java_21

解决方案一:

添加注解的required属性,改为false,并将数字类型的默认值设为0

Spring MVC jpa框架搭建 springmvc框架优点_mysql_22

 这样即使不传参数也可以提交

Spring MVC jpa框架搭建 springmvc框架优点_MVC_23

Spring MVC jpa框架搭建 springmvc框架优点_Spring MVC jpa框架搭建_24

 解决方案2:

不用注解,直接写参数,将int改为integer,因为文本框默认为null,无法转换为int类型,注意页面中的name属性值和参数名相同即可。

Spring MVC jpa框架搭建 springmvc框架优点_Spring MVC jpa框架搭建_25

出参处理

控制器返回值若为ModelAndView,其中既可以包括视图信息,又可以包含模型数据信息。

示例:

Spring MVC jpa框架搭建 springmvc框架优点_mysql_26

Spring MVC jpa框架搭建 springmvc框架优点_mysql_27

Spring MVC jpa框架搭建 springmvc框架优点_MVC_28

 Spring MVC框架除提供ModelAndView对象返回模型数据外,还提供了Model对象,该对象同样可以完成模型数据的传递工作。若控制器接口的入参中包含Model类型,Spring MVC会将隐含模型的引用传递给这些入参。

示例:

Spring MVC jpa框架搭建 springmvc框架优点_MVC_29

Spring MVC jpa框架搭建 springmvc框架优点_Spring MVC jpa框架搭建_30

Spring MVC jpa框架搭建 springmvc框架优点_intellij-idea_31

 视图解析器

 Spring MVC框架在完成请求处理工作之后,会返回一个ModelAndView对象,其中包含视图逻辑名和数据模型。对于那些返回值是String或其他类型的接口,Spring MVC框架也会在内部将他们装配成一个ModelAndView对象,这需要借助视图解析器实现。

示例:

在配置文件中配置视图解析器的相关代码:

Spring MVC jpa框架搭建 springmvc框架优点_java_32

 改动控制器类的代码:

Spring MVC jpa框架搭建 springmvc框架优点_Spring MVC jpa框架搭建_33

 运行结果:

Spring MVC jpa框架搭建 springmvc框架优点_java_34

在web-inf目录下添加jsp目录并添加页面

Spring MVC jpa框架搭建 springmvc框架优点_java_35

  如果我们运行的是web-inf下的页面,需要在配置文件中加上前缀

Spring MVC jpa框架搭建 springmvc框架优点_MVC_36

 运行:

Spring MVC jpa框架搭建 springmvc框架优点_java_37

但这时如果我想要跳转到web目录下的ok页面则需要用指示符技术破坏视图解析跳转

示例:

Spring MVC jpa框架搭建 springmvc框架优点_Spring MVC jpa框架搭建_38

Spring MVC jpa框架搭建 springmvc框架优点_intellij-idea_39

 注意:如果jsp页面存放在WEB-INF下,这个页面不可以通过地址栏直接访问,必须经过控制器转发跳转,才可以进入该页面,这样做出来的网站更具有安全性。

应用场景;

应用分为两种:

公开的:只要你知道地址,任意页面均可访问

不公开的:一般只会存在一个入口,登录页面,其他页面即使你知道地址,也无法访问,例如手机营业厅,一般只有营业员才知道入口。