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

📄 appletlogin.java

📁 一个具体的jdbc编程实现
💻 JAVA
字号:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class AppletLogin extends HttpServlet
{
  public static String USER_KEY = "ServletLogin.user";
  static java.util.Hashtable crossRef;
  
  public void doGet(HttpServletRequest req,
                    HttpServletResponse resp)
    throws ServletException, java.io.IOException
    {
      // 设置输出类型
      resp.setContentType("text/html");

      // 定义个PrinterWriter变量来输出内容
      java.io.PrintWriter out = resp.getWriter();

      // 设置响应头
      // 强制页面从server端输出
      // 而不是从缓存(cache)中输出
      resp.setHeader("Expires", "Tues, 01 Jan 1980 00:00:00 GMT");

      // 通过session获取当前用户
      // 通过Form获取用户和密码
      HttpSession session = req.getSession(true);
      String user = (String) session.getValue(USER_KEY);

      if (user == null) {
        // 检查交叉引用表
        user = (String) crossRef.get(session.getId());

        if (user != null) {
          // 在表中发现用户
          // 于是把用户存入session中
          // 同时从交叉引用表中删除
          session.putValue(USER_KEY, user);
          crossRef.remove(session.getId());
        }
      }
      
      if (user == null) {

        // 如果没有发现用户,则显示初始的登录界面
        login(out, req);
        return;
      }
      
      // 打印标准头
      //显示登录成功的信息
      out.println("<html>");
      out.println("<head>");
      out.println("<title>欢迎光临</title>");
      out.println("</head>");
      out.println("<body>");
      out.println("<center><h2>登录成功!</h2>");
      out.println("<br>");
      out.println("</center>");
      
    
      out.println("</body>");
      out.println("</html>");
      out.flush();
    }

  public void doPost(HttpServletRequest req,
                    HttpServletResponse resp)
    throws ServletException, java.io.IOException
    {
      // 得到输入流,用来读取客户端的数据
      DataInputStream in =
        new DataInputStream(req.getInputStream());

      // 把二进制送回客户端,
      // 需要正确设置content-type的值
      resp.setContentType("application/octet-stream");

      // 数据必须写入一个字节缓冲区中
      // 这样我们就可以告诉客户端数据的长度
      ByteArrayOutputStream byteOut = new ByteArrayOutputStream();

      // 创建一个输出流,
      // 把数据写入缓冲区
      DataOutputStream out = new DataOutputStream(byteOut);

      // 读出正确的session
      String sessionId = in.readUTF();
      
      // 读取用户名和密码
      String user = in.readUTF();
      String password = in.readUTF();

      
      // 验证用户身份
      if (validUser(user, password)) {

        // 返回一个boolean类型的值
        // 代表用户是否合法
        out.writeBoolean(false);
      }
      else {

        // 如果用户合法,设置相应的交叉引用表
        // 同时返回一个boolean值表示用户合法
        
        crossRef.put(sessionId, user);
        out.writeBoolean(true);

        // 输出下一个将要显示的页面的URL
        out.writeUTF("http://10.9.41.41:8080/star" + req.getRequestURI());
      }
      
      // 把输出强制写入缓冲区
    
      out.flush();

      // 获得保存返回内容的缓冲区地址
      byte[] buf = byteOut.toByteArray();
      
      // 通知客户端发送的数据是多少
      resp.setContentLength(buf.length);

      // 把缓冲区内容输出到客户端
      ServletOutputStream servletOut = resp.getOutputStream();

      
      servletOut.write(buf);
      servletOut.close();
    }
  
  //下面是登录页面,包含了LoginApplet
  protected void login(java.io.PrintWriter out,
                       HttpServletRequest req)
    throws java.io.IOException
    {
    
      HttpSession session = req.getSession(true);
      
      out.println("<html>");
      out.println("<head>");
      out.println("<title>Login</title>");
      out.println("<center><h2>欢迎光临,请您先登录</h2>");
      out.println("<applet width=200 height=120");
      out.println("   name=\"LoginApplet\"");
      out.println("   codebase=\"http://10.9.41.41:8080/star\"");
      out.println("   code=\"LoginApplet\">");
      out.println("<param name=\"servlet\" value=\"" +
                  req.getRequestURI() + "\">");
      out.println("<param name=\"id\" value=\"" +
                  session.getId() + "\">");
      out.println("</applet>");
      out.println("</center></body></html>");
    }

  //下面这个函数用来验证用户是否合法
  protected boolean validUser(String username, String password)
    {
      boolean valid = false;

      // 对用户身份进行简单认证
      if ((username != null) && (username.length() > 0)) {
        valid = username.equals(password);
      }
      
      return valid;
    }
  
  //重载servlet的初始化函数
  public void init(ServletConfig cfg)
    throws ServletException
    {
      // 创建一个交叉引用表(哈希表)
     
      if (crossRef == null) {
        crossRef = new java.util.Hashtable();
      }
      
      super.init(cfg);
    }

  public void destroy()
    {
      super.destroy();
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -