Struts(之一)--基本介绍
2015-07-07 13:24
218 查看
MVC思想
MVC并不是Java语言所特有的设计思想,它是所有面向对象程序设计语言都应该遵守的思想。MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器)。这三部分以最少的耦合协同工作,从而提高应用的可扩展性和可维护性。
MVC思想类似于观察者模式,但又有区别:观察者模式下观察者和被观察者可以是两个互相等的对象,但MVC被观察者往往只是单纯的数据体,而观察者则是单纯的试图页面。
MVC的特点:
多个视图可以对应一个模型,可以减少代码的复制以及代码的维护量,一旦模型发生改变也已于维护。
模型返回的数据与显示逻辑分离。
应用被分隔成三层,降低了隔层之间的耦合,提供应用的可扩展性。
MVC框架的底层机制是:核心Servlet或Filter接收到用户请求后,通常会对用户请求进行简单预处理,然后通过反射来创建Action实例,并调用Action的指定方法来处理用户请求。那Filter拦截请求后,是如何知道创建哪个Action实例
利用配置文件
利用约定
Struts应用开发流程
在web.xml文件中定义核心Filter来拦截用户请求如果以POST方式提交请求,则定义包含表单数据的JSP页面。如果仅仅只是以GET方式发送请求则无需经过这一步。
定义处理用户请求的Action类。也就是MVC的C控制器,负责调用Model里的方式来处理请求。控制器实际上由两部分组成,即拦截所有用户请求,处理请求的通用代码都有核心控制器完成,而实际的业务控制都有Action完成。
配置Action。
配置处理结果和物理视图之间的对应关系
编写视图资源
下面是请求-响应的完整流程
StrutsPreparedAndExecutorFilter和xxxAction共同组成了Struts的控制器,StrutsPreparedAndExecutorFilter称为核心控制器,xxxAction称为业务控制器,它通常并不与物理视图关联,只负责返回处理结果,而该处理结果与怎样的视图关联依然由核心控制器决定。这样做的的好处是,如果有一天需要将某个视图名映射到不同视图资源,这就无需改变业务控制器代码,只需要修改配置文件即可。从图也看出用户请求不在向JSP页面发送,而是由核心控制器调用JSP页面来生成响应,此处的调用不是直接调用而是,将请求forward到指定JSP页面。
dispatcher结果类型是将请求forward到指定的JSP资源
redirect结果类型是将请求重定向到指定的视图资源,重定向会丢失所有的请求参数、请求属性,当然也包括Action的处理结果。也就是重新产生一个请求。
相关文章推荐
- java代码注意点总结(持续更新)
- java中单例模式(饿汉式、懒汉式)的使用
- Java生成指定长度并且包含大小写字母数字字符串示例
- org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document
- 【Java】Java Arrays类进行数组排序
- ActiveMQ集成到Spring
- struts2 类型转化(typeConverter)
- MyBatis及Spring事务初学总结
- javaproject积累——java 反射 invoke
- Java基础日记———Collection
- java类和对象
- Spring Data JDBC Extensions - Core JDBC Extensions (概述)
- 配置Java环境变量的原因
- Java 接口和抽象类区别
- eclipse debug java源码时时总是显示 source not found
- Spring整合Tiles
- 使用ical4j和javamail发送会议邀请
- Eclipse Class Decompiler——Java反编译插件
- 怒学Java8系列一:Lambda表达式
- 比较器报错:Comparison method violates its general contract