1:MVC:

视图(View)-对应组件:JSP或者HTML文件

控制器(Controller)-对应组件:Servlet

模型(Model) -对应组件:JavaBean

 

2:JSP Model1

(浏览器请求给JSP,JSP传送给JavaBean,JavaBean传送给数据库,
数据库返回数据给JavaBean,JavaBean返回数据给JSP,JSP响应给浏览器)
JSP Model2
JSP:负责生成动态网页
Servlet:负责流程控制
JavaBean:负责业务逻辑处理
(浏览器发送请求到Servlet控制器,Servlet控制器实例化给JavaBean模型和JSP视图
JSP 和JavaBean 之间进行相互转化,JavaBean和数据库进行交互,
JSP最后响应给浏览器)

 

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

 

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

 


完美的系统框架=松耦合+高重用性+高扩展性
三层架构,
完美架构雏形(SSM)
spring控制,解耦

 


tomact优化

 

4:Spring MVC
结构最清晰的MVC Model2实现
Controller
ModelAndView


400请求失败

 

5:Spring MVC框架搭建步骤

下载jar文件并导入工程

        spring-web-3.2.13.RELEASE.jar

        spring-webmvc-3.2.13.RELEASE.jar

配置文件

        在web.xml中配置Servlet

        创建Spring MVC的配置文件

创建Controller-处理请求的控制器

         BeanNameUrlHandlerMapping

创建View-JSP

 部署运行

 

6:注解驱动控制器:

<context:component-scan />

            @Controller:标注一个普通的JavaBean成为可以处理请求的控制器

            @RequestMapping:通过请求URL进行映射

<mvc:annotation-driven />

            一键式配置,通过注解的方式进行Spring MVC开发

              DefaultAnnotationHandlerMapping

              AnnotationMethodHandlerAdapter

7:Spring MVC的生命周期:

 

     

 

 

 

DispatcherServlet::前端控制器

HandlerMapping:处理器映射器

HandlerAdpater:处理器适配

Handler:相当于Controller

ViewResolver:视图解析器

View:视图,jsp

HttpMessageConveter:消息转换器

 

第一步:发起请求到前端控制器(DispatcherServlet)
    第二步:前端控制器请求HandlerMapping(处理器映射器)查找 Handler
        可以根据xml配置、注解进行查找
    第三步:处理器映射器HandlerMapping向前端控制器返回Handler
    第四步:前端控制器调用处理器适配器去执行Handler
    第五步:处理器适配器去执行Handler
    第六步:Handler执行完成给适配器返回ModelAndView
    第七步:处理器适配器向前端控制器返回ModelAndView
        ModelAndView是springmvc框架的一个底层对象,包括 Model和view
    第八步:前端控制器请求视图解析器去进行视图解析
        根据逻辑视图名解析成真正的视图(jsp)
    第九步:视图解析器向前端控制器返回View
    第十步:前端控制器进行视图渲染
        视图渲染将模型数据(在ModelAndView对象中)填充到request域
    第十一步:前端控制器向用户响应结果

 

8:SpringMVC 框架的特点:

           清晰地角色划分

           灵活的配置功能

           提供了大量的控制器接口和实现类

           真正做到与View层的实现无关(JSP、Velocity、Xslt等)

           国际化支持

           面向接口编程

           Spring提供了Web应用开发的一整套流程,不仅仅是MVC,他们之间可以很方便的结合一起

 

9:参数传递:

 

 

 

 


单例模式
BaseDao:操作数据库的基类
init()方法
每个线程对系统操作都需要一个new一个BaseDao实例
I/O操作消耗系统资源,影响系统性能


对于每个线程,可共享一个实例
单例模式:(构造方法私有化,可以进行对象的设计,提供对象数据)
系统运行期间,有且仅有一个实例
一个类只有一个实例----最基本的(只提供私有构造器)
他必须自行创建这个实例
(定义了静态的该例私有对象)
他必须自行向整个系统提供这个实例
(提供一个静态的公有方法,返回创建或者获取本身的静态私有对象)


安全问题出现在创建对象初期,由于创建类,访问类较多的情况下,
这种并发情况下多采用静态块来解决。

 

单例模式又分为懒汉模式,饿汉模式,
懒汉模式:时间换空间
在类加载时不能创建实例,采用延迟加载的方法,在运行时调用创建实例
特点 线程不安全,延迟加载(lazy Loading)。类加载速度快,
运行时获取类的速度慢, 消耗资源少。
如何解决线程安全问题?
同步线程(synachornized)加锁,类锁,方法锁,局部锁 
消耗资源多

饿汉模式:(静态内部类)空间换时间
在类加载的时候,就完成初始化
特点 线程安全,不具备延迟加载的特性。类加载较慢,获取对象速度快、
消耗资源较多。

Contorller是单例的,其内部的成员变量都是公用的,开发时需要注意资源使用问题
一般情况下,Controller内部成员变量只有service对象

 

posted on 2021-03-31 08:50  吅^O^  阅读(76)  评论(0编辑  收藏  举报