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 ...
随机推荐
- Hierachy Viewer 使用 monitor命令
使用 Hierachy Viewer 可视化调试工具 Hierachy Viewer 能很方便地在开发者设计,调试和调整界面时,快速定位问题,解决问题,提高开发效率. Hierarchy Viewer ...
- vijos 1037 ***
链接:点我 #include <cstdio> #include <cstring> #include <algorithm> #include <iostr ...
- hdu 4302 优先队列
进一步学习了优先队列的用法 题意:一只小动物在直线上走,起始位置为零,之后会出现食物,动物要去距离自己最短的食物那,若两边的食物距离相等,则选择之前走的方向的食物 0 x,代表x的位置出现了食物,1代 ...
- WebLogic Exception
访问Weblogic发生以下异常: 2013-08-20 10:15:11 ERROR [ExceptionConvertOnlyFilter] doFilter (line:70) Could no ...
- MySQL命令执行sql文件的两种方法
MySQL命令执行sql文件的两种方法 摘要:和其他数据库一样,MySQL也提供了命令执行sql脚本文件,方便地进行数据库.表以及数据等各种操作.下面笔者讲解MySQL执行sql文件命令的两种方法,希 ...
- 简单几何(判断矩形的位置) UVALive 7070 The E-pang Palace(14广州B)
题目传送门 题意:给了一些点,问组成两个不相交的矩形的面积和最大 分析:暴力枚举,先找出可以组成矩形的两点并保存起来(vis数组很好),然后写个函数判断四个点是否在另一个矩形内部.当时没有保存矩形,用 ...
- bug记录
1>-[DYMessageNewsTableView _contentOffsetForScrollingToRowAtIndexPath:atScrollPosition:]: row (37 ...
- 基于Extjs的web表单设计器 第四节——控件拖放
接着上一节介绍控件拖放的设计. 通过前面的介绍知道,我们的区域类型的容器控件有三种:Card.Table.Mixed. Card 可以支持几乎所有的常用控件,包括:文本TextField.多文本Tex ...
- 亲和数[HDU2040]
亲和数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- HDU 2853 & 剩余系+KM模板
题意: 给你一张二分图,给一个原匹配,求原匹配改动最少的边数使其边权和最大. SOL: 我觉得我的智商还是去搞搞文化课吧..这种题给我独立做我大概只能在暴力优化上下功夫.. 这题的处理方法让我想到了剩 ...