通过JSP九大内置对象创作一个简易的抽奖程序

6 篇文章 0 订阅

DBUtil工具类

package org.work.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBUtil {
	static {
		try {

			// 加载jdbc驱动程序

			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
		} catch (ClassNotFoundException e) {

			e.printStackTrace();
		}
	}

	public static Connection getConn() {
		Connection conn = null;
		try {
			// 使用DriverManager建立数据库连接

			conn = DriverManager.getConnection(
					"jdbc:sqlserver://127.0.0.1:1433;databaseName=consumer",
					"sa", "1");
		} catch (SQLException e) {
			System.err.println("连接失败");
		}

		return conn;

	}

	public static void getClose(PreparedStatement ps, ResultSet rs,
			Connection conn) {

		// 关闭资源

		try {
			if (ps != null) {
				ps.close();
			}
			if (rs != null) {
				rs.close();
			}
			if (conn != null) {
				conn.close();
			}
		} catch (SQLException e) {

			e.printStackTrace();
		}
	}
}

draw.jsp文件

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>My JSP 'draw.jsp' starting page</title>

		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

	</head>

	<body>

		<%
			Integer score = (Integer) request.getAttribute("score");
			String msg = "";
			if (score != null) {
				switch (score) {
				case -1:
					msg = "喜提25遍";
					break;
				case 0:
					msg = "喜提25遍";
					break;
				case 1:
					msg = "喜提20遍";
					break;
				case 2:
					msg = "喜提15遍";
					break;
				case 3:
					msg = "喜提10遍";
					break;
				case 4:
					msg = "喜提5遍";
					break;
				case 5:
					msg = "玩耍";
					break;

				}
			}
		%>
		<%=msg%><br />
		<form action="new.jsp" method="post">
			<input type="submit" value="抽奖">

		</form>
	</body>
</html>

new.jsp文件

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>My JSP 'new.jsp' starting page</title>

		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

	</head>

	<body>
		<%
			//从application内置对象中获取map

			HashMap<String, Integer> scoreMap = (HashMap<String, Integer>) application
					.getAttribute("scoreMap");

			//如果application中没有map,新建一个map
			if (scoreMap == null) {
				scoreMap = new HashMap<String, Integer>();

			}
			String ip = request.getRemoteAddr();

			//从map中查找是否有数据,如果没有数据就代表第一次访问,如果有数据就代表已经访问过
			Integer score = scoreMap.get(ip);
			if (score == null) {
				score = new Random().nextInt(7) - 1;
				scoreMap.put(ip, score);
			}

			//将上边操作过的map存入(更新)到application中
			application.setAttribute("scoreMap", scoreMap);
			request.setAttribute("score", score);
			request.getRequestDispatcher("draw.jsp").forward(request, response);
		%>
	</body>
</html>

login.jsp文件

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">


		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
		<style type="text/css">
table {
	margin: 0 auto;
}

.login {
	margin: 0 auto;
}
</style>

	</head>
	<%
		String msg = (String) request.getAttribute("msg");
		if (msg == null)
			msg = "";
	%>

	<body>
		<form action="login" method="post">
			<table>

				<tr>
					<td>
						用户名:
					</td>

					<td>
						<input type="text" name="userName">
					</td>
				</tr>
				<tr>
					<td>
						密码:
					</td>

					<td>
						<input type="password" name="pwd">
					</td>
				</tr>
				<tr>
					<td colspan="2">
						<span style="color: red"><%=msg%></span>

					</td>
				</tr>
				<tr>

					<td colspan="2" class="login">
						<input type="submit" value="登录">

					</td>
				</tr>
			</table>

		</form>
	</body>
</html>

LoginServlet.java文件

package org.work.test;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.work.util.DBUtil;

public class LoginServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doPost(request, response);
	}

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

		// 1.设置编码
		request.setCharacterEncoding("utf-8");

		// 2.获取参数
		String userName = request.getParameter("userName");
		String pwd = request.getParameter("pwd");

		HttpSession session = request.getSession();

		System.out.println(session.getId());
		// 连接数据库查询是否存在这样一条数据 如果存在跳到result.jsp
		String sql = "SELECT * FROM users WHERE user_name=? and pwd=?";

		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		boolean isTrue = false;

		// 调用util包下的DBUtil.getConn();加载驱动并和数据库建立连接

		conn = DBUtil.getConn();

		try {

			// 准备一个sql语句
			// 使用prepareStatement访问数据库
			ps = conn.prepareStatement(sql);
			ps.setString(1, userName);
			ps.setString(2, pwd);
			// 使用ResultSet接收访问数据库的反馈结果

			rs = ps.executeQuery();

			if (rs.next()) {
				isTrue = true;
			} else {
				isTrue = false;
			}

		} catch (SQLException e) {

			e.printStackTrace();
		}

		// 调用util包下的getClose();方法关闭资源

		DBUtil.getClose(ps, rs, conn);

		// 3.输出
		if (isTrue) {
			session.setAttribute("userName", userName);
			response.sendRedirect("result.jsp");

		} else {
			request.setAttribute("msg", "帐户名或密码错误!");
			request.getRequestDispatcher("login.jsp")
					.forward(request, response);

		}
	}

}

result.jsp文件

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>My JSP 'index.jsp' starting page</title>
		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	</head>

	<body>
		<%
			String userName = (String) session.getAttribute("userName");
			if (userName == null || "".equals(userName)) {
				response.sendRedirect("login.jsp");
			} else {
				System.out.println("jsp:" + session.getId());
				HashMap<String, Integer> scoreMap = (HashMap<String, Integer>) application
						.getAttribute("scoreMap");

				//遍历map
				if (scoreMap != null)
					for (String s : scoreMap.keySet()) {
						String key = s;
						Integer score = scoreMap.get(key);
						out.println(key + ":" + score + "分<br/>");

					}

			}
		%>
	</body>
</html>

最后页面的运行结果如下图:
抽奖页面
在这里插入图片描述
抽奖成功
在这里插入图片描述
登录页面
在这里插入图片描述
登陆失败页面
在这里插入图片描述
登陆成功页面
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值