|
|
用户名:04320710222shine 笔名:04320710222shine 地区: 成都 行业:其他 |
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
欢迎来到shine的空间,有什么意见就请你留言,谢谢!
已锁定
- 作者: 04320710222shine 2008年08月22日, 星期五 10:56 回复(0) | 引用(0) 加入博采
女人嫁人是什么样子?
正如题目似的,最近工作刚刚稳定了,
于是便回来看看,变了变了,一切都变了
朋友都在打算自己嫁人是什么样子的,
嫁什么样的老公,自己才会幸福,
而我呢,?似乎什么都没有,一无所有。
我跟洁不会有结果的吧,做这种朋友会长久吗?
问洁:几年后,要是我们都各自结婚,见到对方会是什么样的情境呢?
也不知自己为什么会这样问他,,因为我刚看完了古天乐与刘若英的《生日快乐!》。
我知道我们的结果不会如此,可是局情真的好像呢,
突然自己失去了安全感,洁说他会出国。
我不会阻止他的事业发展的,做IT真好比是吃年轻饭。
我没有这个权利匀阻止他,干挠他。
我们算什么呢,比朋友更好的朋友,,,比情人还情人的情人,
可就是不能是夫妻,对吧。
- 作者: 04320710222shine 2007年02月9日, 星期五 17:21 回复(0) | 引用(0) 加入博采
爱错了
[00:03.39]《爱错了》
[00:04.83]
[00:06.15]作词:杨帆 作曲:功夫
[00:12.14]by super QQ:27792292
[00:19.36]我想这是最后一次有你陪我过的生日
[00:22.06]客厅角落里已经放着你的行李
[00:24.68]我看着时钟从九点走向十点钟
[00:27.25]他会准时来接你 带你搬出我的回忆
[00:30.40]
[00:30.76]你亲手做的蛋糕依然香甜
[00:32.85]上面二十二棵蜡烛已经渐渐快要熄灭
[00:35.74]我们还是什么话都没有说 难得沉默
[00:38.46]我知道你的心在飞 手里转着空酒杯
[00:41.94]你说今天不喝酒 他会不喜欢
[00:44.60]我说我也不想喝 我怕醉倒没人管
[00:47.24]终于又看到 你久违的笑容
[00:49.76]就像最初走向我时那个美丽的梦
[00:52.85]我从前对酒精过敏自从和你在一起
[00:55.78]你的温柔蛮横让我变的没脾气
[00:58.37]情愿在每天睡前都陪你喝两杯
[01:01.45]我亲手调的bloody marry
[01:04.55]我在纵容着你是他改变了你
[01:06.82]我想这就是他能把你带走的原因
[01:09.82]我应该知道不是爱你就能给你幸福
[01:12.44]面对现实我就象是一片落叶一样无助
[01:15.54]楼下传来停车声 宣告电影已散场
[01:18.27]作为悲剧男主角 我的笑很勉强
[01:21.10]最后的对白对你已经没有任何意义
[01:23.93]门已经敞开了 只能看见空的楼梯
[01:26.94]你曾说过欣赏他 讨厌他 崇拜他
[01:29.33]那段时间里 夸的骂的都是他
[01:32.06]我还单纯的以为你的心总属于我
[01:34.97]可是朋友告诉我 我的纵容就是错
[01:38.06]直到你为他哭了 我才知道心疼
[01:40.73]后悔已经没有用 其实结局已注定
[01:43.54]我关上那扇窗 是你离去的方向
[01:46.53]只留下两个空的酒杯 Happy birthday...
[02:11.77][01:49.95]*这到底是谁的错 谁的错
[02:14.65][01:51.93]爱与不爱都是错 太多结局没想过
[02:17.54][01:54.74]飞出我的世界你比想象中的快乐
[02:20.44][01:57.28]是谁屏住呼吸忍住痛抗下这些错
[02:23.06][02:00.58]这到底是谁的错 谁的错 谁的错
[02:25.87][02:03.24]恨与不恨都是错 心情矛盾中降落
[02:28.57][02:05.92]一个人的房间比我想象中的寂寞
[02:31.52][02:08.78]难道那种幸福太珍贵 原本是错*
[02:34.67]开始慢慢的习惯 抛开整夜的思念
[02:37.05]把你的玩具熊和酒瓶都锁在衣柜里
[02:39.93]我怎么舍得丢弃 这是唯一的纪念
[02:42.60]至少可以证明我曾拥有美好的瞬间
[02:45.62]我原本以为再也不会见到你
[02:48.05]可是没想到 事情的变化竟会如此奇妙
[02:51.30]一阵敲门声 节奏熟悉而短暂
[02:54.11]你又出现在门口 哭肿了双眼
[02:57.17]你呆坐在那里 哭的很伤心
[02:59.30]消瘦一张脸分不清泪水和酒精
[03:02.48]我从没见你醉的这么厉害
[03:05.49]我只是心头一紧觉得自己比你还要委屈
[03:08.60]你一边咬着我的手一边骂他太花心
[03:11.42]发现他的情人多过我手上的牙齿印
[03:14.12]你最喜欢抱着玩具熊睡去
[03:16.70]可他觉得太幼稚 一直没肯买给你
[03:19.57]你哭着哭着哭累了 爬到床上睡着了
[03:22.70]几句梦话含糊不清找着你的玩具熊
[03:25.43]我打开衣柜 想把它拿给你
[03:28.00]结果里面凌乱的衣服散落了一地
[03:31.01]我终于可以承认 不用再逃避
[03:33.56]生活里 没有你 已经变得一团糟
[03:36.34]小熊还是安静的坐在那里
[03:39.03]可是其他的东西已经乱的完全没了规矩
[03:42.14]我靠窗坐一夜 心痛快要被撕裂
[03:44.76]他的一个电话把你叫醒简单的道歉
[03:47.55]你只是责怪他对你还不够认真
[03:50.10]然后站起身 我才看见那条新的钻石项链
[03:53.53]我曾经多想买给你 但是渴望不可及
[03:56.84]只要他愿意他会让你更美丽
[03:59.14]你最后 转过身看了一眼我和玩具熊
[04:02.02]只留下一句 Don't hate me please
[04:27.14][04:05.49]* 这到底是谁的错 谁的错 谁的错
[04:30.06][04:08.02]爱与不爱都是错 太多结局没想过
[04:32.93][04:10.41]飞出我的世界你比想象中的快乐
[04:35.79][04:13.10]是谁屏住呼吸忍住痛抗下这些错
[04:38.49][04:15.92]这到底是谁的错 谁的错 谁的错
[04:41.34][04:18.71]恨与不恨都是错 心情矛盾中降落
[04:44.11][04:21.55]一个人的房间比我想象中的寂寞
[04:46.81][04:24.63]难道那种幸福太珍贵 原本就是错 *
[05:01.31]我在纵容着你 是他改变了你
[05:03.87]只要他愿意他会让你更美丽
[05:06.72]我关上那扇窗是你离去的方向
[05:09.48]只剩下两个空的酒杯 热的发烫
[05:12.47]你一边咬着我的手一边骂他太花心
[05:15.41]后悔已经没有用 其实结局已注定
[05:18.51]你最后转过身看了一眼我和玩具熊
[05:21.72]只留下一句 to speak is the sin
- 作者: 04320710222shine 2005年12月28日, 星期三 18:46 回复(0) | 引用(0) 加入博采
JSP入门教程
JavaServer Pages (JSP)是基于Java的技术,用于创建可支持跨平台及跨Web服务器的动态网页。
JSP可与微软的Active Server Pages (ASP)相媲美,但JSP使用的是类似于HTML的标记和Java 代码片段而不是用VBScript。当你使用不提供ASP本地支持的Web服务器(例如 Apache或Netscape服务器)时,你就可以考虑使用JSP了。你虽然也可以为这些服务器弄一个ASP附加软件模块,但是太昂贵了。现在Sun公司并不会因你使用JSP向你收费(虽然将来可能要收),况且用于Solaris、 Linux以及Windows系统的组件都很容易获得。
不要把JSP与服务器端的javascript语言搞混了。Web服务器自动将通过JSP生成的Java代码片段转换成Java 片段(servlets)。 JSP也可自动控制许多功能,如过去用Perl脚本编写功能程序或像ASP这样的服务器专用API(应用编程接口)。
我们马上就要开始帮助你建立一个使用JSP 技术的网站范例了。
准备好计算机以使用JSP
你需要Java2软件开发工具箱(J2SDK),过去称之为Java开发工具箱(JDK)、JavaServer 网络开发工具箱(JSWDK)、Tomcat,或者其它能支持JSP的Web服务器。升阳公司为Windows、Solaris以及 Linux平台提供免费的J2SDK和JSWDK。
如果你想在现有的Web服务器上使用JSP,而此服务器本身不支持JSP和Java 代码片段,可以试用Allaire公司的Jrun。它可以为Netscape的Enterprise Server和Fasttrack Server、微软的Internet Information Server(IIS)和Personal Web Server(PWS)、Apache以及其他服务器充当Web服务器附件。你也可以使用Apache服务器的Java版,其中包含最新的JSWDK。
下载并安装所需的软件
目前,版本号为1.2.2-001的J2SDK可下载版以可安装的归档文件形式出现。这个大约20MB的下载量软件可提供一个彻底的Java开发环境,让你创造任何基于Java并且利用了而标准核心API的解决方案。其实,你的Web服务器使用JSP的唯一条件是要有Java编辑器。要让Web服务器知道编辑器的位置,需要JAVA_HOME 环境变量设置为J2SDK安装目录。如果你已经在Windows系统中进行了安装并且接受了默认目录, 请将“set JAVA_HOME=C:1.2.2”添加到你的“autoexec.bat”文件中,然后重新启动。
安装J2SDK后,下载并安装JSWDK或者是Tomcat β版,即基于Java的Apache Web服务器的β版。你把JSWDK放在什么地方是无关紧要的,只要你以后能找到它就行。通常,将其放在顶层目录中,这样你在替换JSWDK或JSDK时无需删除另一个软件。安装好这个文件后,准备工作已经就绪,你可以开始JSP开发工作了。
正确地安装JSWDK后,请运行“startserver”脚本程序,以启动Web服务器,使其按照默认情况监听8080端口。你要在启动服务器之后查看您是否已正确地安装了此工具,请加载一个JSP样本文件(http://locahost:8080/examples/jsp/)。如果你能成功地运行这些样本文件,说明你已经正确地安装了这个软件。如果你在用来启动服务器的控制台窗口中看到报错信息,你就需要做些修改。最经常发生的问题是没有设置或不正确地设置了JAVA_HOME环境变量。要看到当前环境变量设置情况,要请在DOS提示符下键入“set”设置。
开始
在解释 JSP语法前,创建一个快捷网页,显示目当前的日期和时间,并然后将之其保存为sample.jsp:
<html>
<head>
<title>First Page</title>
</head>
<body>
<H3>Today is:
<%= new java.util.Date() %>
</H3>
</body>
</html>.
把这个文件以及你所有的HTML 和 JSP 页面放在JSWDK安装目录下的网页目录里。你可以从http://localhost:8080/sample.jsp加载此网页。该网页首次被访问时,Web服务器会把JSP编译成Java代码片段,这样你就能够看到当前的日期和时间了。
你已经下载、安装并配置好了开发环境,你可以开始学习JSP语法并创建自己的基于JSP的解决方案了。
JSP基本语法
讲完安装问题后,现在进入来讨论JSP语法。一个投机取巧的办法是下载语法卡片。如果你不熟悉Java编程,也许你想看一下Sun的指南 。然而网页创建者并不需要进行太多的Java开发。除了一些方法调用,在你的JSP网页里应尽可能少用Java代码。
记住以上提示,我们首先来看一看JSP指令和脚本元素,之后我们会解释JavaBeans和隐含对象。共有五种JSP指令和脚本元素。在JSP 1.0版中,大部分JSP被一个以“<%” 开头和以“%>”结尾的的标记括在其中。在更新的JSP 1.1规范出台后,就有了与XML兼容的版本。
JSP指令和脚本元素
Directives <%@ directive %>
Declarations <%! declaration %>
Expressions <%= expression %>
Code Fragment/Scriptlet <% code fragment %>
Comments <%-- comment --%>
指令
JSP指令是为JSP引擎而设计的。他们并不直接产生任何可见输出,而只是告诉引擎如何处理其余JSP页面。这些指令始终被括在 “<%@ ?%>”标记中。两个最重要的指令是“pagePage”和“Include”。“Taglib”指令不在讨论之列,但是在用JSP1.1创建自定义标记可以使用它。
几乎在所有JSP页面顶部都会看到“Page”指令。尽管不是必须的,但可以让你指定:
到何处查找起支持作用的Java类别:
<%@ page import="java.util.Date" %>,
出现Java运行问题时,将网上冲浪者引向何处:
<%@ page errorPage="errorPage.jsp" %>,
还有你是否需要管理用户的会话级信息,这些信息可能来自多个网页(在下面的JavaBeans一节将对此做进一步讲)述:
<%@ page session="true" %>.
“Include”指令可以把你的内容分成更多可管理的元素,比如包括一个普通页面页眉或页脚的元素。包含的网页可以是一个固定的HTML 页面或更多的JSP内容:
<%@ include file="200453092147.htm.jsp" %>
声明
JSP声明用来让你定义页面级变量,以保存信息或定义JSP页面的其余部分可能需要的支持方法。如果你发现代码太多,通常最好把它们写成一个独立的Java类别。声明一般都在“<%! ?%>”标记中。一定要以分号(;)结束变量声明,因为任何内容都必须是有效的Java语句:
<%! int i=0; %>。
表达式
有了JSP表达式,表达式评估结果会被转换成一个字符串,并且被直接包括在输出页面之内。JSP 表达式包含在“<%= ?%>” 标记中,没有分号,除非在加引号的字符串部分使用分号。
<%= i %>
<%= "Hello" %> .
代码片段/脚本片段
代码片段/脚本片段(Scriptlets) JSP代码片段或脚本片段是嵌在“<% ?%>”标记中的。这种Java代码在Web服务器响应请求时就会运行。在脚本片段周围可能是原始的HTML或XML语句,在这些地方,代码片段可以使你创建条件执行代码,或要用到另外一段代码的代码。例如,以下的代码组合使用表达式和代码片段,显示H1、H2、H3和H4标记中的字符串“Hello”。代码片段并不局限于一行源代码:
<% for (int i=1; i<=4; i++) { %>
<H<%=i%>>Hello</H<%=i%>>
<% } %>.
注释
最后一个主要的JSP元素是嵌入式注释。尽管你始终可以在文件中加入HTML注释,但用户在查看页面源代码时会看到这些注释。如果你不想让用户看到它,你就应该将其嵌入“<%-- ?--%>” 标记中:
<%-- comment for server side only --%>.
带JavaBean 的JSP
虽然你可以把大段的代码放在脚本片段(scriptlet)内,但是绝大多数的Java代码属于可重复使用的名为JavaBea的组件。JavaBean类似于ActiveX控件:他们都能提供常用功能并且可以重复使用。
JavaBean的值是通过一些属性获得的,你可通过这些属性访问JavaBean设置。以一个人来打比方,这个人就是一个JavaBean,这个人的名字、身份证号码以及住址就是其属性。在JSP网站,你基本上就是通过玩“Connect the beans)”来使你的网站动态化。
假设JavaBean先于网站被创建出来,你需要做的第一件事就是告诉JSP页面它将要用到一个“Bean”。你可以用“<jsp:useBean>”标记来做到这一点:
<jsp:useBean id="localName" class="com.jguru.Person" scope="application" />。
“<jsp:useBean>”标记要求你用“id”属性来识鉴别Bean。这里你提供一个名字来JSP页面其余部分的Bean。除了“id”属性,你还须告诉网页面从何处查找Bean,或者它的Java类别名是什么。这种类别属性提供确 认Bean的功能,其他一些方法也可以做到这一点。最后一个必需的元素是“scope”属性。有了“scope”属性的帮助,你就能告诉Bean为单一页面(默认情况)[scope="page"]、为[scope="request"]请求为会话[scope="session"],或者为整个应用程序[scope="application"]保持留信息。有了会话范围,你就能非常容易地在JSP网页面上维护购物车等项目。
一旦你声名了一个JavaBean,你就可以访问它的属性来定制它。要获得属性值,请用“<jsp:getProperty>”标记。有了这个标记,你就能指定将要用到的Bean名称(从useBean的"id"字段得到)以及你想得到其值的属性。实际的值被放在输出中:
<jsp:getProperty id="localName" property="name" />。
要改变JavaBean属性,你必须使用“<jsp:setProperty>”标记。对这个标记,你需要再次识别Bean和属性,以修改并额外提供新值。如果命名正确,这些值可以从一个已提交的表中直接获得:参数获得:
<jsp:setProperty id="localName" property="*" />;
可以从一个参数获得,但你必须直接命名属性和参数:
<jsp:setProperty id="localName" property="serialNumber" value="string" />
或者直接用一个名字称和值来设置: <jsp:setProperty id="localName" property="serialNumber" value= <%= expression %> />.
关于JavaBean 的最后一件事: 为了Web服务器能找到JavaBean,你需要将其类别文件放在一个特殊位置。用JSWDK,最 方便的位置是安装目录下的类别目录,如jswdk-1.0.1classes。
JSP隐含对象
与JSP语法相关的最后的元素是一些叫做“隐含对象”的东西。在JSP代码片段中,你可以利用这些隐含对象与JSP页面的代码片段执行环境产生互动。应尽量少访问这些内置隐含对象。但是,在一某些情况下,访问隐含对象是可被接受的。若要充分利用隐含对象,就需了解最新的Java Servlet API。
下表列出可用的隐含对象集合。
隐含对象说明
request 客户端请求,包括从GET/POST请求传递过来的参数
response 网页传回客户端的反应
pageContext 在此管理网页属性
session 与请求关联的会话
application 代码片段的运行环境
out 传送响应的输出流
config 代码片段配置对象
page JSP网页本身
exception 有错的网页中未被捕获的例外
这些都是用来做什么的,你又如何来使用它们呢?基本上说,在你的脚本片段里,你可以用它们进入执行JSP代码的代码片段。用不着深入了解太多的Servlet API细节,我们来看看能用它们来做到的某些事情:
你可以不用表达式,直接进入“Out”隐含对象,将某些内容输出到响应中:
<% out.println("Hello"); %>。
用不着把一个参数直接送到JavaBean,你可以从请求对象获取参数值:
<% String name=request.getParameter("name"); out.println(name); %>.
在你用JSP进行开发的过程中,进行更多的开发的过程中,如果创建了JavaBeans或发现JSP文件中加入了太多的Java源代码,你就需要创建起支持作用的Java分类(class)了,它可以协助你重复利用源代码并减少JSP网页编译时间。当你需要创建Java分类文件时,你必须:
将JDSWK installationin目录添加到PATH中。在autoexec.bat文件PATH行的末尾,加入“C:1.2.2/bin”。
用这个命令将JAR文件复制到“jrelibext:”目录中: copy c:jswdk-1.0.1libservlet.jar c:jdk1.2.2jrelibext.
创建一个JSP网站
现在该是把所有这些JSP语法派上用场的时候了。我们将创建一个网页,它有一个输入表单,可以使用户输入一个股票代号以获得出当前股价(有20分钟)。如果输入有误,则显示报错网页。
quote.jsp
首先,用 这个代码 创建一个quote.jsp网页并将其保存在JSWDK安装目录下的网页目录中。大多数的网页是标准的HTML,其间散布着JSP代码。第六行是一个网页指示,表示将把所有错误发送到“errorPage.jsp”文中。第13到15行是一个脚本片段,主要说明只有提供“符号”参数才会显示表格。“If”代码段在32到34行结束。第17行定义了要用的JavaBean,第18行从参数加载JavaBean的符号属性。第27行到29行显示Bean的属性。除了"if "代码段,实际上并不涉及其它Java代码。
errorPage.jsp
下一步,将下列JSP源代码保存到网页目录中的“errorPage.jsp”文件中。“这是一个错误网页”的提示为第一行,它将isErrorPage网页提示属性设置为真。上一页说了明错误网页的位置,本页则说明这就是错误网页。其它JSP文件中的JSP专用代码只有访问隐含例外对象才用到。网页只显示其值:
<%@ page isErrorPage="true" %>
<html>
<head>
<title>Error Page</title>
</head>
<body>
<h1>Our Error Page</h1></font>
<!-- Print Exception -->
We got ourselves an exception:
<%= exception %>
<a href="quote.jsp">Restart</a>
</body>
</html>。
Quotes.java
Quotes JavaBean 利用Yahoo资源来获得股票价格。需要将此 资源保存到JSWDK安装目录下“classescomjguru”目录中的“quotes.java”文件中。请在此用JSDK中的Javac编辑器来编辑它。
你的第一个JSP网页。
创建了这两个JSP文件,建立了JavaBean资源文件并编辑了它后,你就可以从http://localhost:8080/quote.jsp加载“quote.jsp”文件以查看结果,假设你没有更改JSWDK安装设置,转而使用别的端口。这个网页当然能做得更漂亮,但是它已实现了需要实现的功能,并且很好地展示了JSP的功能。
欢迎使用JavaServer Pages(以下简称JSP)技术—制作动态内容网页的方法。
如果你希望学习这篇教程的话,我想你一定是这项技术的新手。你可能想成为一名利用JSP技术开发网络应用程序的程序员或者网页设计师。本教程中包含了一系列JSP的技巧和一些简单的代码的写法,每一步都举了一组例子来讲述原理。
我建议你在学习本教程之前先去看一看FAQ,了解如果配置你服务器好让他能支持并运行JSP。那样你就可以跳过前边的内容直接看你感兴趣的内容了。
OK,费话少说,Let’s go!
第一课:真正的开始
现在开始做我们的第一个JSP页面。图1-1展示了一个最简单的JSP页面,接下来是两段代码。
[dukebanner.html]
<table border=”0” width=”400” cellspacing=”0” cellpadding=”0”>
<tr>
<td height=”150” width=”150”> </td>
<td width=”250”> </td>
</tr>
<tr>
<td width=”150”> </td>
<td align=”right” width=”250”>
<img src=”duke.waving.gif”></td></tr></table><br>
helloworld.jsp
<%@ page info="a hello world example" %>
<html>
<head><title>Hello, World</title></head>
<body bgcolor="#ffffff" background="background.gif">
<%@ include file="dukebanner.html" %>
<table>
<tr>
<td width=150> </td>
<td width=250 align=right> <h1>Hello, World!</h1> </td>
</tr>
</table>
</body>
</html>
页面说明:
在很多JSP文件中你都要写上这样的说明。在helloword.jsp中:
<%@ page info="a hello world example" %>
傻瓜也看得出来,这句话没什么大用,只是简要的说明一下这段代码的作用。
你可以在JSP文件中的任何地方写这种代码,但是好的习惯是把他写在最前面,还有,因为他是JSP标签,记住一定要放在<html>前面,呵
include说明:
include用来在主JSP文件中调用本地的一个其他文件,通常是一些版权信息啦,脚本语言啦等其他任何你想在其他文件中重复使用的代码。在这个例子中就是调用了一个图片其实。大家明白这个意思就得了。
随便说两句:
在JSP中对写法非常敏感,不可以有一点错误。举个例子,把<jsp:useBean>写成<jsp:usebean>那样服务器会出现错误信息。一些如类名,包名,路径名还有其他的敏感的标签等千万不要写错。有一些JSP标签拿不准的话就去查一下JavaServer Pages语法卡片。
代码写好了,如何试验一下呢?
我这里写的UNIX下的方法,如果你用Windows,那么换一下路径就可以了
1、 先建一个目录:../jswdk-1.0/examples/jsp/tutorial/helloworld
2、 把这些文件拷过去background.gif, duke.waving.gif, dukebanner.html, and helloworld.jsp
3、 cd ../jswdk-1.0,然后startserver
4、 开一个浏览器,
5、 http://yourMachineName:8080/examples/jsp/tutorial/helloworld/helloworld.jsp
第二课:用HTML表单
大多数情况下,商业的网站都要有一些表单,比如说输入一下消费者的姓名啦,地址啦,或者敲一个词来用搜索引擎来查一下啦,或者市场人员从来访者处收集一些数据供参考什么的。
那些表单传回的数据怎么处理的?
来访者通过表单向JSP引擎输入了数据,并保存在了request对象中,那么接下来怎么办?
图2-1向你展示了数据流是如何在服务器和客户之间传递的(至少在SUN的JSP reference implementation是这么做的,别的JSP引擎工作起来可能会有一点点的不同,其实大同小异,都差不多)
字儿太小了,可能看不大清吧?俺来解释一下了只好。
首先,JSP引擎把存放在request对象中的数据发到JSP页面指定的服务器端的组件(JavaBeans组件, servlet,或者enterprise bean),组件收到这些个数据以后,有可能再存这些数据到数据库或者其他的地方存放起来,同时,返回一个response对象给JSP引擎。JSP引擎再把response对象传给JSP页面,这时的页面包含了定义好的格式和从服务器端得到的数据。这时JSP引擎和Web服务器再发送一个整理好的完整的页面给客户,也就是这们在浏览器上看到的结果。客户和服务器间的通信协议可以用HTTP,当然也可以用其他的。
Request和Response对象在你制作的JSP原代码中起作用。到于request对象到底怎么用,我要在接下来详细的讲给你听。
如何创建表单
用HTML定义一些有代表性的表单做成一个JSP文件,然后用JSP标签在表单和服务器端对象(通常都用Bean)传递数据。一般情况下是这么干的:
1、 写JSP原文件,创建一些HTML的表单并命名。
2、 在Java文件里写Bean,定义属性,GET或者SET方法来配合已经被你指定好名字的表单。
3、 回到JSP原文件中,增加<jsp:useBean>标签来创建一个或者调用一个现成的Bean。
4、 增加<jsp:setProperty>标签设置HTML表单中需要SET方法的Bean的属性。
5、 增加<jsp:getProperty>标签设置HTML表单中需要GET方法的Bean的属性。
6、 如果需要处理更多的用户数据,用request对象。
说了半天你可能看不懂,其实看一个例子你就懂了。
先看一个简单的hello的例子吧:
这段程序其实还是计算机程序里那个最经典的“hello,world”的程序,只不过呢,我使他挠了一点弯儿,使他看起来比较智能和复杂。首先你输入你的名字,然后Duke跟你说:“hello!”
看看代码吧:
dukebanner.html
<table border="0" width="400" cellspacing="0" cellpadding="0">
<tr>
<td height="150" width="150"> </td>
<td width="250"> </td>
</tr>
<tr>
<td width="150"> </td>
<td align="right" width="250">
<img src="duke.waving.gif"> </td>
</tr></table><br>
主JSP文件:hellouser.jsp
<%@ page import="hello.NameHandler" %>
<jsp:useBean id="mybean" scope="page" class="hello.NameHandler" />
<jsp:setProperty name="mybean" property="*" />
<html>
<head><title>Hello, User</title></head>
<body bgcolor="#ffffff" background="background.gif">
<%@ include file="dukebanner.html" %>
<table border="0" width="700">
<tr><td width="150"> </td>
<td width="550">
<h1>My name is Duke. What's yours?</h1></td></tr>
<tr><td width="150" </td><td width="550">
<form method="get">
<input type="text" name="username" size="25">
<br>
<input type="submit" value="Submit">
<input type="reset" value="Reset">
</td></tr>
</form>
</table>
<%
If ( request.getParameter("username") != null )
{
%>
<% @ include file="response.jsp" %>
<% }
%>
</body></html>
回应文件:response.jsp
<table border="0" width="700">
<tr>
<td width="150"> </td>
<td width="550">
<h1>Hello, <jsp:getProperty name="mybean" property="username" />!
</h1>
</td>
</tr>
</table>
处理数据的Bean:(namehandler.java)
package hello;
public class NameHandler
{
private String username;
public NameHandler() {
username = null;
}
public void setUsername( String name ) {
username = name;
}
public String getUsername() {
return username;
}
}
建立HTML表单
一个HTML的窗分为三个部分:<form>标签,输入方法,提交按钮发数据到服务器。一般的HTML页面里,是这么写的<form method=get action=someurl>,在其他的页面里的action属性可能是其他特殊的CGI程序或者其他能处理数据的程序,那么在JSP里边是怎么用的呢,呵,如果你想把数据发到Bean里的话那么你可以省略action里边的东里了,直接写<jsp:useBean>标签或者其他特定的JSP文件了。接下来的那些表单和普通的HTML差不多了,<input>的方法,然后加一个提交按钮,可能还有一个Reset按钮,对了,别忘了,还得给每一个input表单加一个名字。
这么写:<input type="text" name="username">
使用GET和POST方法
用GET和POST方法可以发数据到服器,在JSP程序中GET和POST方法可以发数据到Bean、servlet、或者其他服务器端的组件。
理论上说,GET是从服务器上请求数据,POST是发送数据到服务器。事实上,GET方法是把数据参数队列(query string)加到一个URL上,值和表单是一一对应的。比如说,name=John。在队列里,值和表单用一个&符号分开,空格用+号替换,特殊的符号转换成十六进制的代码。因为这一队列在URL里边,这样队列的参数就能看得到,可以被记录下来,或更改。通常GET方法还限制字符的大小。事实上POST方法可以没有时间限制的传递数据到服务器,用户在浏览器端是看不到这一过程的,所以POST方法比较适合用于发送一个保密的(比如信用卡号)或者比较大量的数据到服务器。
写Bean
如果JSP程序用到了Bean,你就得按照JavaBeans API的说明设计你的Bean。
记住下面两个关键部分。
如果JSP程序里用<jsp:getProperty>标签,那你就得在Bean里边配合的GET方法。
如果JSP程序进而用 <jsp:setProperty>标签,那你就得在Bean里边配合的Set方法。
设置参数到Bean或者从里边取参数将在以后的部分详细介绍。
传数据到Bean
把HTML表单的数据传到Bean里需要两个工作:
· 用<jsp:useBean>标签创建或者定位到Bean
· 在Bean里面用<jsp:serProperty>设置属性值
第一步用<jsp:useBean>标签创建或者定位到Bean一定要用在<jsp:setProperty>之前,<jsp:useBean>首先按照你指定的名字查找Bean,如果没找到,会给你指定一个。允许在一个JSP文件中创建一个Bean,然后再另一个文件中调用,这就给了Bean一个很广泛的运行空间。
第二步在Bean里面用<jsp:setProperty>设置属性值。最简单的方法是把值定义成与表单名相配合。举个例子,如果你把表单名定义成“username”那么,你就在Bean里定义属性“username”然后用方法getUsername和setUsername。
当然也可以定义成不同的名字,只要你不认为麻烦。谁让你记忆力好呢!
Request对象
用户输入的数据用来存放在Request对象里,用javax.servlet.HttpServletRequest来执行(你也可以用其他不同的工具来执行,但他们其实都是javax.servlet.HttpServletRequest的子集)
你也可以直接用scriptlet来直接访问Request对象。Scriptlet将在下一讲里边详细的讨论,现在你只需要知道他是用脚本语言写的一段放在<% 和%> 之间的代码就足够了。在JSP 1.0中,你必须用JavaTM程序语言作为你的脚本语言。
你经常会用到如下方法处理Request对象:
方法
说明
执行结果
getRequest
Javax.servlet.jsp.PageContext
返回当前Request对象
getParameterNames
javax.servlet.ServletRequest
返回当前Request对象参数名
getParameterValues
javax.servlet.ServletRequest
返回当前Request对象参数值
你将会发现其他方法包括ServletRequest,HttpServletRequest或者其他任何ServletRequest的子集。
JSP引擎经常在scenes之后使用Request对象,即使你没有明确地在JSP文件中调用。
从Bean中调数据到JSP页面
一旦用户的数据被传到Bean,你就想重新得到数据,然后在JSP面页中显示出来。想达到这一步,你就得用到<jsp:getProperty>标签。传Bean名和属性名:
<h1>Hello, <jsp:getProperty name="mybean" property="username"/>!
<jsp:useBean>, <jsp:setProperty>, 和 <jsp:getProperty>标签必须相配,举个例子:
hellouser.jsp:
<jsp:useBean id="mybean" scope="session" class="hello.NameHandler" />
<jsp:setProperty name="mybean" property="*" />
response.jsp:
<h1>Hello, <jsp:getProperty name="mybean" property="username"/>!
在这个例子里,标签被放在两个文件中,但是指定的名字都是相同的,如果不同的话,那么系统会返回一个错误信息。
如何运行例子
我用的是UNIX主机,如果你用windows,那么改相应的路径即可。
创建路径../jswdk-1.0/examples/jsp/tutorial/hellouser.
把文件background.gif, duke.waving.gif, dukebanner.html, hellousr.jsp和response.jsp文件放进去。
创建一个目录,../jswdk-1.0/examples/WEB-INF/jsp/beans/hello
把文件NameHandler.java和NameHandler.class放进去。
cd../jswdk-1.0然后startserver
打开浏览器http://计算机名:8080/examples/jsp/tutorial/hellouser/hellouser.jsp
使用脚本
在有些地方,你大概要加一些好的,成熟的程序到你的JSP页里,JSP的标签虽然很强大,但是完成某些工作还是比较费力的困难的。这时你可以使用脚本语言段来补充JSP标签。
使用的JSP引擎是支持脚本语言的,SUN的JSP参考文说明,必须使用Java程序语言来编写脚本,但是其他第三方的JSP引擎允许使用其他语言来写脚本程。
如何增加脚本
首先,你必须了解一些增加脚本元素到JSP页中的一些基本规则
1、 在JSP页面里用Page指令定义脚本(默认值是Java,一般不需要定义)
2、 声明语法<%!……%>声明变量和方法(函数)。
3、 表达式语法<%=……%>定义脚本语言表达式
4、 脚本语法〈%……%>可以操作声明、表达式和其他类型合法的代码段在页脚本语言。
5、 一定要在结尾加%>标签
声明、表达式、脚本使用起来有一些相似,但也有一些不同让我们用一些例子来讲述一下相同点和不同点吧。
声明<%!……%>包含了一个或多个变量和方法,结尾以分号分隔。
例:<%! Int I=0 ; %>
<%! Int a, b ; double c ; %>
<%! Circle a = new circle(2.0) ; %>
在页面中使用变量和方法之前必须声明
声明的范围通常是JSP页,但如果页面中使用INCLUDE指令包含其他页面,范围应变得扩展到被包含的页面。
表达式<%=……%>可以在页面中包含任何合法的语言表达式,不用分号。
例:<%= Math.sqrt(2) %>
<%= item[I] %>
<%= a+b+c %>
<%= new java.util.date() %>
表达式和脚本的一个关键的不同点就是不需要分号。如果你需要在脚本中使用表达式就必须加分号。
脚本<%……%>允许你写的任何数量的脚本语言
例:<% String name=null ;
If (request.getParmeter("name")==null{
%>
记住在脚本中必须使用分号结尾。
猜数字游戏
猜数字游戏非常的有趣,而且从这里你还可以学到很多表达式的用法。
代码
显示用的主屏幕(numguess.jsp)
<!--
Number Guess Game
Written by Jason Hunter, CTO, K&A Software
jasonh@kasoftware.com, http://www.servlets.com
Copyright 1999, K&A Software
Distributed by Sun Microsystems with permission
-->
<%@ page import = "num.NumberGuessBean" %>
<jsp:useBean id="numguess" class="num.NumberGuessBean" scope="session" />
<jsp:setProperty name="numguess" property="*" />
<html>
<head><title>Number Guess</title></head>
<body bgcolor="white">
<font size=4>
<% if (numguess.getSuccess() ) { %>
Congratulations! You got it.
And after just <%= numguess.getNumGuesses() %>tries.<p>
<% numguess.reset(); %>
Care to <a href="numguess.jsp">try again</a>?
<% } else if (numguess.getNumGuesses() == 0) { %>
Welcome to the Number Guess game.<p>
I'm thinking of a number between 1 and 100.<p>
<form method=get>
What's your guess? <input type=text name=guess>
<input type=submit value="Submit">
</form>
<% } else { %>
Good guess, but nope. Try <b><%= numguess.getHint() %></b>.
You have made <%= numguess.getNumGuesses() %> guesses.
<p>I'm thinking of a number between 1 and 100.
<p><form method=get>
What's your guess? <input type=text name=guess>
<input type=submit value="Submit">
</form>
<% } %>
</font>
</body>
</html>
操作程序(NumberGuessBean.java)
// Number Guess Game
// Written by Jason Hunter, CTO, K&A Software
// jasonh@kasoftware.com, http://www.servlets.com
// Copyright 1999, K&A Software
// Distributed by Sun Microsystems with permission
package num;
import java.util.*;
public class NumberGuessBean {
int answer;
boolean success;
String hint;
int numGuesses;
public NumberGuessBean() {
reset();
}
public void setGuess(String guess) {
numGuesses++;
int g;
try {
g = Integer.parseInt(guess);
}
catch (NumberFormatException e) {
g = -1;
}
if (g == answer) {
success = true;
}
else if (g == -1) {
hint = "a number next time";
}
else if (g < answer) {
hint = "higher";
}
else if (g > answer) {
hint = "lower";
}
}
public boolean getSuccess() {
return success;
}
public String getHint() {
return "" + hint;
}
public int getNumGuesses() {
return numGuesses;
}
public void reset() {
answer = Math.abs(new Random().nextInt() % 100)
+ 1;
success = false;
numGuesses = 0;
}
}
在JSP文件中使用脚本
numguess.jsp是一个非常有趣儿的用脚本写的例子,你看他的结构其实是一个很大的IF……ELSE结构,但是很一个从句又都是用HTML写的,看起来象一个大的程序段。
不过你也不一定非得象numguess.jsp那样用HTML和JSP标签一起来写脚本。在<%和%>标签之间,你可以写任意多行的脚本代码,在通常情况下,尽量少用脚本来处理程序,而尽可能的使用servlets或者Beans,这样你的程序看起来会非常的清析,明了。话又说回来,怎么写JSP还得根据你的习惯和爱好,我不强迫非得使用任何一种方法,SUN的JSP详细说明书不规定脚本的长度。
用标签组合脚本
使用HTML和JSP标签来写脚本的时候,注意前后的标签不要忘记,一定要“封”好。说的不明白,举个例子吧:
<% } else { %> <!-- 用JSP标签的时候先关上 -->
... 这时候用JSP标签吧 ...
<% } %> <!-- 这样你应该看懂了吧?! -->
开始的时候这种做法看起来可能有一点奇怪,但它以确保你JSP文件编译的时候脚本的成功转换。
那么,脚本什么时候执行呢?
一个JSP原文件的处理分为两个阶段:一个是HTTP的编译时候,一个是请求的处理时间。
HTTP编译的时候,当用户第一次读JSP页面的时候,JSP的原代码被编译成CLASS,通常是servlet。HTML标签和JSP标签在这个时候同时被处理了,这之前用户还没有任何的请求被提交。
请求处理时间是当用户在JSP页面中提交了一个请求,这时请求由客户端被request对象传到了服务器端,JSP引擎根据用户提交的值执行编译过的JSP文件或者servlet。
当你在JSP页中使用脚本的时候,你必须知道他们什么时候被执行。声明在HTTP编译阶段就已经被处理了,其他脚本,表达式在编译JSP文件的时候也可用。表达式在HTTP编译的时候也被执行了。表达式的值被转换成了字符串被插入到JSP文件中一块儿被编译。其实在请求阶段,脚本也是可以利用的。
如何运行例子
我现在给出的都是在UNIX风格下的路径,如果你用Windows,那么改成Windows风格路径
1、猜数字游戏在装TOMCAT或者JSWDK的时候就已经装好了。
2、.jsp和.html文件在../jswdk-1.0.1/examples/num中
3、.java和.class文件在../jswdk-1.0.1/examples/WEB-INF/jsp/bean/num中
4、开浏览器,http://机器名/examples/jsp/num/numguess.jsp
- 作者: 04320710222shine 2005年12月2日, 星期五 16:46 回复(3) | 引用(0) 加入博采
什么叫做爱情
- 作者: 04320710222shine 2005年12月2日, 星期五 13:04 回复(3) | 引用(0) 加入博采
ORACLE SQL and SQL*PLUS
五、集合函数 经常和group by一起使用 六、子查询 八、概述数据模型和数据库设计 |
- 作者: 04320710222shine 2005年12月1日, 星期四 22:47 回复(4) | 引用(0) 加入博采
ORACLE SQL and SQL*PLUS
二、限制选择行
1. 按指定的规则排序
SELECT expr FROM table [ORDER BY {column, expr} [ASC | DESC] ];
默认的排序是ASC升序(由小到大)
还可以ORDER BY 字段名的位置[1]| [2] ASC| DESC;
当字段名很复杂或者是算术表达式时用字段名显示的位置排序很方便.
2. 用WHERE限制选择行(1)
比较操作符 = > < >= <= != <> ^= 与NULL比较不能用上面的比较操作符 ANY SOME ALL
SQL操作符 BETWEEN … AND… IN LIKE IS NULL
NOT BETWEEN … AND… NOT IN NOT LIKE IS NOT NULL
逻辑操作符 AND OR NOT
3. 用WHERE限制选择行(2)
比较顺序(可以用括号改变它们的顺序)
(1). = < > >= <= in like is null between
(2). and
(3). Or
注意: char和varchar2的比较规则有不同:
char比较时会忽略字符串后面的空格. varchar2会计算字符串后面的空格
4. LIKE操作
% 零到任意多个字符 _ 一个字符
例如: 字段名 like 'M%' 字段名 like '%m%' 字段名 like 'job_'
如果要找含下划线的字符, 要加反斜线 例如:字段名 like '%X/_Y%' escape '/'
5. 日期字段的比较
举例:
日期字段 between to_date('2001-12-12','YYYY-MM-DD') and to_date('2002-02-01','YYYY-MM-DD')
日期字段> to_date('2001-12-12','YYYY-MM-DD') and日期字段<= to_date('2002-02-01','YYYY-MM-DD');
6. 不能用到索引的比较操作符
IS NULL
IS NOT NULL
LIKE '%m%'
三、单行函数
1. 数字函数
ABS 取绝对值 POWER 乘方 LN 10为底数取幂
SQRT 平方根 EXP e的n次乘方 LOG(m,n) m为底数n取幂
数学运算函数:ACOS ATAN ATAN2 COS COSH SIGN SIN SINH TAN TANH
CEIL 大于或等于取整数
FLOOR 小于或等于取整数
MOD 取余数
ROUND(n,m) 按m的位数取四舍五入值如果round(日期): 中午12以后将是明天的日期. round(sysdate,'Y')是年的第一天
TRUNC(n,m) 按m的位数取前面的数值如果trunc(日期), 确省的是去掉时间
2. 字符函数
CHR 按数据库的字符集由数字返回字符
CONCAT(c1,c2) 把两个字符c1,c2组合成一个字符, 和 || 相同
REPLACE(c,s,r) 把字符c里出现s的字符替换成r, 返回新字符
SUBSTR(c,m,n) m大于0,字符c从前面m处开始取n位字符,m等于0和1一样,
m小与0,字符c从后面m处开始取n位字符
TRANSLATE(c,f1,t1) 字符c按f1到t1的规则转换成新的字符串
INITCAP 字符首字母大写,其它字符小写
LOWER 字符全部小写
UPPER 字符全部大写
LTRIM(c1,c2) 去掉字符c1左边出现的字符c2
RTRIM(c1,c2)
TRIM(c1,c2) 去掉字符c1左右两边的字符c2
LPAD(c1,n,c2) 字符c1按制定的位数n显示不足的位数用c2字符串替换左边的空位
RPAD(c1,n,c2)
3. 日期函数
ADD_MONTHS(d,n) 日期值加n月
LAST_DAY(d) 返回当月的最后一天的日期
MONTHS_BETWEEN(d1,d2) 两个日期值间的月份,d1<d2 返回负数
NEXT_DAY(d) 返回日期值下一天的日期
SYSDATE 当前的系统时间
DUAL是SYS用户下一个空表,它只有一个字段dummy
4. 转换函数(1)
TO_CHAR(date,'日期显示格式')
TO_CHAR(number) 用于显示或报表的格式对齐
TO_DATE(char,'日期显示格式')
TO_LOB 把long字段转换成lob字段
TO_NUMBER(char) 用于计算或者比较大小
4. 转换函数(2)
to_date里日期显示格式
YYYY 年 YEAR YYY YY Y
Q 季度
MM 月 MONTH MON
W 星期 (week of month) WW, IW (week of year)
(说明:周计是按ISO标准,从1月1日的星期数到后面七天为一周,不一定是从周一到周日)
DD 日 DAY DY
HH24 小时 HH12 HH
MI 分钟
SS 秒
如果想固定日期的显示格式可以在数据库的参数文件initorasid.ora里新写一行参数 NLS_DATE_FORMAT=yyyy-mm-dd hh24:mi:ss可以在UNIX环境变量或者NT的注册表里的设置 NLS_DATE_FORMAT=yyyy-mm-dd hh24:mi:ss
4. 转换函数(3)
如果想固定日期的显示格式可以用alter session命令改变
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
它的作用顺序如下:
initialization parameter
Environment variable
ALTER SESSION command
4. 转换函数 (4)
to_char(number)里数字显示格式
9 数字位
0 数字前面补0 to_char(-1200,'00000.00')
. 小数点的位置
, 标记位置的逗号 用在数字显示格式的左边
L 根据数据库字符集加货币符号 to_char(-1200,'L9999.99')
B 把数字0显示为空格,用在数字显示格式的右边
MI 右边的负数标记 to_char(-1200,'9999.99MI')
PR 括起来的负数 to_char(-1200,'9999.99PR')
EEEE 用指数方式表示 to_char(-1200,'9999.99EEEE')
5. 输入字符,返回数字的函数
instr(c1,c2) 字符c2出现在c1的位置, 不出现, 返回0, 常用于模糊查询
length© 按数据库的字符集,算出字符c的长度,跟数据库的字符集有关, 一个汉字长度为1
6. 有逻辑比较的函数NVL(EXPR1, EXPR2)函数
解释: IF EXPR1=NULL RETURN EXPR2
ELSE RETURN EXPR1
DECODE(AA,V1,R1,V2,R2....)函数
解释: IF AA=V1 THEN RETURN R1
IF AA=V2 THEN RETURN R2
..…
ELSE
RETURN NULL
举例: decode(id,1,'dept sale',2,'dept tech'
- 作者: 04320710222shine 2005年12月1日, 星期四 22:41 回复(0) | 引用(0) 加入博采
ORACLE SQL and SQL*PLUS
|
- 作者: 04320710222shine 2005年12月1日, 星期四 22:38 回复(0) | 引用(0) 加入博采
HR还能做什么
- 作者: 04320710222shine 2005年12月1日, 星期四 20:37 回复(0) | 引用(0) 加入博采
个人求职简历技巧
有的人认为,如果一份简历最能够充分表现自己的任职资格和工作能力以及经验等,那就算是写得最好的简历。其实这种看法并非反映了求职的真实状况。
简历的一个重要目的就是要尽可能地使招聘单位对你产生注意力和发生兴趣,能够使得人才交流中心和介绍所对你产生信任感或赞赏,看到了你的简历,就想把你推荐给用人单位。
一般说来,你想去的单位,其他人也有想要去的,招聘的人事部门可能同时收到十几份甚至更多的简历,一般说大多数简历都是大同小异(诸如格式、专业需求、能力等),许多简历可能看一眼就过去放在一边了。因此,你在简历中,必须要有引起人特别注意的东西,使对方对你有个好印象,否则就不可能指望有任何与对方面谈的机会了。
因此个人求职简历的好坏是决定你能否得到所求职位的第一关。
有的人认为,简历是求职者实际情况的自然陈述,是自己工作经历、所受教育学历、能力的描述。其实并非如此,你的简历必须要能够经得起淘汰,使得自己可以成为那几个被筛选到有机会接受面试的人之一。
所以有的人说,简历只是一个机遇或者一张门票,目的在于引起招聘单位的兴趣,为自己赢得面试的机会。
在前面已经谈过简历的几个功能,重要的一个就是要赢得面试机会,那么是不是为了达到这个目的就可以编造事实而弄虚作假呢?必须要记住:一定要实事求是,切忌弄虚作假。
写简历寄出,只是作为整个求职过程的一个环节,并非个人求职的最终目的。求职的最终目的是要获得这份工作,并再积极发展。
求职简历主要是为了获得一次面试机会或与招聘单位进一步接触的机会而并不是最后目的。
如果你捏造事实暂时获得了机会甚至感觉不错,倘若被对方发现,将会影响不好甚至将身败名裂。俗语说:好事不出门,坏事传千里,应该时时牢记。
- 作者: 04320710222shine 2005年12月1日, 星期四 19:57 回复(0) | 引用(0) 加入博采
反映你的专业水平
求职信可以展现出您的长处,能增加获得面试的机会。只有能体现个人聪明才智的求职信,才能帮助你顺利地谋求到一份理想的工作。
写作思路 求职信也是交际的一种形式,它可以反映出一个人的专业水平,从用人单位的角度出发考虑问题是使求职信产生积极效果的重要方法。求职者应该采取换位思考的方法,通过分析用人单位提出的要求,了解他们的需要,然后有针对性地向他们提供自己的背景资料,表现出自己独到的智慧与才干,使他们从你的身上看到希望,并做出对你有利的决定。
写作原则 根据求职的目的来布局谋篇,把重要的内容放在篇首,对相同或相似的内容进行归类组合,段与段之间按逻辑顺序衔接,从阅信人的角度出发组织内容。信件要具个人特色、亲切且能体现出专业水平,意思表达要直接、简洁,书写要清晰、简单明了,内容、语气、用词的选择和对希望的表达要积极,充分显示出你是一个乐观、有责任心和有创造力的人。
求职信的诸多不宜 不宜太长,一封求职信不能多于一页。不宜有文字上的错讹,切忌有错字、别字、病句及文理欠通顺的现象发生。不宜是履历的翻版,应与履历分开,自成一体。
写求职信要坚持实事求是的原则,用成就和事实代替华而不实的修饰语,恰如其分地介绍自己。要突出重点,针对某一单位的某一职位而求职,效果会更好。文字要顺畅,字迹要工整,求职信是用人单位对求职人的一次非正式的考核,用人单位可以通过信件了解求职者的语言修辞和文字表达能力,可以说求职信是用人单位对求职者取得第一印象的凭证。
求职信正确的写法 第一部分写明你要申请的职位和你是如何得知该职位的招聘信息的。第二部分说明你如何满足公司的要求,陈述个人技能和个性特征。第三部分表明你希望迅速得到回音,并标明与你联系的最佳方式。第四部分感谢对方阅读并考虑你的应聘。每封求职信应以针对适合雇主而精心设计,以此表明你明白该公司的需要。求职信还应包括与你所取得的成果及解决的问题的事例,这些事例与你所申请的工作类型相关。
求职信应是寄给有职位的某一特定的人, 使用高档纸书写,仔细校对,避免打字或语法方面的错误,要自存副本档案。
- 作者: 04320710222shine 2005年12月1日, 星期四 19:50 回复(0) | 引用(0) 加入博采
如何判断你的电脑是否含病毒
各种病毒时至今日也可算是百花齐放了,搞得人心惶惶,一旦发现自己的电脑有点异常就认定是病毒在作怪,到处找杀毒软件,一个不行,再来一个,总之似乎不找到"元凶"誓不罢休一样,结果病软件是用了一个又一个,或许为此人民币是用了一张又一张,还是未见"元凶"的踪影,其实这未必就是病毒在作怪。
这样的例子并不少见,特别是对于一些初级电脑用户。下面我就结合个人电脑使用及企业网络维护方面的防毒经验从以下几个方面给大家介绍介绍如何判断是否中了病毒,希望对帮助识别"真毒"有一定帮助!
病毒与软、硬件故障的区别和联系
电脑出故障不只是因为感染病毒才会有的,个人电脑使用过程中出现各种故障现象多是因为电脑本身的软、硬件故障引起的,网络上的多是由于权限设置所致。我们只有充分地了解两者的区别与联系,才能作出正确的判断,在真正病毒来了之时才会及时发现。下面我就简要列出了分别因病毒和软、硬件故障引起的一些常见电脑故障症状分析。
症状 病毒的入侵的可能性 软、硬件故障的可能性
经常死机:病毒打开了许多文件或占用了大量内存;不稳定(如内存质量差,硬件超频性能差等);运行了大容量的软件占用了大量的内存和磁盘空间;使用了一些测试软件(有许多BUG);硬盘空间不够等等;运行网络上的软件时经常死机也许是由于网络速度太慢,所运行的程序太大,或者自己的工作站硬件配置太低。
系统无法启动:病毒修改了硬盘的引导信息,或删除了某些启动文件。如引导型病毒引导文件损坏;硬盘损坏或参数设置不正确;系统文件人为地误删除等。
文件打不开:病毒修改了文件格式;病毒修改了文件链接位置。文件损坏;硬盘损坏;文件快捷方式对应的链接位置发生了变化;原来编辑文件的软件删除了;如果是在局域网中多表现为服务器中文件存放位置发生了变化,而工作站没有及时涮新服器的内容(长时间打开了资源管理器)。
经常报告内存不够:病毒非法占用了大量内存;打开了大量的软件;运行了需内存资源的软件;系统配置不正确;内存本就不够(目前基本内存要求为128M)等。
提示硬盘空间不够:病毒复制了大量的病毒文件(这个遇到过好几例,有时好端端的近10G硬盘安装了一个WIN98或WINNT4.0系统就说没空间了,一安装软件就提示硬盘空间不够。硬盘每个分区容量太小;安装了大量的大容量软件;所有软件都集中安装在一个分区之中;硬盘本身就小;如果是在局域网中系统管理员为每个用户设置了工作站用户的"私人盘"使用空间限制,因查看的是整个网络盘的大小,其实"私人盘"上容量已用完了。
软盘等设备未访问时出读写信号:病毒感染;软盘取走了还在打开曾经在软盘中打开过的文件。
出现大量来历不明的文件:病毒复制文件;可能是一些软件安装中产生的临时文件;也或许是一些软件的配置信息及运行记录。
启动黑屏:病毒感染(记得最深的是98年的4.26,我为CIH付出了好几千元的代价,那天我第一次开机到了Windows画面就死机了,第二次再开机就什么也没有了);显示器故障;显示卡故障;主板故障;超频过度;CPU损坏等等
数据丢失:病毒删除了文件;硬盘扇区损坏;因恢复文件而覆盖原文件;如果是在网络上的文件,也可能是由于其它用户误删除了。
键盘或鼠标无端地锁死:病毒作怪,特别要留意"木马";键盘或鼠标损坏;主板上键盘或鼠标接口损坏;运行了某个键盘或鼠标锁定程序,所运行的程序太大,长时间系统很忙,表现出按键盘或鼠标不起作用。
系统运行速度慢:病毒占用了内存和CPU资源,在后台运行了大量非法操作;硬件配置低;打开的程序太多或太大;系统配置不正确;如果是运行网络上的程序时多数是由于你的机器配置太低造成,也有可能是此时网路上正忙,有许多用户同时打开一个程序;还有一种可能就是你的硬盘空间不够用来运行程序时作临时交换数据用。
系统自动执行操作:病毒在后台执行非法操作;用户在注册表或启动组中设置了有关程序的自动运行;某些软件安装或升级后需自动重启系统。
通过以上的分析对比,我们知道其实大多数故障都可能是由于人为或软、硬件故障造成的,当我们发现异常后不要急于下断言,在杀毒还不能解决的情况下,应仔细分析故障的特征,排除软、硬件及人为的可能性。
病毒的分类及各自的特征
要真正地识别病毒,及时的查杀病毒,我们还有必要对病毒有一番较详细的了解,而且越详细越好!
病毒因为由众多分散的个人或组织单独编写,也没有一个标准去衡量、去划分,所以病毒的分类可按多个角度大体去分。
如按传染对象来分,病毒可以划分为以下几类:
a、引导型病毒
这类病毒攻击的对象就是磁盘的引导扇区,这样就能使系统在启动时获得优先的执行权,从而达到控制整个系统的目的,这类病毒因为感染的是引导扇区,所以造成的损失也就比较大,一般来说会造成系统无法正常启动,但查杀这类病毒也较容易,多数杀毒软件都能查杀这类病毒,如KV300、KILL系列等。
b、文件型病毒
早期的这类病毒一般是感染以exe、com等为扩展名的可执行文件,这样的话当你执行某个可执行文件时病毒程序就跟着激活。近期也有一些病毒感染以dll、ovl、sys等为扩展名的文件,因为这些文件通常是某程序的配置、链接文件,所以执行某程序时病毒也就自动被子加载了。它们加载的方法是通过插入病毒代码整段落或分散插入到这些文件的空白字节中,如CIH病毒就是把自己拆分成9段嵌入到PE结构的可执行文件中,感染后通常文件的字节数并不见增加,这就是它的隐蔽性的一面。
c、网络型病毒
这种病毒是近几来网络的高速发展的产物,感染的对象不再局限于单一的模式和单一的可执行文件,而是更加综合、更加隐蔽。现在一些网络型病毒几乎可以对所有的OFFICE文件进行感染,如WORD、EXCEL、电子邮件等。其攻击方式也有转变,从原始的删除、修改文件到现在进行文件加密、窃取用户有用信息(如黑客程序)等,传播的途经也发生了质的飞跃,不再局限磁盘,而是通过更加隐蔽的网络进行,如电子邮件、电子广告等。
d、复合型病毒
把它归为"复合型病毒",是因为它们同时具备了"引导型"和"文件型"病毒的某些特点,它们即可以感染磁盘的引导扇区文件,也可以感染某此可执行文件,如果没有对这类病毒进行全面的清除,则残留病毒可自我恢复,还会造成引导扇区文件和可执行文件的感染,所以这类病毒查杀难度极大,所用的杀毒软件要同时具备查杀两类病毒的功能。
以上是按照病毒感染的对象来分,如果按病毒的破坏程度来分,我们又可以将病毒划分为以下几种:
a、良性病毒:
这些病毒之所以把它们称之为良性病毒,是因为它们入侵的目的不是破坏你的系统,只是想玩一玩而已,多数是一些初级病毒发烧友想测试一下自己的开发病毒程序的水平。它们并不想破坏你的系统,只是发出某种声音,或出现一些提示,除了占用一定的硬盘空间和CPU处理时间外别无其它坏处。如一些木马病毒程序也是这样,只是想窃取你电脑中的一些通讯信息,如密码、IP地址等,以备有需要时用。
b、恶性病毒
我们把只对软件系统造成干扰、窃取信息、修改系统信息,不会造成硬件损坏、数据丢失等严重后果的病毒归之为"恶性病毒",这类病毒入侵后系统除了不能正常使用之外,别无其它损失,系统损坏后一般只需要重装系统的某个部分文件后即可恢复,当然还是要杀掉这些病毒之后重装系统。
c、极恶性病毒
这类病毒比上述b类病毒损坏的程度又要大些,一般如果是感染上这类病毒你的系统就要彻底崩溃,根本无法正常启动,你保分留在硬盘中的有用数据也可能随之不能获取,轻一点的还只是删除系统文件和应用程序等。
d、灾难性病毒
这类病毒从它的名字我们就可以知道它会给我们带来的破坏程度,这类病毒一般是破坏磁盘的引导扇区文件、修改文件分配表和硬盘分区表,造成系统根本无法启动,有时甚至会格式化或锁死你的硬盘,使你无法使用硬盘。如果一旦染上这类病毒,你的系统就很难恢复了,保留在硬盘中的数据也就很难获取了,所造成的损失是非常巨大的,所以我们进化论什么时候应作好最坏的打算,特别是针对企业用户,应充分作好灾难性备份,还好现在大多数大型企业都已认识到备份的意义所在,花巨资在每天的系统和数据备份上,虽然大家都知道或许几年也不可能遇到过这样灾难性的后果,但是还是放松这"万一"。我所在的雀巢就是这样,而且还非常重视这个问题。如98年4.26发作的CIH病毒就可划归此类,因为它不仅对软件造成破坏,更直接对硬盘、主板的BIOS等硬件造成破坏。
如按其入侵的方式来分为以下几种:
a、源代码嵌入攻击型
从它的名字我们就知道这类病毒入侵的主要是高级语言的源程序,病毒是在源程序编译之前插入病毒代码,最后随源程序一起被编译成可执行文件,这样刚生成的文件就是带毒文件。当然这类文件是极少数,因为这些病毒开发者不可能轻易得到那些软件开发公司编译前的源程序,况且这种入侵的方式难度较大,需要非常专业的编程水平。
b、代码取代攻击型
这类病毒主要是用它自身的病毒代码取代某个入侵程序的整个或部分模块,这类病毒也少见,它主要是攻击特定的程序,针对性较强,但是不易被发现,清除起来也较困难。
c、系统修改型
这类病毒主要是用自身程序覆盖或修改系统中的某些文件来达到调用或替代操作系统中的部分功能,由于是直接感染系统,危害较大,也是最为多见的一种病毒类型,多为文件型病毒。
d、外壳附加型
这类病毒通常是将其病毒附加在正常程序的头部或尾部,相当于给程序添加了一个外壳,在被感染的程序执行时,病毒代码先被执行,然后才将正常程序调入内存。目前大多数文件型的病毒属于这一类。
有了病毒的一些基本知识后现在我们就可以来检查你的电脑中是否含有病毒,要知道这些我们可以按以下几个方法来判断。
1、反病毒软件的扫描法
这恐怕是我们绝大数朋友首选,也恐怕是唯一的选择,现在病毒种类是越来越多,隐蔽的手段也越来越高明,所以给查杀病毒带来了新的难度,也给反病毒软件开发商带来挑战。但随着计算机程序开发语言的技术性提高、计算机网络越来越普及,病毒的开发和传播是越来越容易了,因而反病毒软件开发公司也是越来越多了。但目前比较有名的还是那么几个系统的反病毒软件,如金山毒霸、KV300、KILL、PC-cillin、VRV、瑞星、诺顿等。至于这些反病毒软件的使用在此就不必说叙了,我相信大家都有这个水平!
2、观察法
这一方法只有在了解了一些病毒发作的症状及常栖身的地方才能准确地观察到。如硬盘引导时经常出现死机、系统引导时间较长、运行速度很慢、不能访问硬盘、出现特殊的声音或提示等上述在第一大点中出现的故障时,我们首先要考虑的是病毒在作怪,但也不能一条胡洞走到底,上面我不是讲了软、硬件出现故障同样也可能出现那些症状嘛!对于如属病毒引起的我们可以从以下几个方面来观察:
a、内存观察
这一方法一般用在DOS下发现的病毒,我们可用DOS下的"mem/c/p"命令来查看各程序占用内存的情况,从中发现病毒占用内存的情况(一般不单独占用,而是依附在其它程序之中),有的病毒占用内存也比较隐蔽,用"mem/c/p"发现不了它,但可以看到总的基本内存640K之中少了那么区区1k或几K。
b、注册表观察法
这类方法一般适用于近来出现的所谓黑客程序,如木马程序,这些病毒一般是通过修改注册表中的启动、加载配置来达到自动启动或加载的,一般是在如下几个地方实现:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion
等等,具体可参考我的另一篇文章--《通通透透看木马》,在其中对注册表中可能出现的地方会有一个比较详尽的分析。
c、系统配置文件观察法
这类方法一般也是适用于黑客类程序,这类病毒一般在隐藏在system.ini 、wini.ini(Win9x/WinME)和启动组中,在system.ini文件中有一个"shell="项,而在wini.ini文件中有"load= "、"run= "项,这些病毒一般就是在这些项目中加载它们自身的程序的,注意有时是修改原有的某个程序。我们可以运行Win9x/WinME中的msconfig.exe程序来一项一项查看。具体也可参考我的《通通透透看木马》一文。
d、特征字符串观察法
这种方法主要是针对一些较特别的病毒,这些病毒入侵时会写相应的特征代码,如CIH病毒就会在入侵的文件中写入"CIH"这样的字符串,当然我们不可能轻易地发现,我们可以对主要的系统文件(如Explorer.exe)运用16进制代码编辑器进行编辑就可发现,当然编辑之前最好还要要备份,毕竟是主要系统文件。
e、硬盘空间观察法
有些病毒不会破坏你的系统文件,而仅是生成一个隐藏的文件,这个文件一般内容很少,但所占硬盘空间很大,有时大得让你的硬盘无法运行一般的程序,但是你查又看不到它,这时我们就要打开资源管理器,然后把所查看的内容属性设置成可查看所有属性的文件(这方法应不需要我来说吧?),相信这个庞然大物一定会到时显形的,因为病毒一般把它设置成隐藏属性的。到时删除它即可,这方面的例子在我进行电脑网络维护和个人电脑维修过程中见到几例,明明只安装了几个常用程序,为什么在C盘之中几个G的硬盘空间显示就没有了,经过上述方法一般能很快地让病毒显形的。
- 作者: 04320710222shine 2005年12月1日, 星期四 17:41 回复(1) | 引用(0) 加入博采
做份实用简历
除了毕业学校、所学专业、性别、年龄、联络方式这些基本内容,你给企业准备的简历中还应该包括以下内容:
你的教育背景(包括所有相关的专业技能培训等)与应聘的职位及业务相关的经验你曾经获得过的荣誉及奖励你的自我评价(优点阐述)你对如何开展业务方面的想法(没有把握的话建议不要写)
写简历的七忌
★不要像写论文那样准备厚厚的一本。企业看一份简历的时间一般不会超过5分钟,没有哪个企业领导会有耐心读你的“专著”,要善于抓住要点,建议长度不要超过2页A4纸。
★不要把那些跟职位和工作无关的兴趣爱好都一股脑地写进去,比如旅游、看小说、唱歌、钢琴九级等等,这些兴趣爱好通常不会给你加分。
★不要把在学校的各科成绩单都附上,你是去企业应聘,不是申请出国留学。当然,如果你的学习成绩特别优秀,那你就写上曾经连续几年拿过一等奖学金或者成绩全年级第几名等,这就足够了。
★简历不要设计得过于华丽,这会让用人单位觉得你太会包装自己,把工夫都用在了外表上,甚至认为你的简历是请专门的美术人员“装潢”出来的。
★与应聘职位无关的工作经验不要写。根据用人单位的性质、对职位的要求,提供出足以向用人单位证明自己能力的背景资料就可以了。
★简历中不要面面俱到地展示你的所有方面才能,这样用人单位会抓不住重点。
★建议不要在简历中写明最低薪水要求及职位要求,否则你可能失去面谈的机会,不要自己给自己设定过高的门槛。
专家建议一
突出学历或经验
如果你是名牌大学毕业生,那就尽量突出你毕业的学校;若是你所学的专业与应聘的工作内容非常对口,那就尽量突出你的专业背景;如果你学历背景没有优势,那就想方设法在经验上胜人一筹,好好挖掘自己的经验,比如你参与过的所有社会实践、实习活动、所研究过的课题等,尽量找出那些足以证明你的经验优势的信息来。
专家建议二
递简历时巧用心思
第一,给对方简历前,要尽量多地提前做些功课,好好上网查查招聘企业的资料,并针对性地修改简历,然后再去那个企业应聘。
第二,在企业招聘会现场给企业递交简历时,要选择人不是很多、很乱的时候,要争取多跟用人单位聊聊,增加对方的印象,最好能让对方把你的简历做上重点标注或者当时决定约你什么时间去公司再次面试,否则你的简历极有可能被淹没在一堆竞争者的简历当中永无出头之日。
第三,多准备一些自己觉得比较满意、能体现你的气质的近照,在给对方简历的同时也附上你的照片,这会加深对方对你印象。
第四,还应该尽量选择好要应聘的职位,找把握最大的职位应聘,不要对同一个公司应聘好多个不同的职位,那样用人单位会觉得你定位不清楚,不是专业人才。
- 作者: 04320710222shine 2005年12月1日, 星期四 16:36