Struts(之一)--基本介绍

原创 2015年07月07日 13:24:34

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的处理结果。也就是重新产生一个请求。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Spring(之二)--深入研究

Spring AOP从动态角度考虑程序运行过程,专门用于处理系统中分布于各个模块(不同方法)中的交叉关注点的问题,能更好的抽离出各模块关注点。Spring的声明式事务管理正是通过AOP来实现的。IoC...

Spring(之三)-- Spring整合Struts,Hibernate

Spring整合Struts在web应用中创建Spring容器有如下两种方式: 直接在web.xml文件中创建Spring容器 利用第三方MVC框架的扩展点,创建Spring容器 对于轻量级的Java...

Hibernate(之一)--基本介绍

Hibernate是轻量级Java EE应用的持久层的解决方案,Hibernate不仅管理Java类到数据库表的映射(包括Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以...

Spring(之一)--基本用法

Spring是为企业应用的开发提供轻量级解决方法。包括:基于依赖注入的核心机制、基于AOP的声明式事务管理、与多种持久层技术的整合,以及优秀的Web MVC框架等。Spring贯穿表现层、业务层、持久...

李东学孙俪二度合作 《甄�传》穿越千年爱恋 CH-8002

《后宫甄�传》李东学孙俪二度合作 ,CH-WSK-Z  新浪娱乐讯 近日,由郑晓龙执导,孙俪、李东学、陈建斌、蔡少芬等众多明星联袂主演的宫廷古装大戏《后宫甄�传》预告片蹿红网络。剧中,李东学饰演的“果...

log4j配置详解

 log4j.properties配置详解(转载) Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的...

log4j的基本配置参数

log4j配置文件有三个主要的组件:Logger,Appender和Layout,分别为日志类型,日志输出目的地,日志输出格式。 log4j.rootLogger = [level], appende...

struts2升级2.3.32或2.5.10.1

漏洞年年有,最近特别多。2017年3月6日,Apache Struts2被曝存在远程命令执行漏洞,漏洞编号:S2-045,CVE编号:CVE-2017-5638,官方评级为高危,该漏洞是由于在使用基于...

struts2.3升级到2.5步骤

一、jar包替换: 删除原工程“xwork-core-2.3.16.jar” 二、 修改web.xml: “org.apache.struts2.dispatcher.ng.filter.S...

echart图表的各种参数介绍

转载:http://blog.csdn.net/zou128865/article/details/42802671 <% String path = requ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)