初次使用ssh架构搭建java ee的感想

开始接触ssh(spring+struts2+hibernate)到现在已经有一个星期了,学了个皮毛,抒发一点感慨。


刚接触到ssh时,感到很是兴奋,因为这是我第二次接触正式的web开发框架。第一个框架是django,第二个就是ssh了,两个都是mvc模式。django给我的印象就是更加数据友好,数据库操作很简单,其中的model文件以类和属性的方式来保存数据,简单直观,而且同步到数据库只要一个sync命令就行了。django对于数据的增删改操作都进行了类的封装,使用起来很方便。django还有一个特点就是它是基于python脚本的,python是一个功能强大的语言,能够方便功能的实现。
下面就是ssh的学习了。ssh是struts+spring+hibernate,由于是三个不同的技术凑到一块,个人感觉令人头疼的是不够统一,举个例子来说就是我可以只用struts,可以只用spring,或者struts+hibernate,等等,不同的组合代码风格不一样,于是乎在网上搜索解决方案,莫衷一是。后面被要求使用struts+spring+JPA,哎,虽然hibernate是JPA的实现,可是还是有一定区别的,配置文件都变了样了,让我头疼。
下面分开说三个组件。struts2用于监听用户请求,并处理页面跳转,相当于servlet和request,response,在struts.xml文件中就能清晰的看见整个请求的响应和处理逻辑。hibernate像一个桥梁,能将数据库的数据和内存中的类进行相互转换,相互为映射,当然要达到这种映射,需要规范的代码格式,java bean正好是一种标准的代码格式。spring使用了一种名为ioc的编程方法,用于降低java各个类之间的耦合度,所谓的耦合度就是相关性,简单地说就是引入一个xml文档,这个文档当作中间件,或者说是一个工厂,来实现类的实例化,这样当我要在一个类里面使用另外一个类的方法时,不用实例化一个对象了,只要引用这个xml文档里面的实例就好了,这种方式称为依赖注入;有了这样一个xml作为中间件,我们能够任意引用其他类的实例了就像usb外设一样实现“热插拔”。

从整体来看,我觉得ssh的好处是1、巧妙使用xml来配置整个工程,使用配置文档来减少代码耦合度,来处理页面跳转,来规范整个系统;2、层次分明,持久层,DAO层,service层,action层各司其职;3、便于调试,由于层次分明,配置文件结构清晰,能够短时间内看清这个结构,方便扩展与修改。这些特点也正是成就ssh成为javaEE企业级应用的原因。

相比于django和ssh,我更喜欢django,因为它不那么麻烦!但django坐坐中小网站也就够了,大型网站就不够用了。


当然学习ssh器件遇到的问题也让我崩溃,下面是我遇到的问题集锦:
(1),antlr.collections.AST.getLine()I
看看你引用的库文件里面是不是有antr2.7.2和antr2.7.6,删掉2.7.2,由于2.7.2是strut2 libraries里的,删除比较麻烦,可以先把strut2 libraries考出来,吧antr2.7.2删去之后再导入
(2),no result defined for action
这个问题纠结了半天,搜到一个解决方案说,在struct.xml的package标签中要添加一个属性namespace,照做了,成功解决了问题,就是不知道为什么
(3),使用spring的依赖注入,要求使用者理解java bean的概念,如果不理解会出现nullpointerException()的错误,错误原因是当你使用spring架构时,在一个类里面引用另外一个内的对象,要从applicationContext.xml配置文件中得到该类的对象时,是通过类中的set方法得到的(参考java bean的格式规范),set方法的命名规范(驼峰命名法)也是有讲究了。
(4),做登陆过滤器的时候,使用ie explore 发现即使登陆之后仍然会跳转到登陆界面(我的逻辑是登陆之后跳转到其他界面,使用的是自定义的登陆过滤器),搜了下登陆过滤器的原理,跟cookie有关,ie对cookie的管理很严格,导致session不能获取cookie,我的解决方案是使用ie的兼容模式。
(5),The user must supply a JDBC connection 
之前做得好好的,结果要求从hibernate facet变更到jpa facet,很是蛋疼地从新移植了一下工程,结果在连接数据库的时候出现了The user must supply a JDBC connection,检测了一下url,用户名,密码,都没问题,无奈现在还没解决,等解决了再更新博客。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可 6私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值