基于html+servlet实现的小型彩票选号系统的二次开发

一、系统的主要功能和特点
1.用html+servlet+css实现的登录页面
2.用servlet实现输入彩票数字,随机生成随机数进行对应
3.Jsp+html公布获奖情况
二次开发:添加了注册功能,利用txt储存用户信息
添加了显示中奖号码功能
原代码:
LoginServlet.java
`
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

@WebServlet("/LoginServlet ")

public class LoginServlet extends HttpServlet {
// static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
// static final String DB_URL = "jdbc:mysql://localhost:3306/java_final_user?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai";
// static final String USER = "root";
// static final String PASS = "lhxl1010";
private static final long serialVersionUID = 1L;
public LoginServlet() {
super();
// TODO Auto-generated constructor stub
}
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
}
public void destroy() {
// TODO Auto-generated method stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
//以下解决中文输出乱码问题
response.setContentType("text/html; charset=utf-8");
//让浏览器用utf-8来解析返回的数据 
request.setCharacterEncoding("UTF-8");
//告诉servlet用UTF-8转码,而不是用默认的ISO8859

	String username =request.getParameter("html_username");
	String password =request.getParameter("html_password");
	PrintWriter out=response.getWriter();
	String filename = "F:\\user_data.txt";     //增加的代码
    boolean isMatch = false; // 用于检测用户名和密码是否匹配  
    try {    
        // 将用户名和密码写入文件
          try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {  
              String line;  
              while ((line = reader.readLine()) != null) {  
            	  if (line.contains("username:") && line.contains("password:")) {  
                      String[] parts = line.split(":");  
                      String storedUsername = parts[1].trim();  
                      String storedPassword = parts[3].trim();  
                  if (username.equals(storedUsername) && password.equals(storedPassword)) {  
                          isMatch = true; // 如果匹配到已存在的用户名和密码,设置isNew为false  
                          break; // 退出循环,不再继续检查其他行  
                      }  }
            	
          }  
    } 
          if (isMatch) { // 如果用户名和密码匹配,输出成功消息并重定向到login.html页面 
        	  
        	  out.print("<script language='javascript'>alert('登录成功');window.location.href='menu.html';</script>");
          
      }  
          else { // 如果用户名已存在,输出失败消息  
        	  out.print("<script language='javascript'>alert('登录失败,用户名或密码错误');window.location.href='login.html';</script>");
          }       
    }
    	catch (IOException e) {  

        e.printStackTrace();  

    }  


}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// doPost和doPost执行相同,他们不具有关联性。仅表明提交信息不敏感谁都可以处理
this.doGet(request, response);
}
}judge.javapackage servletpackage;

import java.util.*;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;

/**

  • Servlet implementation class judge
    */
    @WebServlet(asyncSupported = true, urlPatterns = { "/judge" })
    public class judge extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#HttpServlet()
      */
      public judge() {
      super();
      // TODO Auto-generated constructor stub
      }

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      doPost(request,response);
      }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      response.setContentType("text/html;charset=utf-8");
      Set cp = new TreeSet();
      PrintWriter out = response.getWriter();
      try {
      //产生随机数
      Random rand = new Random();
      while(cp.size()<7)
      {
      cp.add(rand.nextInt(30)+1);//生成[1,31)区间的随机整数
      }
      //接收表单数据(要类型转换)
      String num1 = (String)request.getParameter("num1");
      String num2 = (String)request.getParameter("num2");
      String num3 = (String)request.getParameter("num3");
      String num4 = (String)request.getParameter("num4");
      String num5 = (String)request.getParameter("num5");
      String num6 = (String)request.getParameter("num6");
      String num7 = (String)request.getParameter("num7");
      //数据处理
      //表单填写不完整(输入不合法)
      if(num1""||num2""||num3""||num4""||num5""||num6""||num7"") {
      out.println("请将表格填写完整");
      }
      else {
      TreeSet hs = new TreeSet();
      hs.add(num1);hs.add(num2);hs.add(num3);hs.add(num4);hs.add(num5);hs.add(num6);hs.add(num7);
      if(hs.size()<7)//输入的数据有相同的(输入不合法)
      {
      out.println("请输入七个不同的数!");
      }
      else//输入合法
      {
      //把String转回int
      Integer inum1= Integer.parseInt(num1);
      Integer inum2= Integer.parseInt(num2);
      Integer inum3= Integer.parseInt(num3);
      Integer inum4= Integer.parseInt(num4);
      Integer inum5= Integer.parseInt(num5);
      Integer inum6= Integer.parseInt(num6);
      Integer inum7= Integer.parseInt(num7);
      Integer[] cn = new Integer[7];
      cn[0]=inum1;cn[1]=inum2;cn[2]=inum3;cn[3]=inum4;cn[4]=inum5;cn[5]=inum6;cn[6]=inum7;
      //统计匹配(中奖)个数
      int count = 0;
      for(int i=0;i<7;i++){
      if(cp.contains(cn[i]))
      count++;
      }
      //输出处理
      out.println("中奖号码是:");
      out.print(cp.toString()+"
      ");//增加的代码
      if(count
      7){
      out.print("恭喜你中了一等奖
      ");
      }
      else if(count6){
      request.setAttribute("cp", cp);
      request.getRequestDispatcher("second.jsp").forward(request, response);
      }
      else if(count
      5){
      request.setAttribute("cp", cp);
      request.getRequestDispatcher("third.jsp").forward(request, response);

       		}
       		else{
       			request.setAttribute("cp", cp);
       			request.getRequestDispatcher("none.jsp").forward(request, response);
       		}
       	}	
       }
      

      }
      catch(Exception ex)
      {
      ex.printStackTrace();
      }

    }

}
first.jsp<%@ page language="java" contentType="text/html; UTF-8"
pageEncoding="UTF-8"%>

灵幻新隆彩票系统

超级幸运一等奖!

恭喜您的号码中了一等奖!
中奖金额为100万元!欢迎您的下次支持!

中奖号码是: <%= request.getAttribute("cp") %> //增加的代码
` second.jsp `<%@ page language="java" contentType="text/html; UTF-8" pageEncoding="UTF-8"%> 灵幻新隆彩票系统

三等奖!

您的号码中了二等奖!中奖金额为10万元!欢迎您的下次支持!

中奖号码是: <%= request.getAttribute("cp") %>//增加的代码
` thrid.jsp `<%@ page language="java" contentType="text/html; UTF-8" pageEncoding="UTF-8"%> 灵幻新隆彩票系统

三等奖!

您的号码中了三等奖!中奖金额为1万元!欢迎您的下次支持!

中奖号码是: <%= request.getAttribute("cp") %>
` none.jsp `<%@ page language="java" contentType="text/html; UTF-8" pageEncoding="UTF-8"%> 灵幻新隆彩票系统

号码未中奖!

很遗憾,您的号码没有中奖!我们诚恳地祝您下次好运!

中奖号码是: <%= request.getAttribute("cp") %>
</body>  
` login.html ` 灵幻新隆彩票系统

登录界面


none.html

灵幻新隆彩票系统

未中奖!

很遗憾,您的号码没有中奖!请继续努力,祝您好运!

中奖号码为:${requestScope.cn}

` index.html ` 灵幻新隆彩票系统
posted @   茶菹不是沮  阅读(89)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
点击右上角即可分享
微信分享提示