JavaWeb开发:Servlet与JSP的深入解析
立即解锁
发布时间: 2025-08-24 00:57:25 阅读量: 2 订阅数: 7 

### Java Web开发:Servlet与JSP的深入解析
#### 1. Servlet应用部署为WAR文件
在完成应用程序的开发和测试后,将其转换为WAR文件进行部署是很有必要的。WAR文件之所以重要,主要有以下两个原因:
- WebLogic Server在生产模式下仅识别WAR文件,不会识别或部署展开的目录结构。
- 要将Web应用程序部署到WebLogic集群,需要将应用程序复制到集群中的每台机器上,使用WAR文件进行此操作更加简便快捷。
以下是将BibleServlets应用程序部署为WAR文件的具体步骤:
1. 在WebLogic控制台中,从已部署的Web应用程序列表中删除BibleServlets应用程序。退出控制台并停止WebLogic Server。
2. 打开命令窗口,切换到BibleServlets目录。
3. 使用WebLogic的setenv.cmd实用程序设置类路径,然后输入以下命令:
```
jar cv0f BibleServlets.war *
```
此命令指示JAR实用程序创建一个名为BibleServlets.war的WAR文件,并将BibleServlets目录中的所有文件复制到其中。第三个参数是零,表示不压缩文件。WebLogic可以更快地从非压缩文件中加载资源,因此如果需要最高性能,这是一个不错的选择。
4. 将BibleServlets.war文件从BibleServlets目录移动到WebLogic域的应用程序目录中。
5. 将BibleServlets目录移动到应用程序目录之外的其他位置,或者直接删除它。
6. 启动WebLogic Server。BibleServlets.war将自动部署,你可以像以前一样使用该应用程序。
#### 2. JavaServer Pages概述
JavaServer Pages API定义了J2EE环境中服务器端脚本的机制,WebLogic Server以其JSP容器的形式提供了该API的实现。
##### 2.1 JSP的发展历程
服务器端脚本在Web开发中并非新概念。早期,开发者在向浏览器提供静态内容后,就开始寻求提供动态内容以增强用户体验。
- **CGI**:以通用网关接口(CGI)形式出现的服务器端脚本,它可以是解释型脚本或编译型可执行文件,能够在Web服务器上访问、访问数据库并生成动态响应。然而,使用CGI的缺点是性能问题,因为每个CGI都作为一个单独的进程运行,每次向服务器发出请求都会导致一个CGI进程的创建和销毁,这非常消耗资源且难以扩展。
- **ASP**:微软引入了Active Server Pages(ASP),它允许使用VBScript或JScript与HTML混合的内联脚本来生成动态内容。ASP在Microsoft IIS服务器上进行解释(其他平台也有插件),并允许访问组件对象模型(COM)对象以进行外部功能调用,如数据库调用。尽管ASP在开发者易用性方面有了很大的进步,但由于其解释型环境,缺点仍然是性能和可扩展性,并且还依赖于微软环境。
- **JSP**:1998年,Sun Microsystems推出了JavaServer Pages API规范的第一版。它同样提供了使用Java进行内联脚本的方式,但通过利用强大且成功的Servlet技术,在性能上表现出色。从开发者的角度来看,它通过提供嵌入类似HTML标签和Java脚本的能力,提供了所需的易用性水平,还使开发者能够充分利用Java作为面向对象语言的优势。Sun通过将JSP预编译为Servlet来解决可扩展性问题,从而继承了在Java虚拟机中作为“轻量级进程”或线程执行的所有性能优势。
WebLogic Server 6.1支持JSP 1.2规范和Servlet 2.3规范,你可以分别从[http://java.sun.com/products/jsp/download.html](http://java.sun.com/products/jsp/download.html)和[http://java.sun.com/products/servlet/](http://java.sun.com/products/servlet/)下载这些规范的副本。
##### 2.2 JSP的工作原理
在最简单的情况下,用户通过请求以.jsp结尾的文件来请求JSP。例如:
```
http://www.bigbank.com/mystatement.jsp
```
当首次请求JSP时,WebLogic会将JSP转发给JSP编译器,编译器将JSP转换为Servlet,然后编译该Servlet。默认情况下,Java编译器是Sun Microsystems的javac编译器,但WebLogic允许你配置不同的Java编译器。
如果JSP编译成功,WebLogic Server将执行相应的Servlet并将其响应返回给用户。对于后续对该JSP的请求,WebLogic会自动执行Servlet,除非它检测到JSP的代码自上次编译后发生了更改。在这种情况下,WebLogic会重新提交JSP进行编译,然后执行新版本的Servlet。
需要注意的是,JSP中的代码对用户是不可见的,用户只能看到JSP(实际上是其Servlet)生成的HTML。JSP转换为Servlet是出于性能考虑,这种设计的一个重要副产品是,你可以在Servlet中编写的任何程序,也可以在JSP中编写,这使得JSP非常强大和灵活。
以下是WebLogic的JSP请求和编译过程的mermaid流程图:
```mermaid
graph TD;
A[用户请求JSP] --> B{首次请求?};
B -- 是 --> C[WebLogic转发JSP到编译器];
C --> D[编译器将JSP转换为Servlet];
D --> E[编译Servlet];
E --> F[WebLogic执行Servlet并返回响应];
B -- 否 --> G{代码是否更改?};
G -- 是 --> C;
G -- 否 --> F;
```
##### 2.3 JSP与Model - View - Controller设计模式
JSP是实现Model - View - Controller设计模式的一种很好的方式。按功能分离代码的概念称为解
0
0
复制全文
相关推荐









