没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
1
概述
1.1 Java Servlet
及其特点
Servlet
是
Java
技术对
CGI
编程的回答。
Servlet
程序在服务器端运行,动态地生成
Web
页面。与传
统的
CGI
和许多其他类似
CGI
的技术相比,
Java Servlet
具有更高的效率,更容易使用,功能更强大,具有更
好的可移植性,更节省投资(更重要的是,
Servlet
程序员收入要比
Perl
程序员高
:-
):
高效
在传统的
CGI
中,每个请求都要启动一个新的进程,如果
CGI
程序本身的执行时间较短,启动进程所
需要的开销很可能反而超过实际执行时间。而在
Servlet
中,每个请求由一个轻量级的
Java
线程处理(而不是
重量级的操作系统进程)。
在传统
CGI
中,如果有
N
个并发的对同一
CGI
程序的请求,则该
CGI
程序的代码在内存中重复装载
了
N
次;而对于
Servlet
,处理请求的是
N
个线程,只需要一份
Servlet
类代码。在性能优化方面,
Servlet
也比
CGI
有着更多的选择,比如缓冲以前的计算结果,保持数据库连接的活动,等等。
方便
Servlet
提供了大量的实用工具例程,例如自动地解析和解码
HTML
表单数据、读取和设置
HTTP
头、
处理
Cookie
、跟踪会话状态等。
功能强大
在
Servlet
中,许多使用传统
CGI
程序很难完成的任务都可以轻松地完成。例如,
Servlet
能够直接和
Web
服务器交互,而普通的
CGI
程序不能。
Servlet
还能够在各个程序之间共享数据,使得数据库连接池之类
的功能很容易实现。
可移植性好
Servlet
用
Java
编写,
Servlet API
具有完善的标准。因此,为
I-Planet Enterprise Server
写的
Servlet
无需任何实质上的改动即可移植到
Apache
、
Microsoft IIS
或者
WebStar?
负跛械闹髁鞣 衿鞫 贾苯踊蛲
ü
寮
С
諷
ervlet
。
节省投资
不仅有许多廉价甚至免费的
Web
服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它
不支持
Servlet
的话,要加上这部分功能也往往是免费的(或只需要极少的投资)。
1.2 JSP
及其特点
JavaServer Pages
(
JSP
)是一种实现普通静态
HTML
和动态
HTML
混合编码的技术,有关
JSP
基
础概念的说明请参见《
JSP
技术简介
》。
许多由
CGI
程序生成的页面大部分仍旧是静态
HTML
,动态内容只在页面中有限的几个部分出现。但
是包括
Servlet
在内的大多数
CGI
技术及其变种,总是通过程序生成整个页面。
JSP
使得我们可以分别创建这
两个部分。例如,下面就是一个简单的
JSP
页面:
欢迎
欢迎
,
要设置帐号信息,请点击
这里
页面的其余内容
...
下面是
JSP
和其他类似或相关技术的一个简单比较:
JSP
和
Active Server Pages
(
ASP
)相比
Microsoft
的
ASP
是一种和
JSP
类似的技术。
JSP
和
ASP
相比具有两方面的优点。首先,动态部分用
Java
编写,而不是
VB Script
或其他
Microsoft
语言,不仅功能更强大而且更易于使用。第二,
JSP
应用可以移
植到其他操作系统和非
Microsoft
的
Web
服务器上。
JSP
和纯
Servlet
相比
JSP
并没有增加任何本质上不能用
Servlet
实现的功能。但是,在
JSP
中编写静态
HTML
更加方便,
不必再用
println
语句来输出每一行
HTML
代码。更重要的是,借助内容和外观的分离,页面制作中不同性质的
任务可以方便地分开:比如,由页面设计专家进行
HTML
设计,同时留出供
Servlet
程序员插入动态内容的空间。
JSP
和服务器端包含(
Server-Side Include
,
SSI
)相比
SSI
是一种受到广泛支持的在静态
HTML
中引入外部代码的技术。
JSP
在这方面的支持更为完善,因
为它可以用
Servlet
而不是独立的程序来生成动态内容。另外,
SSI
实际上只用于简单的包含,而不是面向那些
能够处理表单数据、访问数据库的“真正的”程序。
JSP
和
javascript
相比
javascript
能够在客户端动态地生成
HTML
。虽然
javascript
很有用,但它只能处理以客户端环境为基
础的动态信息。除了
Cookie
之外,
HTTP
状态和表单提交数据对
javascript
来说都是不可用的。另外,由于是
在客户端运行,
javascript
不能访问服务器端资源,比如数据库、目录信息等等。
3.1 Servlet
基本结构
下面的代码显示了一个简单
Servlet
的基本结构。该
Servlet
处理的是
GET
请求,所谓的
GET
请求,
如果你不熟悉
HTTP
,可以把它看成是当用户在浏览器地址栏输入
URL
、点击
Web
页面中的链接、提交没有指
定
METHOD
的表单时浏览器所发出的请求。
Servlet
也可以很方便地处理
POST
请求。
POST
请求是提交那些
指定了
METHOD=“POST”
的表单时所发出的请求,具体请参见稍后几节的讨论。
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SomeServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
//
使用“
request”
读取和请求有关的信息(比如
Cookies
)
//
和表单数据
//
使用“
response”
指定
HTTP
应答状态代码和应答头
//
(比如指定内容类型,设置
Cookie
)
PrintWriter out = response.getWriter();
//
使用
"out"
把应答内容发送到浏览器
}
}
如果某个类要成为
Servlet
,则它应该从
HttpServlet
继承,根据数据是通过
GET
还是
POST
发送,覆
盖
doGet
、
doPost
方法之一或全部。
doGet
和
doPost
方法都有两个参数,分别为
HttpServletRequest
类型和
HttpServletResponse
类型。
HttpServletRequest
提供访问有关请求的信息的方法,例如表单数据、
HTTP
请求
头等等。
HttpServletResponse
除了提供用于指定
HTTP
应答状态(
200
,
404
等)、应答头(
Content-
Type
,
Set-Cookie
等)的方法之外,最重要的是它提供了一个用于向客户端发送数据的
PrintWriter
。对于简单
的
Servlet
来说,它的大部分工作是通过
println
语句生成向客户端发送的页面。
注意
doGet
和
doPost
抛出两个异常,因此你必须在声明中包含它们。另外,你还必须导入
java.io
包
(要用到
PrintWriter
等类)、
javax.servlet
包(要用到
HttpServlet
等类)以及
javax.servlet.http
包(要用到
HttpServletRequest
类和
HttpServletResponse
类)。
最后,
doGet
和
doPost
这两个方法是由
service
方法调用的,有时你可能需要直接覆盖
service
方法,
比如
Servlet
要处理
GET
和
POST
两种请求时。
3.2
输出纯文本的简单
Servlet
下面是一个输出纯文本的简单
Servlet
。
3.2.1 HelloWorld.java
package hall;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hello World");
}
}
3.2.2 Servlet
的编译和安装
不同的
Web
服务器上安装
Servlet
的具体细节可能不同,请参考
Web
服务器文档了解更权威的说明
?
俣ㄊ褂肑
ava Web Server
(
JWS
)
2.0
,则
Servlet
应该安装到
JWS
安装目录的
servlets
子目录下。在本文中,
为了避免同一服务器上不同用户的
Servlet
命名冲突,我们把所有
Servlet
都放入一个独立的包
hall
中;如果你
和其他人共用一个服务器,而且该服务器没有“虚拟服务器”机制来避免这种命名冲突,那么最好也使用包。把
Servlet
放入了包
hall
之后,
HelloWorld.java
实际上是放在
servlets
目录的
hall
子目录下。
大多数其他服务器的配置方法也相似,除了
JWS
之外,本文的
Servlet
和
JSP
示例已经在
BEA
WebLogic
和
IBM WebSphere 3.0
下经过测试。
WebSphere
具有优秀的虚拟服务器机制,因此,如果只是为了
避免命名冲突的话并非一定要用包。
对于没有使用过包的初学者,下面我们介绍编译包里面的类的两种方法。
一种方法是设置
CLASSPATH
,使其指向实际存放
Servlet
的目录的上一级目录(
Servlet
主目录),
剩余55页未读,继续阅读
liangzhwa
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0