📄 loginapplet.java
字号:
import java.applet.*;
import java.awt.*;
import java.io.*;
import java.net.*;
public class LoginApplet extends Applet
{
// 定义用户界面变量
TextField username;
TextField password;
Label message;
Button login;
String codeBase;
String servlet;
String nextDoc;
String sessionId;
/**
初始化
*/
public void init()
{
// 得到验证登录的servlet的文件名
//默认与applet在同一个目录下
codeBase = "" + getCodeBase();
servlet = getParameter("servlet");
// 保证codebase不以"/"结束,防止出现找不到servlet的错误
if (servlet != null) {
if (servlet.startsWith("/") && codeBase.endsWith("/")) {
codeBase = codeBase.substring(0, codeBase.length() - 1);
codeBase = "" + getCodeBase()+"/servlet";
}
}
// 获取sessionId
sessionId = getParameter("id");
// 设置背景色
setBackground(Color.white);
// 设置布局
setLayout(new BorderLayout(0, 5));
// 添加消息框
message = new Label();
add("North", message);
// 为输入域创建一个容器
Panel p = new Panel();
p.setLayout(new GridLayout(2, 2, 30, 20));
// 添加用户名标签和文本框
p.add(new Label("请输入用户名称:"));
username = new TextField(10);
p.add(username);
// 添加密码标签和文本框,以×为输入掩码
p.add(new Label("请输入用户密码:"));
password = new TextField(10);
password.setEchoCharacter('*');
p.add(password);
add("Center", p);
// 添加登录按钮
login = new Button("进入");
add("South", login);
}
/**
* 处理事件
*/
public boolean handleEvent(Event event)
{
if ((event != null) && (event.id == event.ACTION_EVENT)) {
if (event.target == login) {
message.setText("");
// 获取用户和密码
String user = username.getText();
String pw = password.getText();
// 验证用户
// 如果用户合法,则出现新的页面,
boolean valid = false;
try {
valid = validate(user, pw);
}
catch (Exception ex) {
ex.printStackTrace();
}
// Display a message for invalid users
if (valid) {
message.setText("用户不合法 - 请重试");
}
else {
// Show a new document
try {
getAppletContext().showDocument(new URL(nextDoc));
}
catch (Exception ex) {
message.setText("无效页面: " + nextDoc);
ex.printStackTrace();
}
}
}
}
return false;
}
/**
×下面这个函数用来验证用户和密码
*/
protected boolean validate(String user, String pw)
throws Exception
{
boolean valid = false;
// 获取服务器端的URL地址
java.net.URL url = new java.net.URL(codeBase + servlet);
// 与服务器端建立连接
java.net.URLConnection con = url.openConnection();
// 初始化连接
con.setUseCaches(false);
con.setDoOutput(true);
con.setDoInput(true);
// 把数据写入一个字节流缓冲区
// 这样我们可以得到它的长度
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
// 创建一个缓冲区
// 用来写入数据
DataOutputStream out = new DataOutputStream(byteOut);
// 设置sessionId值
out.writeUTF(sessionId);
// 发送用户和密码信息
out.writeUTF(user);
out.writeUTF(pw);
// 把数据强制输出到缓冲区
out.flush();
// 得到即将输出的缓冲区地址
byte buf[] = byteOut.toByteArray();
// 设置输出的类型
con.setRequestProperty("Content-type",
"application/octet-stream");
// 设置数据缓冲区长度
con.setRequestProperty("Content-length",
"" + buf.length);
// 得到输出到服务器端的输出流,
// 输出数据
DataOutputStream dataOut =
new DataOutputStream(con.getOutputStream());
dataOut.write(buf);
// 强制写入输出流,然后关闭流
dataOut.flush();
dataOut.close();
// 得到输入流,作为响应的内容
DataInputStream in =
new DataInputStream(con.getInputStream());
// 从server端得到验证结果
valid = in.readBoolean();
// 如果用户合法,
// 则显示相应的页面
if (valid) {
nextDoc = in.readUTF();
}
// 关闭输入流
in.close();
return valid;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -