项目简记——关于spring与structs2结合的理解
2015-11-30 10:59
288 查看
最近因为接手了一个Java的平台开发(唉,同事离职了扔给我的,又是一堆的坑要填…),所以从Django转而学spring和structs2。在此简单记录下学习中的理解,后续完善。
因为有C++基础,Java语言本身对我没啥障碍,所以首先从java的web框架入手。本以为将Django框架那一套配置思路迁移过去,应该很容易理解spring的,结果发现虽然整体思路不变,但细节还真区别不小。
1、spring和structs2结合后,首先是structs2将所有请求揽过来(这点和Django settings配置中总请求解析入口配置差不多),这个是在web.xml中进行配置的,如下:
2、structs将请求揽过来需要根据正则将请求分发出去,就是在structs.xml中配置一堆的Action,然后在action中name属性中设置正则,但这里具体action是怎么实现的交给spring去管理(spring-action.xml中配置),两者之间通过action中的class属性和bean中的属性id关联起来,如下:
structs.xml:
spring-action.xml:
到这里就遇到挺好玩的一个概念了——依赖注入或者控制反转,即是将程序之间的、关系控制由代码转移到容器中去(反转),它的意图按我的理解就是在视图代码中定义好接口基类,具体的实现通过xml进行配置,这样就可以做到代码很灵活,或许可以用设计模式中的策略模式来理解?这种思路挺好玩的,有机会在Django中也试一把。
3、Django中数据库的读写一般是通过继承Model类进行解决,具体的数据库配置在settings中配置,这个和Hibernate的做法差不多,大体都是用实体来指代数据库中一条记录。
先这样吧,总体来说,对一个习惯了python那一套的我来说,无论是写还是看java的代码,感觉都会是很不爽,嫌代码臃肿,总想着整合一些代码从而像python中那样轻松使用,例如文件读写。顺便吐槽下我这边的开发部门,不吐不快,就tm的两三个开发人员(都走光了),单纯从业务来说,业务都简单的很,使用Python又快又方便,应该是首选的,要么用nodejs也行,可就因为大伙都是只会java所以就用java,唉,一个程序员只会一种语言真tm是个悲剧,错过了多少领略其他语言魅力的机会啊。常用c、c++、python,接触过java、php、c#,整体感觉就是,c特屌,c++很给力,java相对c++更抽象也更方便了,但相对python而言只能呵呵。c#和java一样臃肿。
记录完毕,告诉自己一句,淡定,千万要淡定,每种语言都有自己的优劣之处,只管好好学习,天天向上。
因为有C++基础,Java语言本身对我没啥障碍,所以首先从java的web框架入手。本以为将Django框架那一套配置思路迁移过去,应该很容易理解spring的,结果发现虽然整体思路不变,但细节还真区别不小。
1、spring和structs2结合后,首先是structs2将所有请求揽过来(这点和Django settings配置中总请求解析入口配置差不多),这个是在web.xml中进行配置的,如下:
<!-- 配置struts2 --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2、structs将请求揽过来需要根据正则将请求分发出去,就是在structs.xml中配置一堆的Action,然后在action中name属性中设置正则,但这里具体action是怎么实现的交给spring去管理(spring-action.xml中配置),两者之间通过action中的class属性和bean中的属性id关联起来,如下:
structs.xml:
<!-- 将Action的具体解析交给spring处理 --> <constant name="struts.objectFactory" value="spring" />
<!-- 在name中配置正则,通过class设置Action路径,这里为spring中bean的id --> <action name="Newtype*" class="newtype" method="{1}"> <result name="{1}">/page/newtype/{1}.jsp</result> </action>
spring-action.xml:
<bean id="newtype" class="com.AutoNavi.StatisticalReport.action.NewtypeAction" scope="prototype"> <property name="newtypeService" ref="newtypeService"/> </bean>
到这里就遇到挺好玩的一个概念了——依赖注入或者控制反转,即是将程序之间的、关系控制由代码转移到容器中去(反转),它的意图按我的理解就是在视图代码中定义好接口基类,具体的实现通过xml进行配置,这样就可以做到代码很灵活,或许可以用设计模式中的策略模式来理解?这种思路挺好玩的,有机会在Django中也试一把。
3、Django中数据库的读写一般是通过继承Model类进行解决,具体的数据库配置在settings中配置,这个和Hibernate的做法差不多,大体都是用实体来指代数据库中一条记录。
先这样吧,总体来说,对一个习惯了python那一套的我来说,无论是写还是看java的代码,感觉都会是很不爽,嫌代码臃肿,总想着整合一些代码从而像python中那样轻松使用,例如文件读写。顺便吐槽下我这边的开发部门,不吐不快,就tm的两三个开发人员(都走光了),单纯从业务来说,业务都简单的很,使用Python又快又方便,应该是首选的,要么用nodejs也行,可就因为大伙都是只会java所以就用java,唉,一个程序员只会一种语言真tm是个悲剧,错过了多少领略其他语言魅力的机会啊。常用c、c++、python,接触过java、php、c#,整体感觉就是,c特屌,c++很给力,java相对c++更抽象也更方便了,但相对python而言只能呵呵。c#和java一样臃肿。
记录完毕,告诉自己一句,淡定,千万要淡定,每种语言都有自己的优劣之处,只管好好学习,天天向上。
相关文章推荐
- Ubuntn 下 jdk 安装
- SSH框架整合(简介)
- Spring中的Aware和事件
- JAVA泛型那些事儿
- 3.聚类–K-means的Java实现
- java设计模式-适配器模式
- myeclipse Invalid Subscription level error
- [转]Java中怎样判断一个字符串能否转成数字
- JNI开发初学--javap,javah命令使用无法找到类问题
- java日期操作
- 【Java基础】开发中的23种设计模式详解
- Spring4.2.3+Hibernate4.3.11整合( IntelliJ maven项目)
- 【Java并发编程实战】-----“J.U.C”:Exchanger
- 《Java知识点列表》V1.0
- java 每日习题(十二) 题目:通过输入的第一个字母识别指定的几个单词
- 【Java并发编程实战】—–“J.U.C”:Phaser
- JAVA基础(13) javaMail发送邮件设置发件人中文昵称
- 【Java并发编程实战】—–“J.U.C”:CountDownlatch
- 【Java并发编程实战】—–“J.U.C”:CyclicBarrier
- eclipse project explorer 下面的字体怎么更改大小