您的位置:首页 > 编程语言 > Java开发

项目简记——关于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中进行配置的,如下:

<!-- 配置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一样臃肿。

记录完毕,告诉自己一句,淡定,千万要淡定,每种语言都有自己的优劣之处,只管好好学习,天天向上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: