⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loginapplet.java

📁 一个具体的jdbc编程实现
💻 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 + -