元素应用class或id属性,但是更常见的情况是只应用其中一种。
这两者的主要差异是,class用于元素组(类似的元素,或者可以理解为某一类元素),而id用于标识单独的唯一的元素。
CSS+DIV设置网页可以使网页的布局划分清晰,更加美观。
尤其是对DIV框样式的设计知识更是重要。
接下来又学了JavaScript,使用它可以增强站点的动态性和交互性。
可以做些提供用户交互、动态更改内容、验证数据等。
JavaScript有些常用的语法和函数我们要记住例如:
document.write()是文档对象的输出函数、document.close()是将输出关闭、onClick='alert("")通过给控件添加相应的事件来实现,还有些数据类型条件语句和JAVA差不多了。
通过这阶段学习使我明白一个CSS+DIV布局标准网页,可以使前端XHTML代码更少、结构更清晰,这有利于轻松用JavaScript操作DOM,比如,要展示一个3行3列的列表,如果用传统的表格布局,现在要你用JavaScript动态生成这个列表,那么就需要一个循环嵌套,如果采用li结构加CSS浮动布局,一次循环就好了。
当然,WEB标准化不是一定不能使用表格,我的意思是结构清晰的XHTML更易于把JavaScript效果或功能整合到项目中。
3、动态网页设计技术(JSP+JavaBean+Servlet)
这阶段我们主要学了JSP、JavaBean和Servlet,也学了SQL2000和MySQL的连接,我总结下本阶段的学习内容:
JSP技术是在传统的网页HTML文件中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件。
简单说几个它的对象:
request对象:
封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交信息。
它是HttpServletRequest的实例。
response对象:
对客户的请求做出动态的响应,向客户端发送数据。
session对象:
是JSP的内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。
从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。
当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。
application对象:
服务器启动后就产生了这个application对象,当客户在所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭;JavaBean是一种JAVA语言写成的可重用组件。
为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。
JavaBean通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。
众所周知,属性名称符合这种模式,其他Java类可以通过自身机制发现和操作这些JavaBean属性;Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。
它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。
Servlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
还有它的一些方法如:
init()方法、service()方法、doGet()方法、doPost()方法等等。
最后我觉得最重要的是学习JDBC:
JSP大多数应用将使用数据库,JDBC被用于数据库连接。
经常忽略的一个事实就是,每个JDBCDriver所支持的东西是相当不同的。
了解并熟悉在JSP工程上被使用的JDBCdriver的细节是很重要的。
4、struts学习阶段
接下来我们开始了框架的学习,这阶段主要介绍了Struts的工作原理:
关于MVC架构,其概念非常明确,JavaBean(Model)、JSP(View)、Servlet(Control)。
MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。
Struts 是MVC的一种实现,它将 Servlet和 JSP 标记用作实现的一部分。
Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。
控制:
通过图2大家可以看到有一个XML文件Struts-config.xml,与之相关联的是Controller,在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。
ActionServlet是一个通用的控制组件。
这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。
它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。
另外控制组件也负责用相应的请求参数填充 Action From(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。
动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。
最后动作类把控制权传给后续的JSP 文件,后者生成视图。
所有这些控制逻辑利用Struts-config.xml文件来配置。
视图:
主要由JSP生成页面完成视图,Struts提供丰富的JSP 标签库:
Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。
模型:
模型以一个或多个java bean的形式存在。
这些bean分为三类:
Action Form、Action、JavaBean or EJB。
Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。
Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。
流程:
在Struts中,用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,由ActionBean完成相应的业务操作,如文件操作,数据库操作等。
每一个*.do均有对应的FormBean名称和ActionBean名称,这些在Struts-config.xml中配置。
Struts的核心是ActionSevlet,ActionSevlet的核心是Struts-config.xml。
学习了Struts工作原理后在老师的指导下我们用所学的知识做了一个登录验证的程序,程序虽小但这是我们所学知识的一个缩影,能帮助我们充分的理解和掌握这一阶段所学的知识
5、Hibernate和Spring学习阶段
这个阶段简单的介绍了下Hibernate和Spring,Hibernate的特点:
Hibernate功能强大,数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,而且对Hibernate进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽。
Hibernate映射的PO是可以表达立体的对象继承,聚合等等关系的,这将会直接影响到你的整个软件系统的设计思路。
Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/RMapping实现了POJO和数据库表之间的映射,以及SQL的自动生成和执行。
程序员往往只需定义好了POJO到数据库表的映射关系,即可通过Hibernate提供的方法完成持久层操作。
程序员甚至不需要对SQL的熟练掌握,Hibernate/OJB会根据制定的存储逻辑,自动生成对应的SQL并调用JDBC接口加以执行。
Hibernate在有些情况下可能会在java代码中保sql/hql。
而关于Spring我只有些简单的了解。
知道IOC就是Spring的一切。
而掌握IOC的唯一方法就是使用和思考。
Spring是IOC为核心的,所以第一步就是要深刻理解IOC,最好是能尽快把IOC作为教条式的原则,虽然有些偏激,但有助于尽快理解,在你有了深刻的理解之后,你再看Spring就已经有个大概框架了,虽然IOC从定义来讲并不复杂,但如同其他简单的道理一样,不复杂不代表容易理解和接受。
可是越学习越不踏实,其实就是不理解,这个问题的实际操作是良方,IOC也一样,需要立即进行尝试,编写小的IOC例子是捷径。
三、实训体会
1.收获
说到这次岗前培训的收获,真是收获了不少也懂了许多的道理,虽然在实训中也遇到不少的困难,但经过大家的努力都得到了解决。
总结如下:
1)我们参加此次培训目的是培养学生综合应用所学专业知识及计算机知识的能力,训练和提高软件开发技能,达到的能够开发基于WEB的Java程序。
能够熟练应用三大框架来开发软件,并且能够熟练使用开发工具帮助我们做东西。
我们的最终目的是Web开发基础(Html、Css、JavaScript)并且能够做出漂亮的网页,能够熟练使用SqlServer数据库,掌握Java语言基础,Web应用开发(Jsp)能做出简单的系统主要用于对数据库的增删改查,三大框架内容以可以使我们能适应现在的软件开发潮流,毕业后能找到好的工作。
2)关键是打好基础,把平时学习的基础学好,一点点整理起来把他们运用到一起。
再就是不能急于求成,做东西时不能着急,先把自己的思路理清,再从简单的一步步做起,逐步击破。
不会的地方要多向老师同学询问,或查查资料很好的利用网络,有个好的心态去对待它,坚持下去一定可以的。
3)要勤学,老师课上讲的东西很多,有好多的都不能理解也不能马上记下来。
所以我们在课下必须要多加练习,课下一定要及时的温习课上的知识多做一些小项目,熟能生巧么。
所以说做软件的勤奋很重要,多敲代码也可以使你的思路更明确,平时多看些好的代码也很有用,看看他们是如何做的,也可以学到不少的东西。
也能是你的代码清晰明了。
4)团队精神,这在一个公司里太重要了,一人的力量是薄弱的,只有大家一起协作才能完成做好的东西。
围绕中心,没人负责自己的东西调理清楚又不耽误事。
当遇到问题的时候也可以向他们请教,以达到共同的目标。
2.不足
在培训中也有些不足之处如学习的方式方法不够得当,对学习没有个好的规划,知识盲目的学,也不定达到好的效果;学习中不能正确的面对问题和困难,在学习遇到困难时存在逃避、回避问题,有些人甚至就直接拿取他人的东西拷贝啦。
对学习完全的松懈;有时候出现只说不做的现象,只是停留在嘴上,没有落实到实际学习中去,;综合协调能力不够,在协调组内各同学配合的时候没能做好沟通,导致在于其他同学配合上存在漏洞;有时候在学习中存在心态浮躁的现象,存在偏激的情况,不能做到以一颗平常心对待学习;有时候遇见困难不知道与老师、同学沟通,寻求帮助,自己闷头研究,但也没什么结果,导致学习积压、拖拉,最终影响整个学习进度。
3.对实训的建议
实训我们确实收获了不少,但也有些不尽人意的地方。
下面说说我对实训的一些建议,学校应加大力度对学生出勤的进行管理制度,我们在培训就应该端正好自己的态度,不能老迟到或早退的,毕竟我们还是学生要遵守学校的规定。
根本原因还是大多数的积极性不高,而老师也有部分责任,一开始老师对纪律要求的比较严格后来不知什么原因有一些懈怠了,还有培训的效果也不怎么好了。
有时候有很多事情是我们学生自己解决不了的,问题老师不能及时在我们身边为我们解决,我们体谅老师,但我们也很纠结。
还有些我们学生的问题,就是我们的积极性不问题,培训关键的人还是我们,这都与我们的以后的工作息息相关的,所以我们应对自己负责也对老师对家里负责。
我提些小建议往系里领导应加大管理力度和惩罚制度,对学生对培训老师都应加大管理。
四、总结
时光如梭,转眼间,三年的大学生活就快这样过去了。
回首我的大学生涯,有过渴望、有过追求、有成功也有失败,有过辛酸也过过快乐,在这个过程中我不断地挑战自我,充实自我,为我的未来打下坚实的基础。
三年的大学生活临近了尾声。
这短短的三年,却是我的人生中弥足珍贵的三年。
在即将毕业的日子里,我们还有一件很重要的事情要做,那就是毕业实训,毕业实训可以使我们理论联系实际,综合运用自己所学的知识,加强分析和解决问题的能力,同时认识社会的需要,培养良好的职业精神,适应毕业后实际工作的要求,这次的毕业实训圆满的完成的自己的任务,受益匪浅,从中学到了许多自己以前不曾学到的东西,这将给自己以后的学习生活带来莫大的帮助。
三个多月毕业实训,时间说起来长也不长,短也不短,但在这有限的几个月的时间里,我们学到了不少的东西,这不仅仅是单纯的知识,学到的更重要的是一种方法。
对于一个软件专业的学生来说,如果以后要从事本专业相关的工作,仅仅靠学校所学到的东西知识来找到一份满意的工作是比较困难的,真正的企业级应用对技术的要求是比较严格的,显然学校所学到的书面东西达不到要求,但在学校岗前实训中,又给了我们提供更多的机会,我们能像进入企业一样,学习新的知识,一起沟通合作做项目,感受到了团队的力量。
在平时的课堂上,我们讲的只是些基础知识,也没接触CSS、JavaScript、三大框架之类的东西,有的软件工具也没接触过,或者说只是听闻过,只是不知道它们是什么东西,干什么用的。
知识是一点一滴不断积累起来的,学习的过程也是由简单不断的深入,我们从简单的web基础入手慢慢逐渐加深到框架。
这几个月的实训中,我们不仅仅学习了专业知识,还学习了一些求职面试的技巧和应注意的一些问题。
在面试的过程中我们应当通过各种途径主动的与面试单位接触,向他们提供个人信息,在面试的过程中要注意自己的言谈着装,给招聘人员一个良好的印象,不能与面试单位的要求相违背,即便是一些潜规则,我们也要遵守,这样才可能获得更大的机会,对于自己感兴趣的职位,可以主动的与招聘方进行电话或其它形式的磋商。
当招聘方向自己发出工作邀约的时候,也许与我们的期望相差很远,但这并不意味着无法改变。
永远不要在未做磋商的情况下因为金钱方面的原因而拒绝一份邀约,要拒绝一份工作邀约也要向对方表明情况。
学习的过程是漫长的,尤其是对我们来说,技术的成长阶段是最痛苦的,但我相信只要我有坚定的信念,不怕苦不怕累,我们终会成功。
每天起早摸黑,加班加点的练习以提升自己的技术,有人说当一个学生真好。
可是既然我选择了这个职业就要坚定的走下去,因为这一天也终究要来到。
对我们而言,实训可以使我们有更多的机会尝试不同的工作,扮演不同的社会角色,逐步完成职业化角色的转化,发现自己真实的潜力和兴趣,以奠定良好的事业基础,也为自我成长丰富了阅历,促进整个社会人才资源的优化配置。
作为一名学生,我想学习的目的不在于通过结业考试,而是为了获取知识,获取工作技能,换句话说,在学校学习是为了能够适应社会的需要,通过学习保证能够完成将来的工作,为社会作出贡献。
然而步出象牙塔与步入社会是有很大落差的,能够以进入公司实习来作为缓冲,对我而言是一件幸运的事,通过实训了解到实际工作的需要,使得学习的目的性更加明确,得到的效果也将更好。
几个月的实训就要结束了,然而在这短短了几个月的时间里我学到了不少的东西,这此对于我将来无论在什么地方做什么样的工作都有很大的帮助。
回想过去,展望未来。
我们要不断的总结,只有做到了这一点才能不断的提升自己,以下几点是我根据实训过程中出现的问题总结出来的。
1、端正自己的态度,保持一个良好的心态。
做软件开发需要一个良好的心态,不能有骄燥的心态,遇到困难时不是一味的报怨,我们要想办法来解决问题,如在实训中,在没有学习JSP之前,要把页面上的一个下拉框动态的注入内容,我们可以把页面写到servlet中去,在Servlet写JAVA代码来解决这个问题。
只有自己真正的实践过了,才知道没有自己想的那样难,只是自己畏难而已。
态度决定一个人的一切!
2、写程序还要敢于挑战和承受压力。
在实训中受到压力是再所难免的,项目时间紧,上级要求提前交付产品,这会给我们很大的压力,当项目完成后,你会发现这些压力是你的动力。
对于一个程序,不能只满足于现状,我把功能用某一种方法完成了就可以了,我们还要不断尝试其它方法,打到一个最优的办法,这样会使我们技术快速的成长,有时一个程序或许可以找到源代码,但那终究不是自己的东西,挑战自我,自己写出来。
3、精益求精,掌握方法。
对于一个程序,要对源代码进行不断地完善,在保证项目要求的功能的前提下对程序对行优化。
对我们初学者来说,大量地写程序是必要的,但这些程序或许不是必须的,我们要不断的去学习,学习新方法,新设计模式。
实训过程本身就是一个不断学习的过程,我们学习的不是知识的本身,而是一种方法,授人以渔而非授人以鱼,说的就是这个道理,我们只要理解了其原理,掌握了这种方法,那么以后再遇到类似的问