【翠花学SpringMvc】Spring MVC框架

MVC模式

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

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

MVC优点:

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

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

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

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

缺点:

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

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

搭建Spring MVC环境

1.引入jar包

2.画页面

 3.编写控制器类

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

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

 6.运行

 

使用注解开发SpringMVC框架

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

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

第三步,运行查看结果

前后端数据交互

@RequestMapping注解

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

入参处理:

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

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

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

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

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

 400的情况有两种:

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

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

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

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

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

解决方案一:

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

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

 解决方案2:

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

出参处理

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

示例:

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

示例:

 视图解析器

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

示例:

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

 改动控制器类的代码:

 运行结果:

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

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

 运行:

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

示例:

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

应用场景;

应用分为两种:

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

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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BUG忠实爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值