荟聚奇文、博采众长、见贤思齐
当前位置:公文素材库 > 计划总结 > 工作总结 > 北煤机实习总结

北煤机实习总结

网站:公文素材库 | 时间:2019-05-28 06:40:53 | 移动端:北煤机实习总结

北煤机实习总结

北煤机实习总结

结束了紧张而充实的张煤机实习生活,我们5人实习小组赶赴中煤北京煤矿机械有限公司,开始了为期三个月的北煤机实习生活。

中煤北京煤矿机械有限责任公司是装备公司旗下的另一个煤机生产骨干企业,是国内设计、制造综采液压支架最大的专业厂家之一。近年来,北煤机的液压支架设计能力、工艺保证、制造水平始终是国内同行业的翘楚,率先通过了ISO9001质量管理体系认证,实现了生产规模化、技术装备现代化、职工队伍专业化、管理手段信息化、售后服务网络化,以雄厚的科技资源为依托,始终占领国内外市场制高点。截止目前,公司已设计、制造液压支架支护高度从最低0.55米到最高7.5米,工作阻力从1800KN到18000KN,中心距从1.25到2.05米等不同类型680多种架型8万多架,产品遍布在全国100多个煤炭生产企业,先后出口美国、俄罗斯、印度、孟加拉、越南等国,是国内出口液压支架最多的厂家。

一、现场参观学习

初到北煤机,公司人力资源部安排我们实习小组参观了各个分厂车间,一天的参观使我大体了解了北煤机各分厂的主要生产职能(如图1)和主要产品的实现过程(如图2)。

生产分厂主要生产职能液压元件分厂金属结构分厂下料中心锻造分厂综合产品分厂铸造分厂总装分厂液压控制阀分厂立柱千斤顶的生产、加工液压支架主体结构件的焊接钢板下料管材下料、锻件的生产各种连接件和非标准化配件的生产铸造各类所需产品各类产成品的总体装配生产各类阀体和电液控系统

图1北煤机各分厂主要生产职能客户需求分析外购件产品总确定产品设计开发评审采购原材料机械零件加工锻造铸造机加工热处理电镀机械部件组装调试装调试用户验收用户服务钢板下料结构件组焊结构件焊接注:图中黑点代表监测、测量或检验、试验活动

图2.北煤机产品实现过程流程

二、管理规划部实习

现场参观学习后,我被安排在了管理规划部实习。管理规划部的主要职能包括:制定企业发展规划、日常经营管理、综合统计、土建工程、技改措施管理以及重大项目管理等。

第一周(11.02-11.04)关键词:企业年报

来规划部的第一周,通过对《201*年煤机企业年报》的仔细阅读和分析,我全面了解了国内液压支架企业的基本情况,大体了解了国内主要的支架企业工业总产值、产品结构、销售收入、产量、财务和管理费用、营业利润等生产经营数据。

通过对现有企业的基本经营数据的分析和比较,不难看出,北煤机公司面临着较为严峻的市场竞争环境。从目前来看,挑战除了来自郑煤机、平顶山煤机、平阳重工等传统大型支架企业外,各矿区也陆续大力投资组建液压支架厂,积极争夺市场份额。面对竞争惨烈的市场竞争环境,公司积极完善生产流程、严抓质量管理、转变营销思路推进管理创新已经刻不容缓、迫在眉睫。

第二、三周(11.07-11.18)关键词:“十二五”规划

第二、第三周主要学习了《中煤北煤机“十二五”发展规划》,通过本阶段的学习使我对北煤机企业的发展现状、企业发展的外部环境、企业的总体生产纲领、经营目标规划、市场开发、科技研发、技术改造等产学研战略有了深刻的认识和全面的把握。具体内容如下:

在了解了企业发展现状并结合第一周学习的《201*年煤机企业年报》的相关内容不难看出:虽然公司基本完成了“十一五”规划目标,生产经营能力实现了跨越式增长,经济效益得到了显著提高,但从近年市场的发展状况来看,本企业对市场的预测、对竞争对手的全面掌握、高端产品的比重、产品质量的控制、对市场的反应灵敏度等方面还有待加强。

在企业发展外部环境的学习研究中,我了解了应当就宏观经济环境、行业经济环境、竞争对手企业三个层面的展开分析,并结合企业自身存在的实际问题提出有针对性的解决方案。

企业总体生产纲领和经营目标应结合集团公司的总体战略规划予以制定,应综合考虑企业的产能、市场需求、客户分布等因素,制定的目标既要具有挑战性又要具备现实性。

市场开发不仅要创新营销方法、更要树立以客户为本的营销理念,持续不断地培育忠诚客户;产学研战略不仅要加强对技术研发的大力投入,更要构建和完善教育培训体系、人才激励机制和实施职工素质工程实现企业和员工的共同发展进步。

第四、五周(11.21-12.02)关键词:全面预算

本阶段主要学习了装备公司和北煤机公司《201*年全面预算报告》。通过学习,对主要指标安排的依据和原则有了总体的把握。如:产品的销售价格是根据产品的成本和市场价格来预计;产品的生产成本按照预计的原材料、燃料及动力价格走势及用量编制等。

此外,还对装备公司和北煤机公司主要生产经营指标的安排、主要产品销售价格的预算、主要产品生产成本的预算、财务预算、职工薪酬预算等情况也有了大体的了解,为下一步开展经营方面的相关工作奠定了基础。

第六、七周(12.05-12.09)关键词:考核

第六、七两周主要学习了《201*年北煤机经济责任制承包考核办法》和《201*年10月份北煤机经济责任考核表》。对生产单位和个人的考核范围、内容、兑现方法、考核信息传递体系有了全面的了解,基本掌握了各单项考核和承包责任人考核的基本方法。

考核的对象分为对产生成本的分厂的考核和对市场营销部、煤机技术研究院、工艺技术研究院、招待所的考核。这其中有包括对不同考核单位考核指标选取、考核工资的提取办法和对承包责任者的考核办法等。

考核兑现明确了承包分厂、承包部室各业绩考核指标兑现工资的比例;考核信息的传递体系中,明确了各职能部门需要提交的报表名称、提交进度和责任人等。

第八、九、十周(12.12-12.27)关键词:经营计划、经济运行分析

第七、八两周我重点学习北煤机公司《编制企业经营计划的具体要求》以及《企业经济运行分析报告》的写法。

通过本阶段的学习,我大体了解了北煤机企业经营计划的编制要求、企业生产经营中存在的问题、企业经营计划的指标安排和企业经营管理工作的主要措施和工作重心。对北煤机经营计划的各项数据指标有了大体的了解。

在就《北煤机201*年10月经济运行分析报告》的学习中,我初步了解了企业生产经营方面的基本现状,生产合同的签订及钢材供应情况。大体的了解了下一阶段企业工作的重点。第十一、十二、十三周(01.0201.19)关键词:写实习总结

本阶段,我全面梳理在北煤机三个月来研读、分析的学习资料,将所学内容按照周进度生成《北煤机实习报告》。

结语

为期半年的煤机厂实习生活让我对煤机企业的生产、经营状况有了全面的了解。每一件做工精细、外观精美、质量精益的煤机产品都汇集着全体装备人的勤劳、智慧和汗水。亲眼目睹了企业一线生产、经营的繁忙工作现场后,我不禁对以往在校期间好高骛远,做事浮躁的学习、生活习惯感到自惭形愧。基层工作永远是那么的实际具体,可就是这些每一件看似实际具体的工作高效、完美的落实才成就了产品的完美无瑕、成就了客户对企业的忠实、成就了企业的辉煌成就和永续发展。作为职场新人,我们应时刻保持谦虚谨慎、务实求真的工作态度和生活作风,为企业的长久发展尽个人最大的努力。

扩展阅读:计机081-曾锐-实习总结报告

仲恺农业工程学院

实习总结报告

实习环节毕业实习

院系计算机科学与工程学院班级计算机科学与技术081班学生姓名曾锐

学号201*10214124指导教师陈勇

实习单位广州思普计算机科技有限公司实习时间201*-2-20201*-3-23

二○一二年三月三十日目录

一、实习目的...........................................................................................................................................................1二、单位介绍...........................................................................................................................................................1

2.1实习单位介绍.............................................................................................................................................12.2实习时间.....................................................................................................................................................2三、实习内容...........................................................................................................................................................2

3.1java环境的配置..........................................................................................................................................2

3.1.1windowsxp下配置JDK环境变量.................................................................................................23.1.2Linux下配置JDK环境变量...........................................................................................................33.2HTML基础.................................................................................................................................................4

3.2.1HTML简述......................................................................................................................................43.2.2HTML示例......................................................................................................................................53.3CSS基础.....................................................................................................................................................6

3.3.1CSS简述..........................................................................................................................................63.3.2CSS语法..........................................................................................................................................73.3.2.1CSS定义....................................................................................................................................73.3.2.2选择符组....................................................................................................................................73.3.2.3类选择符....................................................................................................................................73.3.2.4ID选择符..................................................................................................................................83.3.2.5包含选择符...............................................................................................................................83.3.2.6样式表的层叠性.......................................................................................................................93.3.2.7注释:/*...*/.......................................................................................................................93.3.3将样式表加入到网页....................................................................................................................103.3.3.1定义内部样式块对象..............................................................................................................103.3.3.2内联定义(InlineStyles)...................................................................................................113.3.3.3定义链接样式...........................................................................................................................113.3.4几种方式的优先级.......................................................................................................................123.4JavaScript基础..........................................................................................................................................13

3.4.1JavaScript基本概念.......................................................................................................................133.4.2运算符...........................................................................................................................................133.4.3表达式...........................................................................................................................................143.4.4语句...............................................................................................................................................143.4.5函数...............................................................................................................................................143.4.6对象...............................................................................................................................................153.4.7事件...............................................................................................................................................153.4.8变量...............................................................................................................................................163.5JSP(JavaServerPages)..............................................................................................................................16

3.5.1JSP简述.........................................................................................................................................163.5.2JSP技术的优势.............................................................................................................................173.5.3JSP九大内置对象.........................................................................................................................173.5.3.1request对象..........................................................................................................................173.5.3.2response对象........................................................................................................................173.5.3.3session对象..........................................................................................................................183.5.3.4application对象..................................................................................................................193.5.3.5out对象..................................................................................................................................3.5.3.6page对象................................................................................................................................193.5.3.7config对象............................................................................................................................203.5.3.8exception对象......................................................................................................................213.5.3.9pageContext对象..................................................................................................................213.5.4JSP四种属性范围.........................................................................................................................213.5.5JSP两种跳转方式的区别.............................................................................................................223.5.6JSP执行过程.................................................................................................................................233.6Servlet........................................................................................................................................................24

3.6.1Servlet简述....................................................................................................................................243.6.2Servlet生命周期............................................................................................................................243.6.3HttpServlet应用编程接口.............................................................................................................253.7MVC设计模式入门.................................................................................................................................273.8可扩展标记语言(XML)...........................................................................................................................28

3.8.1XML简介......................................................................................................................................283.8.2XML简明语法..............................................................................................................................293.8.3Java中四种操作XML方式的比较..............................................................................................303.8.3.1介绍.........................................................................................................................................303.8.3.2比较.........................................................................................................................................323.8.3.3四种xml操作方式的基本使用方法.......................................................................................323.9Ajax............................................................................................................................................................35

3.9.1Ajax简介........................................................................................................................................353.9.2Ajax实现........................................................................................................................................363.9.2.1.创建XMLHttpRequest方法:...............................................................................................363.9.2.2发送请求.................................................................................................................................373.9.2.3服务器的响应.........................................................................................................................373.9.2.4处理从服务器得到的数据.....................................................................................................383.9.3Ajax的优势与劣势........................................................................................................................383.10JSTL.........................................................................................................................................................40

3.10.1JSTL介绍.....................................................................................................................................403.10.2JSTL隐式对象.............................................................................................................................413.10.3常用函数.....................................................................................................................................42

四、实习总结.........................................................................................................................................................

一、实习目的

Java程序设计是一门应用性很强的专业课,在学习时必须注意理论与实践相结合,为此开设了本次实习,其目的是通过本次实习使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。

通过这次实习进一步了解java开发的相关知识,掌握java开发的基本技术,丰富java开发的实战经验。学习SQL的基础知识及正确的运用方法,和有用的相关技术,提高自己的工作效率。通过实习,巩固大学所学专业的基本知识,提高分析、判断和处理实际问题的能力,锻炼自己的实际动手能力,增强自己的团队协作意识,了解软件开发的思考角度和主要流程。为毕业之后能够更快地进入工作状态并且能够更好的工作,打好一定的基础。

二、单位介绍

2.1实习单位介绍

思普公司成立于201*年,位于华景新城和科韵路两大软件园区,主要从事计算机软件研发、顾问咨询、人力资源服务,公司主要核心团队具备十五年以上的信息服务行业的从业经验,对信息服务行业的业务、过程管理、开发、服务、标准等方面,具备深入的研究。行业经验:成长中的思普公司,从成立至今,逐步在许多重要的领域,充当起重要的角色,先后参与了广电、电信、金融、电力、交通等五大行业的项目,积累了丰富的行业经验和技术经验。公司宗旨:完善的流程制度、不断进取的决心,追求创新以适应变化的市场,使公司能为客户带来优质的服务,为社会创造更多的价值。广州谷度计算机科技有限公司是专门从事以软件业务、教育培训为核心,集软件开发、系统集成、软件离岸外包、信用服务等业务为一体的综合性软件服务企业。目前全面开展以面向外企、电信、金融等行业为主的中高级IT定制化职业培训及人才外包业务。主要向广州、深圳等各大软件企业及珠江三角洲地区的大型外资企业推荐中高端软件开发工程师。已先后为IBM、Oracle、惠普(HP)、花旗软件(CSTS)、上海贝尔、阿尔卡特、亚信科技等软件公司输送了近千名开发人员。

公司核心成员由海外留学人员和来自甲骨文(Oracle)、亚信科技(AsiaInfo)、Sun等国际大公司资深技术人员组成。公司网址:-sipu.com。

2.2实习时间

本次实习时间段为:201*年02月20日至201*年03月23日。

三、实习内容

3.1java环境的配置

通常,我们需要设置三个环境变量:JAVA_HOME、PATH和CLASSPATH。

JAVA_HOME:该环境变量的值就是Java所在的目录,一些Java版的软件和一些Java的工具需要用到该变量,设置PATH和CLASSPATH的时候,也可以使用该变量以方便设置。

PATH:指定一个路径列表,用于搜索可执行文件的。执行一个可执行文件时,如果该文件不能在当前路径下找到,则依次寻找PATH中的每一个路径,直至找到。或者找完PATH中的路径也不能找到,则报错。Java的编译命令(javac),执行命令(java)和一些工具命令(javadoc,jdb等)都在其安装路径下的bin目录中。因此我们应该将该路径添加到PATH变量中。

CLASSPATH:也指定一个路径列表,是用于搜索Java编译或者运行时需要用到的类。在CLASSPATH列表中除了可以包含路径外,还可以包含.jar文件。Java查找类时会把这个.jar文件当作一个目录来进行查找。通常,我们需要把JDK安装路径下的jre/lib/rt.jar(Linux:jre/lib/rt.jar)包含在CLASSPATH中。

PATH和CLASSPATH都指定路径列表,列表中的各项(即各个路径)之间使用分隔符分隔。在Windows下,分隔符是分号(;),而在Linux下,分隔符是冒号(:)。

3.1.1windowsxp下配置JDK环境变量

1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为

D:/java/jdk1.5.0_08;

2.安装完成后,右击“我的电脑”,点击“属性”;3.选择“高级”选项卡,点击“环境变量”;

4.在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”;

5.JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:/java/jdk1.5.0_08,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要设置此变量);

Path使得系统可以在任何路径下识别java命令,设为:%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin

CLASSPATH为java加载类(classorlib)路径,只有类在classpath中,java命令才能识别,设为:

.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar(要加.表示当前路径)6.“开始”->;“运行”,键入“cmd”;

7.键入命令“java-version”,“java”,“javac”几个命令,出现画面,说明环境变量配置成功;8.好了,打完收工。下面开始你的第一个java程序吧。

3.1.2Linux下配置JDK环境变量

假设JDK在Linux下的安装路径是/usr/local/jdk/。那么,安装后的JDK至少会包括如下内容:

Linux下使用“变量名=变量值”设置变量,并使用export命令将其导出为环境变量。为了使每一次登录都自动设置好这些变量,你需要在~/.bash_profile里或者~./bashrc里进行设置,如

exportJAVA_HOME=/usr/local/jdkexportPATH=$JAVA_HOME/bin:$PATHexportCLASSPATH=$JAVA_HOME/jre/lib/rt.jar:.

设置PATH时用的$JAVA_HOME是指替换变量JAVA_HOME的值到$JAVA_HOME所在位置。如上句实际就是exportPATH=/usr/local/jdk/bin:$PATH。这句中$PATH也是同样的作用,不过这里的PATH是指以前设置的PATH变量的值,而非本次设置PATH变量的值。

注意,在CLASSPATH中包含了一个“当前目录(.)”。包含了该目录后,就可以到任意目录下去执行需要用到该目录下某个类的Java程序,即使该路径并未包含在CLASSPATH中也可以。原因很简单:虽然没有明确的把该路径包含在CLASSPATH中,但CLASSPATH中的“.”在此时就代表了该路径,例如

假设在/home/fancy/java目录下有可运行的类HelloJava.class,那么

[fancy@matrixfancy]$exportCLASSPATH=/usr/local/jdk/jre/lib/rt.jar:.//设置CLASSPATH,注意最后的“.”

[fancy@matrixfancy]$cd~/java//转到/home/fancy/java[fancy@matrixjava]$pwd//显示当前目录/home/fancy/java//当前目录是/home/fancy/java[fancy@matrixjava]$javaHelloJava//运行HelloJavaHello,Java//运行结果[fancy@matrixjava]$_

3.2HTML基础

3.2.1HTML简述

文本标记语言,即HTML(HypertextMarkupLanguage),是用于描述网页文档的一种标记语言。

在WWW上的一个超媒体文档称之为一个页面(page)。作为一个组织或个人在万维网上开始点的页面称为主页Homepage,或首页,主页中通常包括有指向其他相关页面或其他节点的指针(超级链接)。在逻辑上将视为一个整体的一系列页面的有机集合称为网站(Website或Site)。

HTML是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,对于不同的浏览器,对同一标记符可能会有不完全相同的解释,因而可能会有不同的显示效果。

HTML之所以称为超文本标记语言,是因为文本中包含了所谓“超级链接”点。所谓超级链接,就是一种URL指针,通过激活(点击)它,可使浏览器方便地获取新的网页。这也是HTML获得广泛应用的最重要的原因之一。

一个网页对应于一个HTML文件,HTML文件以.htm或.html为扩展名。可以使用任何能够生成TXT类型源文件的文本编辑来产生HTML文件。

标准的HTML文件都具有一个基本的整体结构,即HTML文件的开头与结尾标志和HTML的头部与实体2大部分。有3个双标记符用于页面整体结构的确认。

3.2.2HTML示例

打开你的Notepad,新建一个文件,然后拷贝以下代码到这个新文件,然后将这个文件存成first.html。

Titleofpage

Thisismyfirsthomepage.Thistextisbold示例解释:

这个文件的第一个Tag是,这个Tag告诉你的浏览器这是HTML文件的头。文件的最后一个Tag是,表示HTML文件到此结束。

在和之间的内容,是Head信息。Head信息是不显示出来的,你在浏览器里看不到。但是这并不表示这些信息没有用处。比如你可以在Head信息里加上一些关键词,有助于搜索引擎能够搜索到你的网页。

在和之间的内容,是这个文件的标题。你可以在浏览器最顶端的标题栏看到这个标题。

在和之间的信息,是正文。

在和之间的文字,用粗体表示。顾名思义,就是bold的意思。

HTML文件看上去和一般文本类似,但是它比一般文本多了Tag,比如,等,通过这些Tag,可以告诉浏览器如何显示这个文件。

其它的HTML标签可以通过获取标签的使用教程,这里不再叙述。

3.3CSS基础

3.3.1CSS简述

CSS(CascadingStyleSheet)可译为“层叠样式表”或“级联样式表”,它定义如何显示HTML元素,用于控制Web页面的外观。通过使用CSS实现页面的内容与表现形式分离,极大提高了工作效率。样式存储在样式表中,通常放在部分或存储在外部CSS文件中。作为网页标准化设计的趋势,CSS取得了浏览器厂商的广泛支持,正越来越多的被应用到网页设计中去。

层叠式表的特点:1、便于页面的修改。2、便于页面风格的统一。3、减少网页的体积。

为什么叫层叠?

在页面显示的过程中,有很多的样式作用在页面元素上,这些样式来自不同的地方。浏览器自己有默认的样式,网页作者有自己写的样式,用户也可能有自己的样式,但是最终显示的样式是其中之一,它们之间产生了冲突,CSS通过一个称为层叠(cascade)的过程处理这种冲突。层叠给每个规则分配一个重要度:作者的样式表被认为是最重要的,其次是用户的样式表,最后是浏览器或用户代理使用的默认样式表。为了让用户有更多的控制能力,可以通过将任何规则指定为!important来提高它的重要度,让它优先于任何规则,甚至优先于作者加上!important标志的规则。因此,层叠采用以下重要度次序:标为!important的用户样式>标为!important的作者样式>作者样式>用户样式>浏览器/用户代理应用的样式。然后,根据选择器的特殊性决定规则的次序。具有更特殊选择器的规则优先于具有比较一般的选择器的规则。如果两个规则的特殊性相同,那么后定义的规则优先。

由此可见,层叠是指不同的优先级的构成的层的叠加。

3.3.2CSS语法

3.3.2.1CSS定义

CSS的定义是由三个部分构成:选择符(selector),属性(properties)和属性的取值(value)。语法:selector{property:value}(选择符{属性:值})

例子:body{color:black},此例的效果是使页面中的文字为黑色。

如果属性的值是多个单词组成,必须在值上加引号,比如字体的名称经常是几个单词的组合:

例子:p{font-family:"sansserif"}(定义段落字体为sansserif)

如果需要对一个选择符指定多个属性时,我们使用分号将所有的属性和值分开:例子:p{text-align:center;color:red}(段落居中排列;并且段落中的文字为红色)

3.3.2.2选择符组

可以把相同属性和值的选择符组合起来书写,用逗号将选择符分开,这样可以减少样式重复定义:

h1,h2,h3,h4,h5,h6{color:green}(这个组里包括所有的标题元素,每个标题元素的文字都为绿色)

p,table{font-size:9pt}(段落和表格里的文字尺寸为9号字)效果完全等效于:p{font-size:9pt}table{font-size:9pt}

3.3.2.3类选择符

用类选择符你能够把相同的元素分类定义不同的样式,定义类选择符时,在自定类的名称前面加一个点号。假如你想要两个不同的段落,一个段落向右对齐,一个段落居中,你可以先定义两个类:

p.right{text-align:right}p.center{text-align:center}

然后用不在不同的段落里,只要在HTML标记里加入你定义的class参数:这个段落向右对齐的这个段落是居中排列的

3.3.2.4ID选择符

在HTML页面中ID参数指定了某个单一元素,ID选择符是用来对这个单一元素定义单独的样式。

ID选择符的应用和类选择符类似,只要把CLASS换成ID即可。将上例中类用ID替代,ID只能在一个页面中出现一次,而class可以多次运用.

定义ID选择符要在ID名称前加上一个“#”号。和类选择符相同,定义ID选择符的属性也有两种方法。下面这个例子,ID属性将匹配所有id="intro"的元素:

#intro{

font-size:110%;font-weight:bold;color:#0000ff;

background-color:transparent

}(字体尺寸为默认尺寸的110%;粗体;蓝色;背景颜色透明)下面这个例子,ID属性只匹配id="intro"的段落元素:p#intro{}

注意:ID选择符局限性很大,只能单独定义某个元素的样式,一般只在特殊情况下使用。

3.3.2.5包含选择符

可以单独对某种元素包含关系定义的样式表,元素1里包含元素2,这种方式只对在元素1里的元素2定义,对单独的元素1或元素2无定义,例如:

tablea{font-size:12px}

在表格内的链接改变了样式,文字大小为12像素,而表格外的链接的文字仍为默认大小。

8

font-size:110%;font-weight:bold;color:#0000ff;

background-color:transparent

3.3.2.6样式表的层叠性

层叠性就是继承性,样式表的继承规则是外部的元素样式会保留下来继承给这个元素所

包含的其他元素。事实上,所有在元素中嵌套的元素都会继承外层元素指定的属性值,有时会把很多层嵌套的样式叠加在一起,除非另外更改。例如在DIV标记中嵌套P标记:div{color:red;font-size:9pt}……

这个段落的文字为红色9号字

(P元素里的内容会继承DIV定义的属性)

注意:有些情况下内部选择符不继承周围选择符的值,但理论上这些都是特殊的。例如,上边界属性值是不会继承的,直觉上,一个段落不会同文档BODY一样的上边界值。另外,当样式表继承遇到冲突时,总是以最后定义的样式为准。如果上例中定义了P的颜色:

div{color:red;font-size:9pt}p{color:blue}……

这个段落的文字为蓝色9号字

可以看到段落里的文字大小为9号字是继承div属性的,而color属性则依照最后定义的。不同的选择符定义相同的元素时,要考虑到不同的选择符之间的优先级。ID选择符,类选择符和HTML标记选择符,因为ID选择符是最后加上元素上的,所以优先级最高,其次是类选择符。如果想超越这三者之间的关系,可以用!important提升样式表的优先权,例如:p{color:#FF0000!important}.blue{color:#0000FF}#id1{color:#FFFF00}

同时对页面中的一个段落加上这三种样式,它最后会依照被!important申明的HTML标记选择符样式为红色文字。如果去掉!important,则依照优先权最高的ID选择符为黄色文字。

3.3.2.7注释:/*...*/

可以在CSS中插入注释来说明你代码的意思,注释有利于你或别人以后编辑和更改代码时理解代码的含义。在浏览器中,注释是不显示的。CSS注释以"/*"开头,以"*/"结尾,如下:

/*定义段落样式表*/

p{

text-align:center;/*文本居中排列*/

color:black;/*文字为黑色*/

font-family:arial/*字体为arial*/

}

3.3.3将样式表加入到网页

可以用以下几种方式将样式表加入网页。而最接近目标的样式定义优先权越高。高优先权样式将继承低优先权样式的未重叠定义而覆盖重叠的定义。例外请参阅!important声明。

3.3.3.1定义内部样式块对象

可以在HTML文档的和标记之间插入一个...块对象。示例如下:

文档标题正文内容

这里将style对象的type属性设置为"text/css",是允许不支持这类型的浏览器忽略样式表

单。

3.3.3.2内联定义(InlineStyles)

内联定义即是在对象的标记内使用对象的style属性定义适用其的样式表属性。示例:

Thisisaparagraph

3.3.3.3定义链接样式

CSS为一些特殊效果准备了特定的工具,我们称之为“伪类”。其中有几项是我们经常用到的,下面我们就详细介绍一下经常用于定义链接样式的四个伪类,它们分别是:

:link

:visited:hover:active

定义链接样式,其中必不可少的就是超级链接中的锚标签--a,锚标签和伪类链接起来书写的方法就是定义链接样式的基础方法,它们的写法如下:

a:link,定义正常链接的样式;

a:visited,定义已访问过链接的样式;a:hover,定义鼠标悬浮在链接上时的样式;a:active,定义鼠标点击链接时的样式。

示例:

a:link{

color:#FF0000;

text-decoration:underline;}

a:visited{color:#00FF00;text-decoration:none;}

a:hover{color:#000000;text-decoration:none;}

a:active{color:#FFFFFF;text-decoration:none;}

3.3.3.4导入样式(ImportStyles)

此方法与链入外部样式的功能基本相同,只是语法和实现方式上有差别。

文档标题@importurl(css.css);

@importurl("csss.css");//单引号也可以@importcss,css;

@import"css.css";//单引号也可以

3.3.4几种方式的优先级

内联样式优先级最高,其次是链接样式,再次是内嵌式,最后是导入样式。

3.4JavaScript基础

3.4.1JavaScript基本概念

JavaScript是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了JavaScript,提供了数据验证的基本功能。

JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。它最初由网景公司的BrendanEich设计,是一种动态、弱类型、基于原型的语言,内置支持类。JavaScript是Sun公司的注册商标。[1]Ecma国际以JavaScript为基础制定了ECMAScript标准。JavaScript也可以用于其他场合,如服务器端编程。完整的JavaScript实现包含三个部分:ECMAScript,文档对象模型,字节顺序记号。

3.4.2运算符

运算符就是完成操作的一系列符号,它有七类:

赋值运算符(=,+=,-=,*=,/=,%=,=,|=,&=)、算术运算符(+,-,*,/,++,--,%)、比较运算符(>,

5)2个null,或者2个都是未定义的,那么他们相等。

而“===”是全同运算符,全同运算符遵循等同运算符的比较规则,但是它不对运算数进行类型转换,当两个运算数的类型不同时,返回false;只有当两个运算数的类型相同的时候,才遵循等同运算符的比较规则进行比较。

例如:null==undefined会返回真,但是null===undefined就会返回假!

3.4.3表达式

运算符和操作数的组合称为表达式,通常分为四类:赋值表达式、算术表达式、布尔表达式和字符串表达式。

3.4.4语句

JavaScript程序是由若干语句组成的,语句是编写程序的指令。JavaScript提供了完整的基本编程语句,它们是:

赋值语句、switch选择语句、while循环语句、for循环语句、foreach循环语句、dowhile循环语句、break循环中止语句、continue循环中断语句、with语句、try...catch语句、

if语句(if..else,if...elseif...)、let语句。

3.4.5函数

函数是命名的语句段,这个语句段可以被当作一个整体来引用和执行。使用函数要注意

以下几点:

1)函数由关键字function定义(也可由Function构造函数构造);

2)使用function关键字定义的函数在一个作用域内是可以在任意处调用的(包括定义函数的语句前);而用var关键字定义的必须定义后才能被调用;

3)函数名是调用函数时引用的名称,它对大小写是敏感的,调用函数时不可写错函数名;4)参数表示传递给函数使用或操作的值,它可以是常量,也可以是变量,也可以是函数,在函数内部可以通过arguments对象(arguments对象是一个伪数组,属性callee引用被调用的函数)访问所有参数;

5)return语句用于返回表达式的值。

6)yield语句扔出一个表达式,并且中断函数执行直到下一次调用next。

一般的函数都是以下格式:functionmyFunction(params){//执行的语句}

函数表达式:

varmyFunction=function(params){//执行的语句}

varmyFunction=function(){//执行的语句}

myFunction();//调用函数

匿名函数,它常作为参数在其他函数间传递:window.addEventListener("load",function(){//执行的语句},false);

3.4.6对象

JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直

观、模块化和可重复使用的方式进行程序开发。

一组包含数据的属性和对属性中包含数据进行操作的方法,称为对象。比如要设定网页的背景颜色,所针对的对象就是document,所用的属性名是bgcolor,如document.bgcolor="blue",就是表示使背景的颜色为蓝色。

3.4.7事件

用户与网页交互时产生的操作,称为事件。事件可以由用户引发,也可能是页面发生改

变,甚至还有你看不见的事件(如Ajax的交互进度改变)。绝大部分事件都由用户的动作所引发,如:用户按鼠标的按键,就产生click事件,若鼠标的指针在链接上移动,就产生mouseover事件等等。在JavaScript中,事件往往与事件处理程序配套使用。

而对事件的处理,W3C的方法是用addEventListener()函数,它有三个参数:事件,引发

的函数,是否使用事件捕捉。为了安全性,建议将第三个参数始终设置为false;

传统的方法就是定义元素的on...事件,它就是W3C的方法中的事件参数前加一个“on”。而IE的事件模型使用attachEvent和dettachEvent对事件进行绑定和删除。JavaScript中事件还分捕获和冒泡两个阶段,但是传统绑定只支持冒泡事件。

3.4.8变量

如varmyVariable="somevalue";

变量有它的类型,上例中myVariable的类型为string(字符串)javascript支持的常用类型还有:object:对象array:数组number:数;

boolean:布尔值,只有true和false两个值,是所有类型中占用内存最少的;null:一个空值,唯一的值是null;undefined:没有定义和赋值的变量

实际上JavaScript的变量是弱变量类型,你赋值给他的是字符串,他就是String.

是数字他就是整型。是true和false他就是boolean型(注意,不能加引号,不然会被当成字符串处理)。

3.5JSP(JavaServerPages)

3.5.1JSP简述

JSP技术使用JAVA编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。

JSP与JavaServlet一样,是在服务器端执行的,通常返回给客户端的就是一个

HTML文本,因此客户端只要有浏览器就能浏览。

3.5.2JSP技术的优势

(1)一次编写,到处运行。除了系统之外,代码不用做任何更改。

(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的。

(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。

(4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。

(5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVABEANS组件来实现复杂商务功能。

3.5.3JSP九大内置对象

3.5.3.1request对象

该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交信息。它是HttpServletRequest的实例。

下面介绍request的常用方法:

1,getParameter();使用Stringstr=request.getParameter();2,setAttribute();和getAttribute();removeAttribute();3.getMethod();getProtocol();

4.getReqeustURI();getRemoteAddr();getServerPort();和getServerName();

3.5.3.2response对象

对客户的请求做出动态的响应,向客户端发送数据。客户端浏览器每访问一次Web

服务器的页面都会提交一次请求,与request对象对应的是response对象,response对象可以用来对客户的请求作出响应,向客户端发送数据。输出的数据可以是各种数据类

型,甚至是文件,这可以通过page指令的contentType属性或是response的setContentType()方法来设置。

response对象常用的方法:

3.5.3.3session对象

session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。

从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。

2.session对象的ID:当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在Cookie中,这样session对象和客户之间就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏览器后,服务器端该客户的session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的session对象。

3.session对象存在一定时间过期问题,所以存在session中的名值对会在一定时间后失去,可以通过更改session有效时间来避免这种情况。同时编程时尽量避免将大量有效信息存储在session中,request是一个不错的替代对象。

3.5.3.4application对象

服务器启动后就产生了这个application对象,当客户在所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。

application对象常用方法:

(1)publicvoidsetAttribute(Stringkey,Objectobj):将参数Object指定的对象obj添加到application对象中,并为添加的对象指定一个索引关键字。

(2)publicObjectgetAttribute(Stringkey):获取application对象中含有关键字的对象。

3.5.3.5out对象

out对象用于输出数据,它可以是javax.servlet.jsp.JspWriter的一个实例.out对象的范围是page。

从java.io.Writer拓展而来的公共抽象类JspWriter效仿了java.io.BufferedWriter和java.io.PrintWriter中的某些功能.但是,不同之处在于它会在打印方法中抛出(throw)java.io.IOException异常,而PrintWriter不这样做。

JSP中的out对象就是这种类型的.如果page指令选择了autoflush="true",那么当出现由于当前的操作不清空缓存而造成缓冲区溢出的情况时,这个类的所有I/O操作会自动清空缓冲区的内容.如果autoflush="false",那么当操作造成了缓冲区溢出时,这个类的所有的I/O操作将抛出一个IOException。

3.5.3.6page对象

page指令是针对当前页面的指令,常用的page指令有8个:

1.设置jsp中用到的语言,用到的是java,也是目前唯一有效的设定。

2.设置目前jsp要继承的父类,一般不需要设置,在默认情况下,jsp页面默认的父类是HttpJspBase。

3.jsp页面所用到的类。

4.设置该jsp页面出现异常时所要转到的页面,如果没设定,容器将使用当前的页面显示错误信息。

5.设置该jsp页面是否作为错误显示页面,默认是false,如果设置为true,容器则会在当前页面生成一个exception对象。

6.设置页面文件格式和编码方式。

7.设置容器以多线程还是单线程运行该jsp页面,默认是true,是多线程。设置为false,则以单线程的方式运行该jsp页面。

8.设置该jsp页面是否可以用到session对象(jsp内置对象,为web容器创建),默认是true,能用到session.设置为false,则用不到。

3.5.3.7config对象

config对象是在一个servlet程序初始化时,JSP引擎向它传递消息用的,此消息包括servlet程序初始化时所需要的参数及服务器的有关信息。Config对象其实是实现javax.servlet.ServletConfig接口的类的实例对象,它可以使用下面的3个方法。

1)getServletContext()

调用这个方法可以返回一个含有服务器相关信息的ServletContext对象,即JSP内置对象application对象。

2)getInitParameter(Stringname)

调用这个方法可以返回servlet程序初始参数的值,参数名由name指定。3)getInitParameterNames()

调用这个方法可以返回一个枚举对象,该对象由servlet程序初始化所需要的所有参数的名称构成。

通过如下所示的方式获取JSP/Servlet程序初始化所需要的参数名称和它们的值:”+config.getInitParameter(paraName)+””);}%>

config对象在Servlet程序中的作用很大,不过在Servlet程序中没有内置对象这一说,严格的说法应该是ServletConfig接口在servlet程序中作用很大。但是JSP页面中的config对象的作用很小。其中的一个作用:它可以调用getServletContext()方法获得application对象。

3.5.3.8exception对象

exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象

方法说明:

1StringgetMessage()返回描述异常的消息2StringtoString()返回关于异常的简短描述消息3voidprintStackTrace()显示异常及其栈轨迹

4ThrowableFillInStackTrace()重写异常的执行栈轨迹

3.5.3.9pageContext对象

javax.servlet.jsp.PageContext的实例,该对象代表该JSP页面上下文,使用该对

象可以访问页面中的共享数据。常用的方法有getServletContext()和getServletConfig()等。

3.5.4JSP四种属性范围

在JSP中提供了四种属性保存范围----在一个页面内:page

----在一次服务请求范围内:request----在一次会话范围内:session

----在一个应用服务器范围内:application最重要的概念:四种属性保存范围:

publicvoidsetAttribute(Stringname,Objectvalue)属性名为字符串,属性值可以为任意对象

publicObjectgetAttribute(Stringname)

page范围:在JSP中设置一个页的属性范围,必须通过pageContext完成,PageContext属性范围是最重要的JSP属性之一,但是如果使用纯粹的JSP代码开发,此属性显示不出用处,其发挥作用在Struts,WebWork中。

request将属性保存在一次请求范围之内,但必须使用服务器端跳转:应用点:MVC设计模式、Struts、Webwork。

session:只要设置上去,则不管是什么跳转,都可以取得属性,主要用于验证用户是否登陆。EMAIL--->用户需要先进行登陆,登陆成功后再编辑邮件。与session有关的任何打开的页面都可以取得session

application属性范围,只要设置一次,则所有的页面窗口都可以取得数据。application、session、request都与要跨多个页,属性保存是有内存开销的,设置过多的application或每一个session保存过多的对象,性能就降低了。

原则:能用request就不要用session,能用session就不要用application

application应用:在线人员统计、在线人员名单列表,要释放application资源,只能重新启动服务器。

3.5.5JSP两种跳转方式的区别

1,

服务器端跳转,地址栏不改变;执行到跳转语句后无条件立刻跳转,之后的代码不再被执行;如果使用forward跳转,则一定要在跳转之前释放掉全部的资源;使用forward时,request设置的属性依然能保留在下一个页面(setAttribute);通过,传递参数。

2,response.sendRedirect("地址")

客户端跳转,地址栏改变;所有代码执行完毕后再跳转;不能保存request属性,因为地址改变了。使用客户端跳转,可以使用重写URL将内容传递。

转发(也称为服务器端跳转):

重定向(也称为客户端跳转):

3.5.6JSP执行过程

JSP内部执行过程:

3.6Servlet

3.6.1Servlet简述

Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。Servlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。

服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(CGI(CommonGatewayInterface))应用程序完成的。然而,在服务器上运行Java,这种程序可使用Java编程语言实现。在通信量大的服务器上,Javaservlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。

最早支持Servlet技术的是JavaSoft的JavaWebServer。此后,一些其它的基于Java的WebServer开始支持标准的ServletAPI。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:

1.客户端发送请求至服务器端;2.服务器将请求信息发送至Servlet;

3.Servlet生成响应内容并将其传给Server。响应内容动态生成,通常取决于客户端的请求;

4.服务器将响应返回给客户端.

Servlet看起来像是通常的Java程序。Servlet导入特定的属于JavaServletAPI的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度讲,Servlet也被称为FacelessObject。

一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。

3.6.2Servlet生命周期

从Tomcat处理用户请求,我们可以清晰的看到容器Servlet的生命周期管理过程:1、客户发出请求>Web服务器转发到Web容器Tomcat;

2、Tomcat主线程对转发来用户的请求做出响应创建两个对象:HttpServletRequest和HttpServletResponse;

3、从请求中的URL中找到正确Servlet,Tomcat为其创建或者分配一个线程,同时把2创建的两个对象传递给该线程;

4、Tomcat调用Servlet的service()方法,根据请求参数的不同调用doGet()或者doPost()方法;

5、假设是HTTPGET请求,doGet()方法生成静态页面,并组合到响应对象里;6、Servlet线程结束,Tomcat将响应对象转换为HTTP响应发回给客户,同时删除请求和响应对象。

从该过程中,我们可以理解Servlet的生命周期:Servlet类加载(对应3步);Servlet实例化(对应3步);调用init方法(对应3步);调用service()方法(对应4、5步);调用destroy()方法(对应6步)。

3.6.3HttpServlet应用编程接口

HttpServlet使用一个HTML表单来发送和接收数据。要创建一个HttpServlet,请扩展HttpServlet类,该类是用专门的方法来处理HTML表单的GenericServlet的一个子类。HTML表单是由和标记定义的。表单中典型地包含输入字段(如文本输入字段、复选框、单选按钮和选择列表)和用于提交数据的按钮。当提交信息时,它们还指定服务器应执行哪一个Servlet(或其它的程序)。HttpServlet类包含init()、destroy()、service()等方法。其中init()和destroy()方法是继承的。

(1)init()方法

在Servlet的生命期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。

缺省的init()方法通常是符合要求的,但也可以用定制init()方法来覆盖它,典型的是管理服务器端资源。例如,可能编写一个定制init()来只用于一次装入GIF图像,改进Servlet返回GIF图像和含有多个客户机请求的性能。另一个示例是初始化数据库连接。缺省的init()方法设置了Servlet的初始化参数,并用它的ServletConfig对象参

数来启动配置,因此所有覆盖init()方法的Servlet应调用super.init()以确保仍然执行这些任务。在调用service()方法之前,应确保已完成了init()方法。

(2)service()方法

service()方法是Servlet的核心。每当一个客户请求一个HttpServlet对象,该对象的service()方法就要被调用,而且传递给这个方法一个"请求"(ServletRequest)对象和一个"响应"(ServletResponse)对象作为参数。在HttpServlet中已存在service()方法。缺省的服务功能是调用与HTTP请求的方法相应的do功能。例如,如果HTTP请求方法为GET,则缺省情况下就调用doGet()。Servlet应该为Servlet支持的HTTP方法覆盖do功能。因为HttpServlet.service()方法会检查请求方法是否调用了适当的处理方法,不必要覆盖service()方法。只需覆盖相应的do方法就可以了。

Servlet的响应可以是下列几种类型:

一个输出流,浏览器根据它的内容类型(如text/HTML)进行解释。一个HTTP错误响应,重定向到另一个URL、servlet、JSP。(3)doGet()方法

当一个客户通过HTML表单发出一个HTTPGET请求或直接请求一个URL时,doGet()方法被调用。与GET请求相关的参数添加到URL的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用doGet()方法。

(4)doPost()方法

当一个客户通过HTML表单发出一个HTTPPOST请求时,doPost()方法被调用。与POST请求相关的参数作为一个单独的HTTP请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用doPost()方法。

(5)destroy()方法

destroy()方法仅执行一次,即在服务器停止且卸装Servlet时执行该方法。典型的,将Servlet作为服务器进程的一部分来关闭。缺省的destroy()方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源。例如,如果Servlet在运行时会累计统计数据,则可以编写一个destroy()方法,该方法用于在未装入Servlet时将统计数字保存在文件中。另一个示例是关闭数据库连接。

当服务器卸装Servlet时,将在所有service()方法调用完成后,或在指定的时间间隔过后调用destroy()方法。一个Servlet在运行service()方法时可能会产生其它的线程,因此请确认在调用destroy()方法时,这些线程已终止或完成。

(6)GetServletConfig()方法

GetServletConfig()方法返回一个ServletConfig对象,该对象用来返回初始化参数和ServletContext。ServletContext接口提供有关servlet的环境信息。

(7)GetServletInfo()方法

GetServletInfo()方法是一个可选的方法,它提供有关servlet的信息,如作者、版本、版权。

当服务器调用sevlet的Service()、doGet()和doPost()这三个方法时,均需要"请求"和"响应"对象作为参数。"请求"对象提供有关请求的信息,而"响应"对象提供了一个将响应信息返回给浏览器的一个通信途径。

javax.servlet软件包中的相关类为ServletResponse和ServletRequest,而javax.servlet.http

软件包中的相关类为

HttpServletRequest

HttpServletResponse。Servlet通过这些对象与服务器通信并最终与客户机通信。Servlet能通过调用"请求"对象的方法获知客户机环境,服务器环境的信息和所有由客户机提供的信息。Servlet可以调用"响应"对象的方法发送响应,该响应是准备发回客户机的。

3.7MVC设计模式入门

MVC(Model-View-Controller)应用程序结构被用来分析分布式应用程序的特征。这种抽象结构能有助于将应用程序分割成若干逻辑部件,使程序设计变得更加容易。

MVC结构提供了一种按功能对各种对象进行分割的方法(这些对象是用来维护和表现数据的),其目的是为了将各对象间的耦合程度减至最小。MVC结构本来是为了将传统的输入(input)、处理(processing)、输出(output)任务运用到图形化用户交互模型中而设计的。但是,将这些概念运用于基于Web的企业级多层应用领域也是很适合的。

在MVC结构中,模型(Model)代表应用程序的数据(data)和用于控制访问和修改这些数据的业务规则(businessrule)。通常模型被用来作为对现实世界中一个处理过程的软件近似,当定义一个模型时,可以采用一般的简单的建模技术。

当模型发生改变时,它会通知视图(View),并且为视图提供查询模型相关状态的能力。同时,它也为控制器(Controller)提供访问封装在模型内部的应用程序功能的能力。

一个视图(View)用来组织模型的内容。它从模型那里获得数据并指定这些数据如何表现。当模型变化时,视图负责维持数据表现的一致性。视图同时将用户要求告知控制器(Controller)。

控制器(Controller)定义了应用程序的行为;它负责对来自视图的用户要求进行解释,并把这些要求映射成相应的行为,这些行为由模型负责实现。在独立运行的GUI客户端,用户要求可能是一些鼠标单击或是菜单选择操作。在一个Web应用程序中,它们的表现形式可能是一些来自客户端的GET或POST的HTTP请求。模型所实现的行为包括处理业务和修改模型的状态。根据用户要求和模型行为的结果,控制器选择一个视图作为对用户请求的应答。通常一组相关功能集对应一个控制器。

基于MVC结构的框架中各组件的责任及相互关系:

3.8可扩展标记语言(XML)

3.8.1XML简介

可扩展标记语言(ExtensibleMarkupLanguage,XML),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML是标准通用标记语言(SGML)的子集,非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

XML与Access,Oracle和SQLServer等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。

XML与HTML的设计区别是:XML是用来存储数据的,重在数据本身。而HTML是用来定义数据的,重在数据的显示模式。

XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、MacOS,Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。

3.8.2XML简明语法

SGML常用来定义针对HTML的文档类型定义(DTD),同时它也常用于编写XML的DTD。SGML的问题就在于,它允许出现一些奇怪的语法,这让创建HTML的解析器成为一个大难题:

1某些起始标签不允许出现结束标签,例如HTML中标签。包含了结束标签就会出现错误。

2某些起始标签可以选择性出现结束标签或者隐含了结束标签

3某些起始标签要求必须出现结束标签,例如HTML中标签。

4标签可以以任何顺序嵌套。即使结束标签不按照起始标签的逆序出现也是允许的。5某些特性要求必须包含值,例如中的src特性。6某些特性不要求一定有值,例如中的nowrap特性。

7定义特性的两边有没有加上双引号都是可以的,所以和都是允许的。

这些问题使建立一个SGML语言的解析器变成了一项艰巨的任务。判断何时应用以上规则的困难导致了SGML语言的定义一直停滞不前。以这些问题作为出发点,XML逐渐步入我们的视野。

XML去掉了之前令许多开发人员头疼的SGML的随意语法。在XML中,采用了如下的语法:

1任何的起始标签都必须有一个结束标签。

2可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如。XML解析器会将其翻译成。3标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如

thisisasamplestring。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。4所有的特性都必须有值。

5所有的特性都必须在值的周围加上双引号。

3.8.3Java中四种操作XML方式的比较

3.8.3.1介绍

1)dom(jaxpcrimson解析器)

dom是用与平台和语言无关的方式表示xml文档的官方w3c标准。dom是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而dom被认为是基于树或基于对象的。dom以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像sax那样是一次性的处理。dom使用起来也要简单得多。

2)sax

sax处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,sax还比它的替代者dom快许多。

选择dom还是选择sax?对于需要自己编写代码来处理xml文档的开发人员来说,选择dom还是sax解析模型是一个非常重要的设计决策。dom采用建立树形结构的方式访问xml文档,而sax采用的事件模型。

dom解析器把xml文档转化为一个包含其内容的树,并可以对树进行遍历。用dom解析模型的优点是编程容易,开发人员只需要调用建树的指令,然后利用navigationapis访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用dom解析器的时候需要处理整个xml文档,所以对性能和内存的要求比较高,尤其是遇到很大的xml文件的时候。由于它的遍历能力,dom解析器常用于xml文档需要频繁的改变的服务中。

sax解析器采用了基于事件的模型,它在解析xml文档的时候可以触发一系列的事件,

当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。sax对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时,sax这种扩展能力得到了更好的体现。但用sax解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。

3)jdom()

jdom的目的是成为java特定文档模型,它简化与xml的交互并且比使用dom实现更快。由于是第一个java特定模型,jdom一直得到大力推广和促进。正在考虑通过“java规范请求jsr-102”将它最终用作“java标准扩展”。从201*年初就已经开始了jdom开发。jdom与dom主要有两方面不同。首先,jdom仅使用具体类而不使用接口。这在某些方面简化了api,但是也限制了灵活性。第二,api大量使用了collections类,简化了那些已经熟悉这些类的java开发者的使用。

jdom文档声明其目的是“使用20%(或更少)的精力解决80%(或更多)java/xml问题”(根据学习曲线假定为20%)。jdom对于大多数java/xml应用程序来说当然是有用的,并且大多数开发者发现api比dom容易理解得多。jdom还包括对程序行为的相当广泛检查以防止用户做任何在xml中无意义的事。然而,它仍需要您充分理解xml以便做一些超出基本的工作(或者甚至理解某些情况下的错误)。这也许是比学习dom或jdom接口都更有意义的工作。

jdom自身不包含解析器。它通常使用sax2解析器来解析和验证输入xml文档(尽管它还可以将以前构造的dom表示作为输入)。它包含一些转换器以将jdom表示输出成sax2事件流、dom模型或xml文本文档。jdom是在apache许可证变体下发布的开放源码。

4)dom4j()

虽然dom4j代表了完全独立的开发结果,但最初,它是jdom的一种智能分支。它合并了许多超出基本xml文档表示的功能,包括集成的xpath支持、xmlschema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过dom4japi和标准dom接口具有并行访问功能。从201*下半年开始,它就一直处于开发之中。为支持所有这些功能,dom4j使用接口和抽象基本类方法。dom4j大量使用了api中的collections类,但是在许多情况下,它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是,虽然dom4j付出了更复杂的api的代价,但是它提供了比jdom大得多的灵活性。

在添加灵活性、xpath集成和对大文档处理的目标时,dom4j的目标与jdom是一样的:针对java开发者的易用性和直观操作。它还致力于成为比jdom更完整的解决方案,实现

在本质上处理所有java/xml问题的目标。在完成该目标时,它比jdom更少强调防止不正确的应用程序行为。

dom4j是一个非常非常优秀的javaxmlapi,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的java软件都在使用dom4j来读写xml,特别值得一提的是连sun的jaxm也在用dom4j。

3.8.3.2比较

1)dom4j性能最好,连sun的jaxm也在用dom4j。目前许多开源项目中大量采用dom4j,例如大名鼎鼎的hibernate也用dom4j来读取xml配置文件。如果不考虑可移植性,那就采用dom4j.

2)jdom和dom在性能测试时表现不佳,在测试10m文档时内存溢出。在小文档情况下还值得考虑使用dom和jdom。虽然jdom的开发者已经说明他们期望在正式发行版前专注性能问题,但是从性能观点来看,它确实没有值得推荐之处。另外,dom仍是一个非常好的选择。dom实现广泛应用于多种编程语言。它还是许多其它与xml相关的标准的基础,因为它正式获得w3c推荐(与基于非标准的java模型相对),所以在某些类型的项目中可能也需要它(如在javascript中使用dom)。

3)sax表现较好,这要依赖于它特定的解析方式-事件驱动。一个sax检测即将到来的xml流,但并没有载入到内存(当然当xml流被读入时,会有部分文档暂时隐藏在内存中)。

3.8.3.3四种xml操作方式的基本使用方法xml文件:

<?xmlversion="1.0"encoding="gb2312"?>

<result><value>

<no>a1234</no>

<addr>广东省xx县xx镇xx路x段xx号</addr></value><value>

<no>b1234</no>

<addr>广东省xx市xx乡xx村xx组</addr></value></result>

1)dom

importjava.io.*;importjava.util.*;

importorg.w3c.dom.*;

importjavax.xml.parsers.*;

publicclassmyxmlreader{

publicstaticvoidmain(stringarge[]){

longlasting=system.currenttimemillis();try{

filef=newfile("data_10k.xml");documentbuilderfactoryfactory=documentbuilderfactory.newinstance();

documentbuilderbuilder=factory.newdocumentbuilder();documentdoc=builder.parse(f);

nodelistnl=doc.getelementsbytagname("value");for(inti=0;i<nl.getlength();i++){system.out.print("车牌号码:"+doc.getelementsbytagname("no").item(i).getfirstchild().getnodevalue());system.out.println("车主地址:"+doc.getelementsbytagname("addr").item(i).getfirstchild().getnodevalue());}

}catch(exceptione){e.printstacktrace();}2)sax

importorg.xml.sax.*;

importorg.xml.sax.helpers.*;importjavax.xml.parsers.*;

publicclassmyxmlreaderextendsdefaulthandler{java.util.stacktags=newjava.util.stack();publicmyxmlreader(){super();}

publicstaticvoidmain(stringargs[]){

longlasting=system.currenttimemillis();try{

saxparserfactorysf=saxparserfactory.newinstance();saxparsersp=sf.newsaxparser();

myxmlreaderreader=newmyxmlreader();

sp.parse(newinputsource("data_10k.xml"),reader);}catch(exceptione){e.printstacktrace();}

system.out.println("运行时间:"+(system.currenttimemillis()-lasting)+"毫秒");}

publicvoidcharacters(charch[],intstart,intlength)throwssaxexception{

stringtag=(string)tags.peek();if(tag.equals("no")){

system.out.print("车牌号码:"+newstring(ch,start,length));}

if(tag.equals("addr")){

system.out.println("地址:"+newstring(ch,start,length));}}

publicvoidstartelement(stringuri,stringlocalname,stringqname,attributesattrs){

tags.push(qname);}}

3)jdom

importjava.io.*;importjava.util.*;importorg.jdom.*;

importorg.jdom.input.*;publicclassmyxmlreader{

publicstaticvoidmain(stringarge[]){

longlasting=system.currenttimemillis();try{

saxbuilderbuilder=newsaxbuilder();

documentdoc=builder.build(newfile("data_10k.xml"));elementfoo=doc.getrootelement();listallchildren=foo.getchildren();for(inti=0;i<allchildren.size();i++){system.out.print("车牌号码((element)allchildren.get(i)).getchild("no").gettext());system.out.println("车主地址((element)allchildren.get(i)).getchild("addr").gettext());}

34

:":"

++

}catch(exceptione){e.printstacktrace();}}

4)dom4j

importjava.io.*;importjava.util.*;importorg.dom4j.*;importorg.dom4j.io.*;publicclassmyxmlreader{

publicstaticvoidmain(stringarge[]){

longlasting=system.currenttimemillis();try{

filef=newfile("data_10k.xml");

saxreaderreader=newsaxreader();documentdoc=reader.read(f);

elementroot=doc.getrootelement();elementfoo;

for(iteratori=root.elementiterator("value");i.hasnext();){foo=(element)i.next();

system.out.print("车牌号码:"+foo.elementtext("no"));system.out.println("车主地址:"+foo.elementtext("addr"));}

}catch(exceptione){e.printstacktrace();}}

3.9Ajax

3.9.1Ajax简介

Ajax不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术。

通过Ajax,您的JavaScript可使用JavaScript的XMLHttpRequest对象来直接与服务器进行通信。通过这个对象,您的JavaScript可在不重载页面的情况与Web服务

器交换数据。

Ajax在浏览器与Web服务器之间使用异步数据传输(HTTP请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。Ajax可使因特网应用程序更小、更快,更友好。

Ajax是一种独立于Web服务器软件的浏览器技术。Ajax基于下列Web标准:JavaScriptXMLHTMLCSS在Ajax中使用的Web标准已被良好定义,并被所有的主流浏览器支持。Ajax应用程序独立于浏览器和平台。

Web应用程序较桌面应用程序有诸多优势;它们能够涉及广大的用户,它们更易安装及维护,也更易开发。

不过,因特网应用程序并不像传统的桌面应用程序那样完善且友好。

通过Ajax,因特网应用程序可以变得更完善,更友好。

如名字所示,Ajax的概念中最重要而最易被忽视的是它也是一种JavaScript编程语言。JavaScript是一种粘合剂使Ajax应用的各部分集成在一起。在大部分时间,JavaScript通常被服务端开发人员认为是一种企业级应用不需要使用的东西应该尽力避免。这种观点来自以前编写JavaScript代码的经历:繁杂而又易出错的语言。类似的,它也被认为将应用逻辑任意地散布在服务端和客户端中,这使得问题很难被发现而且代码很难重用。在Ajax中JavaScript主要被用来传递用户界面上的数据到服务端并返回结果。XMLHttpRequest对象用来响应通过HTTP传递的数据,一旦数据返回到客户端就可以立刻使用DOM将数据放到网页上。

为了正确的浏览Ajax应用,CSS是一种Ajax开发人员所需要的重要武器。CSS提供了从内容中分离应用样式和设计的机制。虽然CSS在Ajax应用中扮演至关重要的角色,但它也是构建跨浏览器应用的一大阻碍,因为不同的浏览器厂商支持各种不同的CSS级别。

XMLHttpRequest对象在大部分浏览器上已经实现而且拥有一个简单的接口允许数据从客户端传递到服务端,但并不会打断用户当前的操作。使用XMLHttpRequest传送的数据可以是任何格式,虽然从名字上建议是XML格式的数据。

3.9.2Ajax实现

3.9.2.1.创建XMLHttpRequest方法:

在实际应用中,为了兼容多种不同版本的浏览器,一般将创建XMLHttpRequest类的方法写成如下形式:

//ProvidetheXMLHttpRequestclassforIE5.x-6.x://Otherbrowsers(includingIE7.x-8.x)ignorethis//whenXMLHttpRequestispredefinedvarxmlHttp;

if(typeofXMLHttpRequest!="undefined"){xmlHttp=newXMLHttpRequest();}elseif(window.ActiveXObject){

varaVersions=["Msxml2.XMLHttp.5.0","Msxml2.XMLHttp.4.0","Msxml2.XMLHttp.3.0","Msxml2.XMLHttp","Microsoft.XMLHttp"];for(vari=0;i

xmlHttp=newActiveXObject(aVersions[i]);break;

}catch(e){}}}

3.9.2.2发送请求

可以调用HTTP请求类的open()和send()方法,如下所示:xmlhttp_request.open("GET",URL,true);xmlhttp_request.send(null);

open()的第一个参数是HTTP请求方式GET,POST或任何服务器所支持的您想调用的方式。按照HTTP规范,该参数要大写;否则,某些浏览器(如Firefox)可能无法处理请求。

第二个参数是请求页面的URL。

第三个参数设置请求是否为异步模式。如果是TRUE,JavaScript函数将继续执行,而不等待服务器响应。这就是"Ajax"中的"A"。

3.9.2.3服务器的响应

这需要告诉HTTP请求对象用哪一个JavaScript函数处理这个响应。可以将对象的onreadystatechange属性设置为要使用的JavaScript的函数名,如下所示:xmlhttp_request.onreadystatechange=FunctionName;

FunctionName是用JavaScript创建的函数名,注意不要写成FunctionName(),当然我们也可以直接将JavaScript代码创建在onreadystatechange之后,例如:xmlhttp_request.onreadystatechange=function(){//JavaScript代码段

};

首先要检查请求的状态。只有当一个完整的服务器响应已经收到了,函数才可以处理该响应。XMLHttpRequest提供了readyState属性来对服务器响应进行判断。readyState的取值如下:0(未初始化)1(正在装载)2(装载完毕)3(交互中)4(完成)

所以只有当readyState=4时,一个完整的服务器响应已经收到了,函数才可以处理该响应。具体代码如下:

if(http_request.readyState==4){//收到完整的服务器响应}else{//没有收到完整的服务器响应}

当readyState=4时,一个完整的服务器响应已经收到了,接着,函数会检查HTTP服务器响应的状态值。完整的状态取值可参见W3C文档。当HTTP服务器响应的值为200时,表示状态正常。

3.9.2.4处理从服务器得到的数据有两种方式可以得到这些数据:

(1)以文本字符串的方式返回服务器的响应

(2)以XMLDocument对象方式返回响应

3.9.3Ajax的优势与劣势

优点:更迅捷的响应速度

传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然後返回一个新的网页。这个做法浪费了许多带宽,因为在前後两个页面中的大部分HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。

与此不同,Ajax应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于XML的webservice接口,并在客户端采用JavaScript处理来自服务器的响应。

因此在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。

使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。

Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。就像DHTML应用程序那样,Ajax应用程序必须在众多不同的浏览器和平台上经过严格的测试。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。

缺点与其中一些问题的对应解决方案:

对应用Ajax最主要的批评就是,它可能破坏浏览器后退按钮的正常行为。在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在Ajax应用程序中,却无法这样做。不过开发者已想出了种种办法来解决这个问题,当中大多数都是在用户单击后退按钮访问历史记录时,通过建立或使用一个隐藏的IFRAME来重现页面上的变更。(例如,当用户在GoogleMaps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)

一个相关的观点认为,使用动态页面更新使得用户难于将某个特定的状态保存到收藏夹中。该问题的解决方案也已出现,大部分都使用URL片断标识符(通常被称为锚点,即URL中#后面的部分)来保持跟踪,允许用户回到指定的某个应用程序状态。(许多浏览器允许JavaScript动态更新锚点,这使得Ajax应用程序能够在更新显示内容的同时更新锚点。)这些解决方案也同时解决了许多关于不支持后退按钮的争论。

进行Ajax开发时,网络延迟即用户发出请求到服务器发出响应之间的间隔需要慎重考虑。不给予用户明确的回应,没有恰当的预读数据,或者对XMLHttpRequest的不恰当处理,都会使用户感到延迟,这是用户不欲看到的,也是他们无法理解的。通常的解决方案是,使用一个可视化的组件来告诉用户系统正在进行后台操作并且正在读取数据和内容。

一些手持设备(如手机、PDA等)现在还不能很好的支持Ajax;

用JavaScript作的Ajax引擎,JavaScript的兼容性和DeBug都是让人头痛的事;Ajax的无刷新重载,由于页面的变化没有刷新重载那么明显,所以容易给用户带来困

扰——用户不太清楚现在的数据是新的还是已经更新过的;现有的解决有:在相关位置提示、数据更新的区域设计得比较明显、数据更新后给用户提示等。

Ajax是以异步的方式向服务器提交需求。对服务器而言,其与传统的提交窗体需求并无不同,而且由于是以异步之方式提交,如果同时有多个Ajax需求及窗体提交需求,将无法保证哪一个需求先获得服务器的响应。这会造成应用程序典型的多进程(process)或多线程(thread)的竞争(racing)问题。程序员因此必须自行处理或在JavaScript里面动手脚以避免这类竞争问题的发生(如Ajax需求未响应之前,先disable送出按钮),这又不必要的增加了程序员的负担。

3.10JSTL

3.10.1JSTL介绍

JSP标准标签库(JSPStandardTagLibrary,JSTL)是一个实现Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML操作以及数据库访问。在developerWorks上其新系列的第一篇文章中,软件工程师MarkKolb展示了如何使用JSTL标记来避免在JSP页面中使用脚本编制元素,如何通过从表示层删除源代码来简化软件维护。JSTL经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对JSTL操作指定动态属性值。

JavaServerPages(JSP)是用于J2EE平台的标准表示层技术。JSP技术提供了用于执行计算(这些计算用来动态地生成页面内容)的脚本编制元素和操作。脚本编制元素允许在JSP页面中包括程序源代码,在为响应用户请求而呈现页面时可以执行这些源代码。操作将计算操作封装到很象HTML或XML标记的标记中,JSP页面的模板文本通常包含这些标记。JSP规范只将几种操作定义成了标准,但从JSP1.1开始,开发人员已经能够以定制标记库的方式创建其自己的操作了。

JSP标准标记库(JSTL)是JSP1.2定制标记库集,这些标记库实现大量服务器端Java应用程序常用的基本功能。通过为典型表示层任务(如数据格式化和迭代或条件内容)提供标准实现,JSTL使JSP作者可以专注于特定于应用程序的开发需求,而不是为这些通用操作“另起炉灶”。

3.10.2JSTL隐式对象

JSP:

pageContextPageContext实例对应于当前页面的处理作用域:

pageScope与页面作用域属性的名称和值相关联的Map类requestScope与请求作用域属性的名称和值相关联的Map类sessionScope与会话作用域属性的名称和值相关联的Map类applicationScope与应用程序作用域属性的名称和值相关联的Map类请求参数:

param按名称存储请求参数的主要值的Map类

paramValues将请求参数的所有值作为String数组存储的Map类请求头:

header按名称存储请求头主要值的Map类

headerValues将请求头的所有值作为String数组存储的Map类Cookiecookie按名称存储请求附带的cookie的Map类初始化参数:

initParam按名称存储Web应用程序上下文初始化参数的Map类

尽管JSP和EL隐式对象中只有一个公共对象(pageContext),但通过EL也可以访问其它JSP隐式对象。原因是pageContext拥有访问所有其它八个JSP隐式对象的特性。实际上,这是将它包括在EL隐式对象中的主要理由。

其余所有EL隐式对象都是映射,可以用来查找对应于名称的对象。前四个映射表示先前讨论的各种属性作用域。可以用它们来查找特定作用域中的标识符,而不用依赖于EL在缺省情况下使用的顺序查找过程。

接下来的四个映射用来获取请求参数和请求头的值。因为HTTP协议允许请求参数和请求头具有多个值,所以它们各有一对映射。每对中的第一个映射返回请求参数或头的主要值,通常是恰巧在实际请求中首先指定的那个值。每对中第二个映射允许检索参数或头的所有值。这些映射中的键是参数或头的名称,但这些值是String对象的数组,其中的每个元素都是单一参数值或头值。

cookie隐式对象提供了对由请求设置的cookie名称的访问。这个对象将所有与请求相关联的cookie名称映射到表示那些cookie特性的Cookie对象。

最后一个EL隐式对象initParam是一个映射,它储存与Web应用程序相关联的所有上下文的初始化参数的名称和值。初始化参数是通过web.xml部署描述符文件指定的,该文件位于应用程序的WEB-INF目录中。

3.10.3常用函数

fn:contains(string,substring)

如果参数string中包含参数substring,返回truefn:containsIgnoreCase(string,substring)

如果参数string中包含参数substring(忽略大小写),返回truefn:endsWith(string,suffix)

如果参数string以参数suffix结尾,返回truefn:escapeXml(string)

将有特殊意义的XML(和HTML)转换为对应的XML实体字符,并返回转义后的字符fn:indexOf(string,substring)

返回参数substring在参数string中第一次出现的位置fn:join(array,separator)

将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。

fn:length(item)

返回参数item中包含元素的数量。

参数Item类型是普通对象、数组、Collection、Map、Iterator迭代器、Enumeration枚举对象、或者String。

如果是String类型,返回值是String中的字符数。如果是数组类型,返回值是数组的长度。

如果是Collection容器类的子类,返回值是该容器类的包含元素的个数。如果是Map类型,返回值是此映射中的键-值映射关系数。如果是Iterator类型,返回值是Iterator中的元素个数。

如果是Enumeration类型,返回值是Enumeration中的元素个数fn:replace(string,before,after)

返回一个String对象。

用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果

fn:split(string,separator)

返回一个数组,以参数separator为分割符分割参数string,分割后的每一部分就是数组的一个元素

fn:startsWith(string,prefix)

如果参数string以参数prefix开头,返回truefn:substring(string,begin,end)

返回参数string部分字符串,从参数begin开始到参数end位置,包括end位置的字符

fn:substringAfter(string,substring)

返回参数substring在参数string中后面的那一部分字符串fn:substringBefore(string,substring)

返回参数substring在参数string中前面的那一部分字符串fn:toLowerCase(string)

将参数string所有的字符变为小写,并将其返回fn:toUpperCase(string)

将参数string所有的字符变为大写,并将其返回fn:trim(string)

去除参数string首尾的空格,并将其返回

四、实习总结

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

在本次实习中,我们主要学习了前台方面例如Html、js、div、css等技术,后台主要是JavaWeb方面的技术,例如jsp、servlet、jstl、mvc+dao技术等等。在实习接近尾声时,每个小组都做了一个基于MVC+DAO的团购网进行答辩,以巩固所学知识点。

总的来说,这次实习让我明白了在学习过程中必须边总结边学习,遇到一个知识点必须学会举一反三。非常感谢实习的指导老师,在老师的帮助和指导下,我攻克了学习上的一道道难关,课上认真听讲,做好必要的笔记,并且通过自己课后的不断消化学习,对所学的这些知识点可以算是牢固掌握,并且能独立的开发出系统。我相信,只要我秉持艰苦奋斗、为理想拼搏的精神,我一定可以披荆斩棘,度过重重难关,实现自己未来的理想。

友情提示:本文中关于《北煤机实习总结》给出的范例仅供您参考拓展思维使用,北煤机实习总结:该篇文章建议您自主创作。

来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


北煤机实习总结》由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
链接地址:http://www.bsmz.net/gongwen/542086.html