java MVC架构-spring mvc,struct2(理解)
MVC架构实现基础:
基于filter或者servlet实现请求地址分析,如果需要控制类处理请求,则调用相应的控制类。调用控制类时,根据配置文件初始化控制类相关的参数。数据库连接可持久化存在。控制类处理完毕,返回数据以及模板文件,渲染模板文件,返回给客户端。
步骤简化,则有4步:
- 按照配置文件或者注解,初始化所有的控制类,完成url和控制类的映射;
- 接收请求,判断使用的控制类;
- 注入控制类或方法需要的参数,调用对应的控制类或方法处理,返回数据和模板文件地址;
- 根据返回的数据和模板文件地址,渲染模板文件,返回给客户端。
这是基本的MVC架构必须实现的流程,性能问题通过各种优化,基本可以达到可用的水平。
控制类的实例化,依赖于反射机制。利用反射,获悉控制类的属性以及方法的参数,在调用控制类的方法时,可按照参数名称以及请求参数的对应关系,初始化相关参数,执行控制类方法。控制类方法执行完后,会返回约定的类型,比如字符串,表示需要使用的模板文件,或者重定向的地址;Spring的ModelAndView,包含数据和模板文件;Map,包含数据,使用默认的模板文件;void,没用数据,只是调用默认的模板文件。通过判断返回值类型,MVC框架可进行约定的行为,完成最后的View数据装配,返回给客户端。
常见基于java语言的MVC架构有struct以及struct2,spring mvc。早期的spring多作为struct的控制类实例化模块存在,在web.xml中使用的是listener完成所有的bean初始化,依赖注入等操作,但配置文件的编写繁琐。struct的配置文件,需将请求地址以及控制类的映射关系,集中写在配置文件中,编写也很繁琐。
在大型网站开发时,多人协作,集中编写同一个配置文件,会产生冲突,因此需要使用一种相对简单的方式实现,请求地址同控制类的映射关系配置。
在java注解出现后,Spring MVC使用了注解的形式完成了此映射初始化,易于在多协作开发时实现。其实,工程结构即配置的关系映射方式,辅以注解特殊处理的方式,应该更加易于接受。
返回的模板文件,struct使用了自定义的标签,侵入厉害,不易于复用。应使用一种侵入最小,修改最容易的方式作为模板的编写形式。或者前后端使用json格式进行通信,减少后端模板文件的使用,更加易于功能的扩展开发。
java MVC架构-spring mvc,struct2(理解)的更多相关文章
- java企业架构 spring mvc +mybatis + KafKa+Flume+Zookeeper
声明:该框架面向企业,是大型互联网分布式企业架构,后期会介绍linux上部署高可用集群项目. 项目基础功能截图(自提供了最小部分) 平台简介 Jeesz是一个分布式的框架,提供 ...
- 第63节:Java中的Spring MVC简介笔记
前言 感谢! 承蒙关照~ Java中的Spring MVC简介笔记 MVC简介 Spring MVC 基本概念 Spring MVC 项目搭建 maven 使用Spring MVC进行开发 实现数据绑 ...
- Java方式配置Spring MVC
概述 使用Java方式配置Spring MVC,以及回顾一下Spring MVC的各种用法. Spring MVC简述 关于Spring MVC的介绍网上有很多,这里就不再赘述了,只是要说一下,Spr ...
- [MVC] 深入浅出Spring MVC
[MVC] 深入浅出Spring MVC 转:http://4925054.blog.51cto.com/4915054/1176855 Spring MVC主要包括以下要点: 1:由Dispatch ...
- Java框架之Spring MVC(二)
一.Spring MVC 验证 JSR 303 是ajvaEE6 中的一项子规范 ,叫 Bean Validation 用于对javaBean中的字段进行校验. 官方的参考实现是: Hibernate ...
- 【Java】关于Spring MVC框架的总结
SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦.基于请求驱动指的就是使用请求-响应模型,框架的 ...
- 如何用Java类配置Spring MVC(不通过web.xml和XML方式)
DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servl ...
- [Java] Maven 建立 Spring MVC 工程
GIT: https://github.com/yangyxd/Maven.SpringMVC.Web 1. 建立 WebApp 工程 下一步: 下一步: 选择 maven-archetype-web ...
- Spring MVC和Spring Boot的理解以及比较
Spring MVC是什么?(1)Spring MVC是Spring提供的一个强大而灵活的模块式web框架.通过Dispatcher Servlet, ModelAndView 和 View Reso ...
随机推荐
- Linux电源管理(11)_Runtime PM之功能描述
转自:http://www.wowotech.net/pm_subsystem/rpm_overview.html 1. 前言 终于可以写Runtime PM(后面简称RPM)了,说实话,蜗蜗有点小激 ...
- linux上ln链接命令详细说明
ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件. 当我们需要在不同的目录,用到相同的 ...
- jquery easy ui 1.3.4 数据表格(DataGrid)(8)
8.1.创建DataGrid html代码 <table id="dg"></table> $("#dg").datagrid({ // ...
- 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem E: Graphical Editor(模拟控制台命令形式修改图形)
Problem E: Graphical Editor Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2 Solved: 2[Submit][Statu ...
- Listview点击事件
listview = (ListView) findViewById(R.id.listview); // 填充data数据 data = new ArrayList<String>(); ...
- php常用的日期时间操作
//把当前日期时间以指定的格式转成字符串 $date_out=date ( 'Y-m-d H:i:s', time () ); //把时间字符串改成时间戳 $aab=strtotime($date_o ...
- Android 下载文件 显示进度条
加入两个权限 一个是联网,另一个是读写SD卡 <uses-permission android:name="android.permission.INTERNET">& ...
- LoadRunner字符串与参数的操作及转换技巧
刚开始学LR时,经常搞不清楚变量和参数的区别与用法,最近在一次脚本编写中,整理出来的一些小技巧,与大家一起分享. //字符串复制 strcpy(str,"Hello ") ; // ...
- 解决eclipse中git插件中的cannot open git-upload-pack问题
有时候在eclipse上使用插件egit向github或者osc上同步代码时,有时候会发现出现cannot open git-upload-pack这个问题. 一般引起这个问题的原因有两个:一.网络问 ...
- BZOJ2851 : 极限满月
把集合A[i]看作i点的前驱点集合,建成一个DAG,并新建超级源S,向每个前驱集合为空的点连边,那么B[i]就是S到i的必经点集合. 首先使用Lengauer-Tarjan算法建立出以S为起点的Dom ...