目录
基于HTML+Servlet设计实现一个小型的彩票选号和公布中奖的Web系统,功能包括:
1)服务器端随机生成7个1-30之间的数字,作为本次彩票的中奖号码;
2)客户端提供一个含有7个文本框的界面,用户可以在每个文本框选择一个1-30之间的整数,选择完毕后提交;提交后服务器端判断用户选择的数字中了几个号码。如果中了7个号,界面为用户显示中了一等奖;如果中了6个号,界面为用户显示中了二等奖;如果中了5个号,界面为用户显示中了三等奖;少于5个号,界面为用户显示未中奖。
【说明:用Eclipse开发系统,完成后将整个项目文件打包后,以zip文件的上传。】
步骤 1: 设置开发环境
- 安装Java和Eclipse
- IDE 在Eclipse中创建一个新的Dynamic Web Project。
步骤 2: 创建HTML页面
在webapp目录下创建一个名为index.html的HTML页面,用于用户输入彩票号码。
<!DOCTYPE html>
<html>
<head>
<title>Lottery number picking</title> <!-- 彩票选号 -->
</head>
<body>
<h1>Lottery number picking</h1> <!-- 彩票选号 -->
<form action="CheckLotteryServlet" method="post">
<table>
<tr>
<th>number</th> <!-- 号码 -->
<th>choose</th> <!-- 选择 -->
</tr>
<tr>
<td>1</td>
<td><input type="number" min="1" max="30" name="number1" required></td>
</tr>
<tr>
<td>2</td>
<td><input type="number" min="1" max="30" name="number2" required></td>
</tr>
<tr>
<td>3</td>
<td><input type="number" min="1" max="30" name="number3" required></td>
</tr>
<tr>
<td>4</td>
<td><input type="number" min="1" max="30" name="number4" required></td>
</tr>
<tr>
<td>5</td>
<td><input type="number" min="1" max="30" name="number5" required></td>
</tr>
<tr>
<td>6</td>
<td><input type="number" min="1" max="30" name="number6" required></td>
</tr>
<tr>
<td>7</td>
<td><input type="number" min="1" max="30" name="number7" required></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="sub"></td> <!-- 提交 -->
</tr>
</table>
</form>
</body>
</html>
步骤 3: 创建Servlet类。
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/CheckLotteryServlet")
public class CheckLotteryServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 生成随机中奖号码
int[] winningNumbers = generateWinningNumbers();
// 从请求中获取用户选择的号码
int[] userNumbers = new int[7];
for (int i = 0; i < 7; i++) {
userNumbers[i] = Integer.parseInt(request.getParameter("number" + (i + 1)));
}
// 检查中奖情况
String result = checkLottery(winningNumbers, userNumbers);
// 输出结果
out.println("<html><body>");
out.println("<h2>Winning Results:</h2>"); // 中奖结果
out.println("<p>" + result + "</p>");
out.println("</body></html>");
out.close(); // 确保关闭输出流
}
private int[] generateWinningNumbers() {
int[] numbers = new int[7];
Random rand = new Random();
boolean[] used = new boolean[30];
for (int i = 0; i < 7; i++) {
int num;
do {
num = rand.nextInt(30) + 1;
} while (used[num - 1]);
numbers[i] = num;
used[num - 1] = true;
}
Arrays.sort(numbers);
return numbers;
}
private String checkLottery(int[] winningNumbers, int[] userNumbers) {
int matchCount = 0;
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
if (winningNumbers[i] == userNumbers[j]) {
matchCount++;
break; // 找到匹配项后继续查找下一个中奖号码
}
}
}
String result;
if (matchCount == 7) {
result = "Congratulations on winning the first prize!"; // 恭喜您中了一等奖!
} else if (matchCount == 6) {
result = "Congratulations on winning the second prize!"; // 恭喜您中了二等奖!
} else if (matchCount == 5) {
result = "Congratulations on winning the third prize!"; // 恭喜您中了三等奖!
} else {
result = "Unfortunately, you didn't win."; // 很遗憾,您未中奖。
}
return result;
}
}
步骤 4: 部署和运行
确保你的项目已经配置好了Tomcat服务器或其他Servlet容器。将项目部署到Tomcat服务器上。启动Tomcat服务器。在浏览器中访问http://localhost:8080/你的项目名/lottery.html(端口号8080和项目名可能因你的配置而异)。在页面上选择号码并提交,查看中奖结果。
步骤 5: 打包项目
右键点击你的项目 -> Export。选择WAR file,然后按照向导完成打包过程。打包完成后,你会得到一个.war文件,这就是你的Web应用的压缩包。