按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
是浏览器在运行 jsp。实际上 jsp 是完全不知道浏览器的存在,它只是根据 http
形式的请求,发送 http 形式的响应,如果对面的浏览器能解析 http 形式的响应,
就能显示出页面来,幸运的是目前市面上的浏览器都能解析 http 形式的响应,
所以我们只要制造符合标准的数据,当作响应发送出去就行了。
其实一切都是这么简单,只要能了解它的运行原理,我们就可以在自己的舞台上
大施拳脚,不用为涉及不到的领域胡乱苦恼了。
下一章,我们就可以研究如何使用 jsp 了。
18 / 148
…………………………………………………………Page 19……………………………………………………………
第 2 章 让 jsp 说 hello
注意
为了保证循序渐进的学习状态,我们这里无可奈何的使用了一些在正式工作时明
令禁止的代码,请大家在阅读此章务求领会精神,千万不要死记硬背,以防遗憾
终身。
如果你不满足以下任一条件,请继续阅读,否则请跳过此后的部分,进入下一章:
第 3 章 请求的跳转与转发。
1。 了解从request 中获得参数的方法。
2。 了解一些 jsp 指令(directive)。
3。 了解中文乱码问题。
2。1。 另一个简单 jsp
上一篇举的例子很单纯,无论谁向服务器发送请求,服务器都只计算当前系统时
间,然后把这个时间制作成http 响应发还给浏览器。
可惜这种单向的响应没办法实现复杂的业务,比如像这样:
客户在这个页面输入自己的名字,然后提交:
服务器会对你说:“你好啊,XXX。”
返回刚才的页面,再输入另外一个名字:
19 / 148
…………………………………………………………Page 20……………………………………………………………
提交以后就变成这样:
呵呵,神奇吧,服务器知道你叫什么名字,而且还会向你问好。
虽然咱们都知道这只是从请求中获得了用户名,加上欢迎信息再发送回浏览器,
但最终用户会感到更亲切。下面就让我们来看一下如何从请求获得参数吧。
首先用户输入页面会是这样的:
username :
这里是一个简单的 form,里面只有一个名叫username 的文本框,点击提交之后
它的值就会提交到后台服务器上的 test。jsp。那么在 jsp 里,咱们如何得到用
户输入的 username 呢?
Hello
呼呼,原来就这么简单,前面的 Hello 是一成不变的,后面紧接包含的 java
代码。
只要是中间的部分就会被当成 java 代码执行,咱们就来看看 jsp 里是通过
什么途径获得请求中的参数吧。
首先是 request,翻译过来就是请求,它被称作 jsp 九大默认对象之一,与 http
请求相关的操作都是通过 request 实现的,你完全可以把它看作是浏览器发送过
来的 http 请求。
请求里就包含了我们需要获得的参数,你想要知道 username 的值吗?好的,只
要调用 getParameter(〃username〃)就可以获得了,你交给 request 一个参数名,
它会返回对应的参数值,因为 http 协议的限制,获得的参数值都是字符串,不
20 / 148
…………………………………………………………Page 21……………………………………………………………
过在参数不存在的时候,也会返回 null,所以一定要记住在使用之前判断是否
为 null,免得频繁出现NullPointerException。
好了,现在我们把得到的参数值输出即可,你可以对语句前面的等号感到疑惑,
它的意思就是把参数值输出到页面上,你也可以使用另一种方法:
Hello
上一种方法可以看作是它的简化形式,请注意如果使用第一种方法,是不需要在
java 代码最后加上分号的,而第二种方法必须加上分号。因为第一种方法是特
殊的简化写法,第二种方法是标准的 java 代码,稍微留意一下就可以区分了。
例子在 lingo…sample/02…01/,将目录复制到 tomcat 的webapp 目录下,启动
tomcat 后可以访问 http://localhost:8080/02…01/进行测试。
2。2。 中文乱码
你有没有发现,我们的例子中没有中文?
并不是我们不想使用中文,那是因为在 jsp 中使用中文是一个历史悠久的大问
题,虽然等你解决了之后会觉得它是那么简单,但对于没经验的新手来说,中文
乱码问题足以搞得他们焦头烂额了。
现在我们就要带领你闯过这道关,消灭掉请求和响应中可能出现的乱码,还中文
英雄本色。
2。2。1。 先解决响应中的乱码
何为响应中的乱码?把页面中的“username”改成“用户名”你就知道了。
所谓响应中的乱码,就是显示页面上的乱码,因为页面数据是从服务器一端放入
响应(response)中,然后发送给浏览器,如果响应中的数据无法被正常解析,
就会出现乱码问题。
为什么英文就没有问题呢?因为在 iso…8859…1,gb2312; utf…8 以及任意一种编
码格式下,英文编码格式都是一样的,每个字符占 8 位,而中文就麻烦了,在
gb2312 下一个中文占 16 位,两字节,而在 utf…8 下一个中文要占 24 位,三字
节。浏览器在不知道确定编码方式的情况下,就会把这些字符从中间截断,再显
21 / 148
…………………………………………………………Page 22……………………………………………………………
示的时候就乱掉了。所以,想要解决乱码问题,就是要告诉浏览器我们到底使用
了什么样的编码方式。
为了获得正常显示的中文,需要注意以下几步:
1。 因为服务器要先从本地读取 jsp 文件,然后经过处理后写入响应,所以我
们首先要知道的就是 jsp 文件的编码格式。从问题的源头着手解决。
在咱们用的 windowxp 下,文件默认的编码格式是 gb2312。
2。 我们要在 http 的响应(response)中添加编码信息,使用如下方式:
这段要放在 jsp 页面的第一行,用来指定响应的类型和编码格式,
contentType 为 text/html 就是 html 内容,charset 表示编码为 gb2312。
这样浏览器就可以从响应中获得编码格式了。
这种的形式叫做 jsp 指令(directive),现在接触到的是page
指令,还有 include 和 taglib 指令,我们会在后面陆续讲到。
3。 还需要在 html 中指定编码格式。