JavaEE-day22-SpringMVC介绍

1. SpringMVC框架特点

  • 清晰地角色划分。
  • 灵活的配置功能。
  • 提供了大量的控制器接口和实现类。
  • 真正做到与View层的实现无关(JSP、Velocity、Xslt等)。
  • 国际化支持。
  • 面向接口编程。
  • Spring提供了Web应用开发的一整套流程,不仅仅是MVC,他们之间可以很方便的结合一起。

2. MVC设计模式

模型(Model)-对应组件:JavaBean。
视图(View)-对应组件:JSP或者HTML文件。
控制器(Controller)-对应组件:Servlet。

形象
MVC处理过程:
在这里插入图片描述
MVC 优点:

  • 多视图共享一个模型,大大提高代码的可重用性。
  • MVC三个模块相互独立,松耦合架构。
  • 控制器提高了应用程序的灵活性和可配置性。
  • 有利于软件工程化管理。

MVC 缺点:

  • 原理复杂。
  • 增加了系统结构和实现的复杂性。
  • 视图对模型数据的低效率访问。

完美的系统架构 = 松耦合+高重用性+高扩展性

3. Spring MVC架构

在这里插入图片描述

4. SpringMVC体系结构

(1)SpringMVC请求处理流程

在这里插入图片描述
具体步骤:

  1. 首先用户发送请求到前端控制器,前端控制器根据请求信息(如 URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图中的 1、2 步骤;
  2. 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在 Spring Web MVC 中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个 ModelAndView(模型数据和逻辑视图名);图中的 3、4、5 步骤;
  3. 前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图中的步骤 6、7;
  4. 前端控制器再次收回控制权,将响应返回给用户,图中的步骤 8;至此整个结束。
(2)SpringMVC体系结构

在这里插入图片描述

  • DispatcherServlet(前端控制器):Spring MVC最核心的类,在web.xml中配置。
  • Handler(处理器):对应MVC中C(Controller层),处理实际请求。标注了@RequestMapping的所有方法都可以看作是一个Handler。
  • ModelAndView:逻辑视图名、模型对象。

5. ModelAndView(Controller to view)(重点)

ModelAndView包含视图信息和模型数据信息。

(1)添加模型数据,相当于将数据添加到request中。

ModelAndView addObject(String attributeName,Object attributeValue);
ModelAndView addAllObjects(Map<String,?> modelMap); 

(2)设置视图

void setView(View view);
void setViewName(String viewName);
示例代码:
@RequestMapping("/index1")
	public ModelAndView index(String username){
		logger.info("welcome! username: " + username);
		//返回前端
		ModelAndView mView = new ModelAndView();
		mView.addObject("username", username);
		mView.setViewName("index");
		return mView;
	}

6. 总结

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaEE-图书管理系统通常需要包含以下数据库表: 1. 用户表(user):包括用户ID、用户名、密码、邮箱等字段。 2. 图书表(book):包括图书ID、图书名称、作者、出版社、ISBN号等字段。 3. 借阅记录表(borrow_record):包括借阅记录ID、用户ID、图书ID、借阅时间、归还时间等字段。 4. 管理员表(admin):包括管理员ID、管理员名称、密码等字段。 以下是JavaEE-图书管理系统数据库代码示例: ```sql -- 用户表 CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, `email` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 图书表 CREATE TABLE `book` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `author` varchar(50) NOT NULL, `publisher` varchar(50) NOT NULL, `isbn` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 借阅记录表 CREATE TABLE `borrow_record` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `book_id` int(11) NOT NULL, `borrow_time` datetime NOT NULL, `return_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_user_id_idx` (`user_id`), KEY `fk_book_id_idx` (`book_id`), CONSTRAINT `fk_book_id` FOREIGN KEY (`book_id`) REFERENCES `book` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 管理员表 CREATE TABLE `admin` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` -- 相关问题--: 1. 如何创建数据库表? 2. 如何在JavaEE中连接数据库? 3. 数据库中的什么是外键?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值