`

一个非应届生的自言自语(SSH,我挺喜欢)

阅读更多
    首先,我不是应届生。我目前就读于苏州的一个大学。大三年级。专业为软件工程。
    论坛里最近发了很多关于应届生的问题,比如:SSH?DWR?什么简历写的太水等等,这种全盘否定的帖子,我到要出来说说话。

    1,关于SSH,SSH2,等等的问题。   
    请问,一些在位牛人(经常批评学生的),你们工作中难道不是使用的这种框架?你们也许用过许多框架,但是你们常用的请问是不是这几种?也许你会抱怨,公司的要求,部门的决定,但是归根到底你在使用这些框架,那么别人学这些框架不是很正常吗?(会的人多,技术成熟,学习曲线低,项目成本低)你们为什么要说三倒四呢?一提到SSH的问题,我想现在许多牛人已经想说一些攻击我的话了吧?您先听我说完。JSP,SERVLET,JDBC,是的,它们很好,而且它们是规范,是标准(SPRING您喜欢吗?它是标准吗?)。JDBC的速度快,什么JSP,SERVLET一样可以搭建出可不断升级的软件。对,这些没错,很对。但是请问,您在工作有有多少实际项目用到这些东西?全部使用了吗?



    谈到这,许多人说在读学生只知道SSH,那么可以,我来谈谈我的SSH。(我不多提代码,免得被大牛们说,我是代码工人)

     在项目中,我一般使用的分层结构:

     Dao(Hibernate/Ibatis)--- service (Spring) -- action (Struts2/Webwork) 。我不会使用JSP/SERVLET技术去实现我的展现层。在论坛上许多人提出这种分层的问题(首先我先抛开贫血模型/充血模型的问题),许多人建议把action 层与service 合并的。包括在SPRINGSIDE中,我看见SPRINGSIDE中封装了泛型DAO层,之后直接在service 中继承Dao。并非直接使用Dao继承action 。当然,直接抛开service 层有它的好处,但是我认为坏处远远大于好处。首先一个辣手的问题就是耦合的问题。

     比如,这里一个USER Action的usersByPage方法:

   
 public String usersByPage() throws Exception{
		// 从Session中得到当前登录用户的loginName。这里的Session loginName从登陆时记录。
		 loginName=(String)(ActionContext.getContext().getSession().get("loginName"));
		//判断用户是否加入了球队
			if(userServices.findUserByLoginName(loginName).getTeam()==null){
				return ERROR;
			}
		Integer teamId=userServices.findUserByLoginName(loginName).getTeam().getId();
		
		users=userServices.getAll();
		 
		......

		return SUCCESS;
	}


这个方法还好,但是很明显,这种做法很幼稚。Action到最后极度膨胀。下面是各幼稚的。

public String usersByPage() throws Exception{
		// 从Session中得到当前登录用户的loginName。这里的Session loginName从登陆时记录。
		 loginName=(String)(ActionContext.getContext().getSession().get("loginName"));
		//判断用户是否加入了球队
			if(Dao.findUserByLoginName(loginName).getTeam()==null){
				return ERROR;
			}
		Integer teamId=userDao.findUserByLoginName(loginName).getTeam().getId();
		
		users=userDao.getAll();
		 
		......

		return SUCCESS;
	}


     这里的Action直接调用Dao.当然,这里的DAO传入的数据完全符合ACTION的需求,而且由于让SPRING去IOC了,所以这个usersByPage看起来也并非很幼稚,问题是,ACTION过度膨胀,导致这些ACTION很难重构,重构的目的在于程序清晰可见,更容易做测试,但是过于膨胀的类是很难重构的,这里不是技术问题,而是人的问题,你看见一大堆东西,你看上去就不舒服,心就烦,而且这些东西搬来搬去,如果最后还是放在同一个ACTION里,还是很不爽的一件事情。而且,这里很明显,这2个方法都不OO。或者说,上面的那个ACTION虽然调用了Services,但是ACTION还是膨胀,根本没有解决实际问题,Services只是起个空架子。类似于做了这种事情:


public List getAll() throws RuntimeException {
		return userDao.getAll();
	}



       但是,加个空架子,也许有它的好处吧。首先,把事务处理放在Services中也未必是坏事。而且,哪一天,ACTION里实在过度膨胀,把一些方法放在Services中操作,也能减轻点ACTION的负担,而且,也方便于重构,更重要的是,如果方法独立,单独的放在Services中也方便于TDD。更重要的是,STRUTS2属于展现层框架,把业务逻辑放在展现层中实在有点违背展现层这个名词,所以,我不建议把ACTION当做 ACTION+Services来用。当然,如果完全的CURD,为了速度,小项目,这样做也是不错的选择,可以提高开发速度,而且,小项目也没什么维护。把一堆东西放在ACTION里,也并非完全不可取。但是,如果你 的系统从设计的开始就使用的OO,那么很明显,这种ACTION+Services的分层,我觉得会很不适合。

以上谈到的是TS的开发模式。关于对模型充血,按MF说的,按《DDD》的那一套,我感觉都不怎么合适,原因我想大家都知道。SPRING+HIBERNATE的问题,这里论坛的讨论很多,我就不多说了。自己有兴趣可 以看看讨论。我的做法是把Service在分开,把一些通用的模块尽量做成组件,之后在每个Service里调,比较爽,有点OO的感觉。这里许多人应该会想到AOP,我认为AOP适合于那些“过度”调用的功能,而不 适合非平凡调用。我认为,AOP本身就比较复杂,如果为了AOP就去AOP显然提高学习成本和项目难度。我认为,使用最简单,最大众化的技术去解决实际的问题才是最好的选择。所以,我晚上会翻阅JSP,SERVLET,JDBC的书籍或者资料,但是我从不会在实际中去使用它们去搭建系统。当然,上面那个是我最“正式”的分层结构,我还使用了别的变形,这里就不多说了,我的目的很简单,我只想告诉一些激进的牛人,我们学生并非只知道你们所认为的SSH。我也说了一些我为什么要去使用SSH的问题。


        关于EJB3.0的问题.
       我在读书的时候,EJB2.0那会我应该还在初中或者高中,我根本没有时间接触,所以对它们不太了解。但是EJB3.0,我这里有本《EJB3.0 IN ACTION》的书,偶尔翻阅,做做DEMO,也算了解,SPRING几乎都可以做,所以我没怎么去下太大的工夫,让我不爽的就是它的部署。不过由于它回归POJO,而且数据持久层使用了HIBERNATE,所以还是比较爽的,不会在像(资料了解):写那么多无聊的配置,DTO,接口寻址,等这些问题。

关于DWR,等问题。
我用DWR的机会不多,只用过2次。所以也没什么特别的心得。

应用服务器的问题:
我最爱TOMCAT,可以集群,性能不差,简单方便,没有别的理由让我不用它。

SPRING,EJB的问题:
我喜欢SPRING,没别的想说了,如果问我理由,太多。特别喜欢WITHOUT EJB那本书。当然了,还有SPRING IN ACTION。


框架这东西也没什么好谈的了,我用的就是这些平常的,能给我做足够的事情,就OK了。我更大众化。或者,我太菜,就像某些人说的:学生,只会吹。就会SSH。没了。


本来一开始打算写更多的东西,想想还是算了,也没那个必要。要写的太多,管理,设计,需求模型,包括产品的问题。技术与市场的问题。不写了,我想我写那么多就够了,学生并非你所想的一无是处,而且,有些东西我感觉我写不出来,写1年吧,也许可以,但是,有些东西,只有自己体会了才知道。好了,就此搁笔。PS:让暴风雨来的更猛烈些吧,请牛人们尽情的拍砖吧。


            最后,我们是学生,不容易,学校不教,我们只能自己摸索,老师在干什么?我们能会一点已经很不错了,您的批评,有想过我们吗?我们也是人,我们是菜鸟,您是牛人,您可以给我们建议,学什么,怎么学,但是请不要在无聊的批判了,您没上过学吗?我要学的东西还有很多,有许多东西并不是技术上的.我每天都在学习,每天进步一点,学生,不是你所想的,只会上网玩游戏,泡MM,无聊等等。如果你因为我帖子发错了地方而投了隐藏帖,那么我无话可说!
分享到:
评论
55 楼 cnlw1985 2009-06-20  
<div class="quote_div">
<div class="quote_div">
<br><br>    jsf看看Seam 。  web service的话你就自己先做原来的系统。 最后的时候发布接口就行了。  单纯用web service的话 不是很难。 但是你要理解其中的道道可不简单。 soap wsdl uddi 。 推荐axis2。 eclipse插件下好就齐活了。 但是中文资料比较少。 慢慢接受吧。。</div>
</div>
<p> </p>
<p> seam很垃圾,是一个比EJB2.X还垃圾的框架</p>
54 楼 treblesoftware 2009-06-20  
wuxi15932077655 写道
不看了!  多多看书了!

不懂什么意思?能否解释一下?

53 楼 wuxi15932077655 2009-06-20  
不看了!  多多看书了!
52 楼 treblesoftware 2009-06-20  
zhmiao 写道
楼主的java确实够可以的了 作为一个学生来说 因为我也是学生 自己摸索的本来就慢


我的水平还不行,上面也被一个同级大三学生鄙视了,说是HELLO WORD级别。

现在许多人不了解学校里的情况,把我们这些学生全部一棍打死,我只是想表面一下,我们学生不只只是SSH。
51 楼 zhmiao 2009-06-20  
楼主的java确实够可以的了 作为一个学生来说 因为我也是学生 自己摸索的本来就慢
50 楼 treblesoftware 2009-06-20  
troyconder 写道
不需要学太多 最重要的是 学会"低调“



被人一直鄙视应届,感觉十分憋气。偶然出来透透气,学生并非是一无是处。
49 楼 treblesoftware 2009-06-20  
tobackfurture 写道
算了,地球这么危险,我看我还是回火星吧,地球实在太危险!



火星,是真的避难所吗?其实,我们已经无路可走了。
48 楼 treblesoftware 2009-06-20  
ysihaoy 写道
java和设计模式只要吃透了,框架只是上手的事情。
cs的学生单纯为了ssh真是有点白学4年的本科了。


设计模式的确很重要,我这有2本设计模式的书。《HEAD FIRST》,与《GOF》,都在看。谢谢您的提议。
47 楼 treblesoftware 2009-06-20  
wang_scu 写道
我也大三了 希望您以后不傲再写一些类hello word的东西 哪个学校的 不要写的这样晦涩



我看了你这样的留言,还以为你是什么大牛呢。立刻进你的JE博客,这下子真是下倒我了。ACM团队,什么几秒黑掉网站,什么我的东西属于HELLO WORD级别,我的天,我写的那些东西许多都是来自MF,RD,ER等人,他们也是HELLO WORD级别,你那个炫耀帖我看的实在不怎么样。
46 楼 wang_scu 2009-06-20  
我也大三了 希望您以后不傲再写一些类hello word的东西 哪个学校的 不要写的这样晦涩
45 楼 Hooopo 2009-06-20  
火星叔叔马丁 写道
对毕业生来说,ssh意义真的不大
我给出我选人的三项指标:正则,SQL,一门语言的基础

当然要是谁觉得ssh 精通了(我倒真的不怎么精通ssh) 能谈谈不同的东西 倒也可以有不少加分

这指标不错~~
44 楼 check 2009-06-20  
火星叔叔马丁 写道
其实我招人 毕业生抓紧来写view层 java就写jsp, freemarker
rails 的写erb

老老实实写个半年view层 心态磨平了 再看看是不是值得培养



这种人就是典型的多年媳妇熬成婆,迫不及待的要发发雌威,新媳妇近来了先打半年洗脚水,倒半年夜香,再看看是否能培养来织布缝衣服。

rails这么崇尚小迭代,这么轻量的东西,居然还要专门把erb分出来给新人写。大家都知道香蕉好吃,香蕉皮不好吃,和新人分香蕉的办法就是香蕉肉留给自己,皮给小弟,绝对的rpwt。自己写过rails的都知道,erb不是简单,仅仅是无聊,不那么有趣,典型的香蕉皮工作。就像一个程序员把单元测试踢给新人,你能说他真的晓得自己在敏捷开发中的位置么?晓得单元测试的意义么?大家都知道单元测试如果不是开发人员本人做出来就算不上真正的单元测试,同样,erb不是自己写出来在rails里也绝对是自己的应尽的责任没有尽到,到头来伤害的还是自己对项目的理解。

带新人的时候不思考怎么尽快的把整个蓝图让人弄明白,反而人为设置障碍,让新人天天做view层。这样的行为完全是因为自我感觉过于良好导致的。人应该向上看,而不是每天盯着应届生来寻找良好感觉,通过在论坛上拍ssh贬低应届生来寻求快感是在是有愧程序员这三个字。
43 楼 ysihaoy 2009-06-20  
java和设计模式只要吃透了,框架只是上手的事情。
cs的学生单纯为了ssh真是有点白学4年的本科了。
42 楼 tobackfurture 2009-06-20  
算了,地球这么危险,我看我还是回火星吧,地球实在太危险!
41 楼 xzj127 2009-06-20  
SSH 说实话。确实都在用。。但是我现在很烦这个。。
  后来把H 换成了Ibatis,现在感觉换汤没换药。
下次如果可以。。就用  Jsp/Servlet +JDBC 或者 Ibatis或者Hibernate
那个 Struts ,感觉 还不如用Spring的MVC。

阿弥陀佛!又多说了。。

     我现在很喜欢WEB前台,写javaScript和CSS 感觉非常爽快。。。一个个漂亮的,有生机的页面。。看的舒服。。
    后台写的比较麻木了(虽然很菜),就现在在国内一般的企业。做的WEB项目。。技术都高不到哪里去。。。都一个叼样。。。。
    
   
  

阿弥陀佛!
    信春歌得永生!
40 楼 troyconder 2009-06-20  
不需要学太多 最重要的是 学会"低调“
39 楼 mikeandmore 2009-06-20  
火星叔叔马丁 写道
别说别人啊 说你自己
毕业生又一个特点 我的ooxx(姨妈的外甥的隔壁邻居的外婆的孙子的同班同学的哥哥)
就怎么怎么样

说你自己 别人怎么样关你什么事


我不想去事业单位。。。这是主要的
38 楼 Saito 2009-06-19  
  ms美帝才用ada 。 我们军方还是c。  我们实验室有一牛人。参与了一军方项目。c语言的。那项目开发了3年。他在其中的最后一年。

  项目的最终用途是。 给军方创造一个没法被别人入侵的乌托邦系统。并在地方推广。 呃。。。
37 楼 mikeandmore 2009-06-19  
火星叔叔马丁 写道
是啊 所以你毕业后可以去你们学校图书馆从事 钻研COBOL 顺便熟练操作fortan 然后为军方改进下ada的工作

有啊。。。有一个96界的怪叔叔就是啊。。。
36 楼 mikeandmore 2009-06-19  
火星叔叔马丁 写道
treblesoftware 写道
火星叔叔马丁 写道
免扯淡 直接正题




DomainModel的持久化就那么十恶不赦 以至于大家都敬而远之 宁可肯紫肯紫的生成一陀只有get/set的贫血怪胎 我不可理解

请先去统计金融/银行/电信业务中使用hibernate/spring的比例,再减去ejb的比例 看看剩下多少用原始的jdbc,jsp

其实我已经开始讨厌java了,虽然说重剑无锋,但是至少对毕业生来说,要大巧不工 暂时还没看到,连可能看到趋势都没


的确,金融/银行/电信业务这些行业软件用原始的jdbc,jsp确实很多,需求的要求,非需求的需求。这3个行业不在本文章的讨论范围之内。说到JAVA,我还是很喜欢它。

我们学校新买的图书馆管理系统,嗯。。。
是COBOL的。。。

相关推荐

    一个HR人给应届生的面试建议

    本文将对《一个HR人给应届生的面试建议》进行详细的解读和分析,总结出面试技巧和方法,以帮助应届生更好地准备面试。 首先,文章指出,HR在面试时,会对应届生进行评估,考察他们的胜任力(Competency)。胜任力是...

    2016应届生求职全程指南(第十版)

    其内容涵盖了职业规划、简历制作、笔试面试、企业招聘日程、招聘陷阱、签约违约、户口问题、公务员等求职过程中的每一个环节,得到了广大应届生朋友、老师、企业、媒体等社会各界的广泛关注和支持。 为了使《应届生...

    2022年应届生java简历范文.docx

    本文档提供了一个Java应届生简历模板,针对Java开发岗位的应届生提供了一个基本的模板架构,可以帮助他们快速编写自己的简历。该模板包括基本信息、教育背景、工作经历、语言能力、职业技能、项目经验等多个方面的...

    java软件工程师简历模板——应届生.rar

    Java软件工程师是IT行业中一个非常重要的职位,尤其对于应届毕业生来说,找到一份合适的简历模板至关重要。这份名为"java软件工程师简历模板——应届生.rar"的压缩包文件,旨在为即将踏入职场的Java编程新手提供一份...

    应届生求职大礼包2010-2

    《应届生求职大礼包2010-2》是一个专为应届毕业生设计的求职资源集合,其中包含了针对AMD公司和LG公司的求职指南。这个压缩包文件提供了对应届生在求职过程中可能需要的重要信息和知识,帮助他们更好地理解和准备这...

    应届生求职笔试全攻略

    目前来说,市场卜还没有一个比较全面、系统、针对应届生群体的求职指导书 籍。我们参考过不少同类的书籍,然而感觉到这类书籍要么仅仅提供“怎么做”,缺 少对于“为什么这样做”的分析;对于某些简历制作、笔试面试...

    应届生大礼包-中兴篇&&应届生大礼包-华为篇v

    在IT行业中,对于应届生来说,找到一份满意的工作至关重要,尤其是一些知名的大公司,如中兴和华为。这两个公司在全球范围内都有着显著的影响力,它们的招聘过程往往具有较高的专业性和严谨性。本篇文章将深入探讨这...

    高质量C C++ 编程 应届生笔试

    本资源"高质量C++C编程指南"显然是一个面向应届生的备考资料,旨在帮助他们提升编程能力和通过笔试。下面将对C和C++编程的重要知识点进行详述: 1. **基本语法**:C和C++的基础包括变量、数据类型、运算符、控制...

    2021应届生就业趋势报告-BOOS直聘-202106.pdf

    总体来说,2021应届生就业趋势报告为了解当前高校毕业生的就业形势提供了一个全面的视角,并对未来的人才市场趋势给出了一定的预测和建议。通过报告中的数据和分析,能够更好地理解高校毕业生的就业动态,为高校教育...

    2021年应届生求职就业与薪酬调研报告.pdf

    根据上述文件内容,我们可以从《2021年应届生求职就业与薪酬调研报告》中提炼出一系列详细的知识点。以下为报告中涉及的知识点: 1. 报告发起单位及目的: 报告由中智管理咨询有限公司与中智预才网校园招聘平台联合...

    应届生求职简历模版

    应届生求职简历模版,希望能给广大的应届生朋友们最大的帮助!

    护理应届生面试自我介绍精选.doc

    8. **强烈的责任心和专业热情**:护理应届生表示自己热爱护理事业,愿意为病人付出,有强烈的责任心,能够认真对待每一个护理任务。 9. **党员身份和党课培训**:对于一些应届生来说,他们的党员身份和高级党课培训...

    应届生简历模板

    应届生简历模板

    应届生培养项目.pdf

    应届生培养项目.pdf

    应届生求职全程指南

    《应届生求职全程指南》是一份专门为即将踏入职场的应届毕业生量身打造的实用资料。这份指南旨在帮助应届毕业生了解求职过程中的各个环节,提供全方位的求职策略和技巧,以提高求职成功率。以下是对这份指南内容的...

    应届生简历模板zip文件

    在IT行业中,简历是求职者向潜在雇主展示自身技能、经验及成就的重要工具,尤其对于应届生来说,一份精心设计的简历可以帮助他们在竞争激烈的就业市场中脱颖而出。本压缩包文件名为“应届生简历模板zip文件”,包含...

    Java 应届生面试题

    Java 应届生面试题知识点总结 一、Java 基本数据类型和引用数据类型 * 基本数据类型:byte、int、char、long、float、double、boolean 和 short,具有固定的数据位,不随运行平台的变化而变化。 * 引用数据类型:...

    应届生Java简历模板

    综上所述,"JAVA简历模板.doc"是一个很好的起点,它能帮助应届生构建一份专业的Java程序员简历,有效展示自身能力,提高求职成功率。通过合理填充和个性化定制,这份模板将为你开启理想的Java职业生涯铺平道路。

    2023年应届生招聘和薪酬管理及实习生调研报告.pdf

    《2023年应届生招聘和薪酬管理及实习生调研报告》揭示了今年应届毕业生在就业市场上的态势,以及企业在招聘、薪酬管理和实习生管理方面的最新动态。以下是对报告核心内容的详细解读。 1. 应届生招聘趋势: - 2023...

Global site tag (gtag.js) - Google Analytics