Java Web编程:Applet与Servlet入门指南
在Web编程领域,Java提供了多种强大的工具来开发丰富的Web应用程序。本文将重点介绍Java Applet和Servlet的基本概念、创建方法以及相关的配置和测试步骤。
1. Java Applet概述
Applet是一种专门设计在互联网用户计算机的浏览器窗口中运行的Java应用程序。当用户访问包含Applet的网页时,Java Applet类会被下载到用户计算机并在本地运行。Applet会占据网页的一部分区域,并在该区域内执行各种操作。
1.1 Applet与Swing应用程序的区别
Applet与Swing应用程序有一些关键区别:
-
继承类不同
:Applet继承
JApplet
类,而Swing应用程序通常继承
JFrame
类。
JFrame
提供的是由操作系统窗口系统管理的窗口,而
JApplet
提供的是由Web浏览器管理的网页矩形区域。
-
启动方式不同
:独立的Swing应用程序通过JVM调用静态
main
方法启动,通常会创建一个继承
JFrame
的类的实例。而Applet由浏览器在启动时自动创建继承
JApplet
的类的实例,没有静态
main
方法,而是通过
init
方法启动。
-
关闭方式不同
:独立的Swing应用程序通常需要提供退出按钮或菜单命令让用户关闭程序,而Applet只要包含它的页面显示就会一直运行。
-
显示方式不同
:Applet显示在网页区域内,不能设置标题栏文本和默认关闭操作,用户也不能调整其大小。
-
安全限制
:出于安全考虑,Applet不能执行影响客户端计算机文件系统的操作,如读写文件或运行程序。
1.2 JApplet类的常用方法
JApplet
类的大部分功能与
JFrame
类相似,可以添加面板和其他组件、创建菜单等。以下是
JApplet
类常用的构造函数和方法:
| 构造函数/方法 | 描述 |
| ---- | ---- |
|
JApplet()
| 创建一个新的Applet,通常由浏览器加载时自动调用,无需手动调用。 |
|
void add(Component c)
| 向Applet中添加指定的组件。 |
|
void destroy()
| 由浏览器调用,通知Applet其内存即将被JVM回收,大多数Applet不需要重写此方法。 |
|
void init()
| 由浏览器调用,通知Applet已加载,此方法替代了Swing应用程序中
JFrame
类的构造函数。 |
|
void setLayout(LayoutManager layout)
| 设置Applet显示时用于控制组件排列的布局管理器,默认是边界布局管理器。 |
|
void setLocation(int x, int y)
| 设置Applet在屏幕上的x和y坐标,屏幕左上角为(0, 0)。 |
|
void setLocationRelativeTo(Component c)
| 如果参数为
null
,则将Applet居中显示在屏幕上。 |
|
void setSize(int width, int height)
| 设置Applet的宽度和高度。 |
|
void setJMenuBar(JMenuBar menu)
| 设置Applet的菜单。 |
|
void start()
| 由浏览器调用,通知Applet开始执行。 |
|
void stop()
| 当Applet暂时离开视图时由浏览器调用,如果需要在Applet隐藏时停止活动,可以重写此方法。 |
1.3 示例Applet代码
以下是一个完整的Applet示例,允许用户选择三种尺寸(小、中、大)和三种配料(意大利辣香肠、蘑菇、凤尾鱼)来订购披萨:
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;
public class PizzaApplet extends JApplet {
private JButton buttonOK;
private JRadioButton small, medium, large;
private JCheckBox pepperoni, mushrooms, anchovies;
public void init() {
this.setSize(320, 200);
ButtonListener bl = new ButtonListener();
JPanel mainPanel = new JPanel();
JPanel sizePanel = new JPanel();
Border b1 = BorderFactory.createTitledBorder("Size");
sizePanel.setBorder(b1);
ButtonGroup sizeGroup = new ButtonGroup();
small = new JRadioButton("Small");
small.setSelected(true);
sizePanel.add(small);
sizeGroup.add(small);
medium = new JRadioButton("Medium");
sizePanel.add(medium);
sizeGroup.add(medium);
large = new JRadioButton("Large");
sizePanel.add(large);
sizeGroup.add(large);
mainPanel.add(sizePanel);
JPanel topPanel = new JPanel();
Border b2 = BorderFactory.createTitledBorder("Toppings");
topPanel.setBorder(b2);
pepperoni = new JCheckBox("Pepperoni");
topPanel.add(pepperoni);
mushrooms = new JCheckBox("Mushrooms");
topPanel.add(mushrooms);
anchovies = new JCheckBox("Anchovies");
topPanel.add(anchovies);
mainPanel.add(topPanel);
buttonOK = new JButton("OK");
buttonOK.addActionListener(bl);
mainPanel.add(buttonOK);
this.add(mainPanel);
this.setVisible(true);
}
private class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == buttonOK) {
String tops = "";
if (pepperoni.isSelected())
tops += "Pepperoni\n";
if (mushrooms.isSelected())
tops += "Mushrooms\n";
if (anchovies.isSelected())
tops += "Anchovies\n";
String msg = "You ordered a ";
if (small.isSelected())
msg += "small pizza with ";
if (medium.isSelected())
msg += "medium pizza with ";
if (large.isSelected())
msg += "large pizza with ";
if (tops.equals(""))
msg += "no toppings.";
else
msg += "the following toppings:\n" + tops;
JOptionPane.showMessageDialog(buttonOK, msg, "Your Order", JOptionPane.INFORMATION_MESSAGE);
pepperoni.setSelected(false);
mushrooms.setSelected(false);
anchovies.setSelected(false);
small.setSelected(true);
}
}
}
}
在这个示例中,需要注意以下几点:
- 类继承
JApplet
而不是
JFrame
。
- 重写
init
方法,并将通常放在
JFrame
类构造函数中的代码放在
init
方法中。
- 调用
setSize
方法设置Applet的大小。
- 移除了
setTitle
和
setDefaultCloseAction
方法,因为这些方法不适用于Applet。
1.4 创建HTML页面显示Applet
要运行Applet,需要创建一个包含
APPLET
标签的HTML页面,指定Applet的名称和运行区域的大小。
APPLET
标签还可以包含在浏览器无法运行Applet时显示的文本。以下是一个示例HTML文件:
<html>
<head>
<title>The Pizza Applet</title>
</head>
<body>
<H1>Welcome to the Pizza Applet!</H1>
<APPLET code="PizzaApplet" width="300" height="180">
Sorry, your browser isn't able to run Java applets.
</APPLET>
</body>
</html>
1.5 测试Applet
Java提供了一个名为
applet viewer
的特殊程序,可以在编译Applet后快速运行它。如果使用TextPad,可以在编译Applet后按
Ctrl+3
调用
applet viewer
。从命令提示符运行时,需要先创建一个HTML文件,然后导航到包含该HTML文件的目录,输入以下命令:
appletviewer filename
例如,要显示名为
PizzaApplet.html
的HTML文件中的披萨Applet,可以使用以下命令:
appletviewer PizzaApplet.html
2. Java Servlet概述
Servlet是当今开发Web应用程序最流行的方式之一,许多知名的网站都由Servlet提供支持。Servlet是一种扩展
javax.servlet.Servlet
类的Java程序,可以在Web服务器上响应用户请求,并将输出以HTML页面的形式返回给用户。
2.1 理解Servlet的工作原理
在了解Servlet之前,需要先了解Web服务器的基本工作原理。Web服务器使用HTTP协议向用户发送网页,HTTP采用请求/响应模型,客户端计算机通过URL向HTTP服务器发送请求消息,服务器接收请求后检索相应的文件,并以HTTP响应消息的形式将文件返回给客户端。
普通的Web交互是静态的,即发送给用户的文件内容始终相同。而Servlet提供了一种动态内容的实现方式。当用户请求的URL指向Servlet而不是文件时,服务器会接收Servlet请求,定位并运行相应的Java程序,将程序的输出以HTTP响应消息的形式返回给客户端。
2.2 使用Tomcat运行Servlet
要运行Servlet程序,需要安装一个Servlet引擎,将计算机转换为能够运行Servlet的服务器。最知名的Servlet引擎是Tomcat,可从Apache软件基金会的网站(jakarta.apache.org/tomcat)免费下载。
以下是在Windows XP系统上安装和配置Tomcat 5.5的步骤:
1.
下载Tomcat Zip文件
:从Apache网站下载Tomcat Zip文件,建议下载Zip文件而不是可执行安装文件。
2.
解压文件
:右键单击Zip文件,选择“Extract All”,将文件解压到
c:\
目录。解压后,将生成的文件夹重命名为更易输入的名称,如
c:\tomcat
。
3.
创建环境变量
JAVA_HOME
:打开控制面板,双击“System”图标,点击“Advanced”选项卡,然后点击“Environment Variables”。点击“New”,创建一个名为
JAVA_HOME
的变量,其值为JDK安装文件夹的完整路径,如
c:\Program Files\Java\jdk1.5.0
。
4.
复制
servlet-api.jar
文件
:将
c:\tomcat\common\lib
目录下的
servlet-api.jar
文件复制到JDK根目录的
jre\lib\ext
文件夹中。
5.
编辑
context.xml
配置文件
:打开
c:\tomcat\conf
目录下的
context.xml
文件,将第二行的
<Context>
改为
<Context reloadable="true">
。
6.
修改
web.xml
文件
:打开
c:\tomcat\conf
目录下的
web.xml
文件,找到并移除配置
invoker
Servlet的两组注释行,以启用
invoker
Servlet。
7.
创建
classes
目录
:在
c:\tomcat\webapps\ROOT\WEB-INF
目录下创建
classes
目录,Tomcat默认会在此目录中查找Servlet的类文件。
2.3 启动和停止Tomcat
安装和配置Tomcat后,可以通过以下步骤启动和停止Tomcat:
-
启动Tomcat
:打开命令窗口,切换到
c:\tomcat\bin
目录,输入
startup
命令。如果看到类似“INFO: Server startup in 2817 ms”的消息,说明Tomcat已成功启动。
-
停止Tomcat
:如果需要修改Tomcat的配置文件,可以在修改后通过运行
c:\tomcat\bin
目录下的
shutdown
命令停止Tomcat,然后再次运行
startup
命令启动。
如果Tomcat窗口出现几秒后关闭并显示异常消息,可能是因为系统中已经有一个Web服务器在运行,占用了Tomcat想要使用的HTTP通信端口。可以编辑
c:\tomcat\conf
目录下的
server.xml
文件,找到
<Connector port="8080" ... />
标签,将端口号改为其他值,如
18080
。
2.4 测试Tomcat
要验证Tomcat是否安装正确,可以打开浏览器窗口,输入以下地址:
http://localhost:8080/servlets-examples/index.html
如果修改了端口号,需要使用修改后的端口号代替
8080
。如果页面正常显示,说明Tomcat安装成功。滚动页面可以找到各种示例Servlet的链接和源代码,通过运行这些示例可以了解Servlet的工作原理和使用方法。
通过以上介绍,你已经了解了Java Applet和Servlet的基本概念、创建方法以及相关的配置和测试步骤。Applet适用于在网页中嵌入小型的Java应用程序,但由于安全和兼容性问题,不是创建面向大众的Web应用程序的最佳选择。而Servlet提供了一种动态内容的实现方式,是开发Web应用程序的重要工具之一。希望这些内容对你的Web编程学习有所帮助。
Java Web编程:Applet与Servlet入门指南
3. 深入理解Servlet的应用场景与优势
Servlet在Web开发中有着广泛的应用场景,其优势也十分明显。
3.1 应用场景
- 动态内容生成 :如电商网站的商品详情页,根据用户的不同选择和数据库中的数据动态生成页面内容。
- 用户交互处理 :处理用户在表单中提交的数据,如注册、登录等操作。
- 数据处理与业务逻辑实现 :对用户提交的数据进行验证、处理和存储,实现复杂的业务逻辑。
3.2 优势
- 性能高效 :Servlet运行在服务器端,处理请求和生成响应的速度快,能够高效地处理大量并发请求。
- 可扩展性强 :可以方便地与其他Java技术集成,如数据库、缓存等,实现更复杂的功能。
- 安全性高 :Servlet可以对用户请求进行严格的验证和过滤,防止恶意攻击和数据泄露。
4. 创建简单Servlet示例
下面通过一个简单的示例来演示如何创建一个Servlet。
4.1 编写Servlet代码
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class SimpleServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>Welcome to the Simple Servlet!</h1>");
out.println("</body></html>");
}
}
在这个示例中,
SimpleServlet
继承自
HttpServlet
,并重写了
doGet
方法。当用户通过GET请求访问该Servlet时,会返回一个包含欢迎信息的HTML页面。
4.2 配置Servlet
要让Tomcat能够识别和处理这个Servlet,需要在
web.xml
文件中进行配置。在
c:\tomcat\conf\web.xml
文件中添加以下内容:
<servlet>
<servlet-name>SimpleServlet</servlet-name>
<servlet-class>SimpleServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SimpleServlet</servlet-name>
<url-pattern>/simple</url-pattern>
</servlet-mapping>
上述配置将
SimpleServlet
映射到
/simple
这个URL模式,当用户访问
http://localhost:8080/simple
时,Tomcat会调用
SimpleServlet
来处理请求。
4.3 测试Servlet
将编译好的
SimpleServlet.class
文件复制到
c:\tomcat\webapps\ROOT\WEB-INF\classes
目录下,启动Tomcat后,在浏览器中输入
http://localhost:8080/simple
,如果看到欢迎信息的页面,说明Servlet配置和运行成功。
5. 处理表单数据的Servlet示例
除了简单的响应,Servlet还可以处理用户在表单中提交的数据。
5.1 创建HTML表单
<!DOCTYPE html>
<html>
<head>
<title>Form Example</title>
</head>
<body>
<form action="formServlet" method="post">
<label for="name">Name:</label>
<input type="text" id="name" name="name"><br>
<label for="email">Email:</label>
<input type="email" id="email" name="email"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
这个表单包含两个输入字段:姓名和邮箱,用户点击提交按钮后,表单数据将以POST请求的方式发送到
formServlet
。
5.2 编写处理表单数据的Servlet
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class FormServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
String email = request.getParameter("email");
out.println("<html><body>");
out.println("<h1>Thank you for submitting the form!</h1>");
out.println("<p>Name: " + name + "</p>");
out.println("<p>Email: " + email + "</p>");
out.println("</body></html>");
}
}
在
FormServlet
中,重写了
doPost
方法,获取表单中提交的姓名和邮箱数据,并将其显示在响应页面中。
5.3 配置和测试
同样,需要在
web.xml
文件中配置
FormServlet
:
<servlet>
<servlet-name>FormServlet</servlet-name>
<servlet-class>FormServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FormServlet</servlet-name>
<url-pattern>/formServlet</url-pattern>
</servlet-mapping>
将编译好的
FormServlet.class
文件复制到
c:\tomcat\webapps\ROOT\WEB-INF\classes
目录下,启动Tomcat后,在浏览器中打开HTML表单页面,填写数据并提交,即可看到处理结果页面。
6. 总结
通过以上内容,我们详细介绍了Java Applet和Servlet的基本概念、创建方法、配置和测试步骤。Applet可以在网页中嵌入小型的Java应用程序,但由于兼容性和安全问题,使用场景逐渐减少。而Servlet作为一种强大的Web开发技术,能够高效地处理用户请求,实现动态内容生成和复杂的业务逻辑,在现代Web开发中有着广泛的应用。
以下是一个简单的流程图,展示了Servlet处理用户请求的基本流程:
graph LR
A[用户发送请求] --> B[Web服务器接收请求]
B --> C{请求是否指向Servlet?}
C -- 是 --> D[Web服务器调用Servlet]
C -- 否 --> E[Web服务器返回静态文件]
D --> F[Servlet处理请求]
F --> G[Servlet生成响应]
G --> H[Web服务器将响应返回给用户]
希望本文能够帮助你快速入门Java Web编程,掌握Applet和Servlet的基本使用方法,为进一步学习和开发更复杂的Web应用程序打下坚实的基础。
超级会员免费看
32

被折叠的 条评论
为什么被折叠?



