jsp&servlet&jdbc&mysql实现简单的增删查改(二)

对数据库进行查询操作

1.查询指定记录

以设计一个简单的登录界面为例
步骤:
(1)启动数据库,选择相应的表(此项操作可详见上篇博客,此处我选择的仍然是test数据库下的t_user表)
当前表中所有记录:
在这里插入图片描述
(2)打开eclipse,在当前项目中的WebContent目录下新建一个jsp文件(我这里命名为signin.jsp),在源文件目录下选择合适的包新建一个Servlet文件(我这里命名为SigninServlet.java),以用作连接数据库,处理登录界面发送的请求参数等。
(3)选择用户进行登录需要验证的字段,相应的在jsp文件中编辑源代码(此处我选择的是使用username登陆,并进行密码验证;为提高查询效率,可在该列添加索引)。
在这里插入图片描述

signin.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户登陆</title>
</head>
<body>
	<form action="/blog/SigninServlet" method="post">
		登录名称:<input name="username" type="text" /><br /><p></p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码:<input name="password" type="password" /><br />
	   <p><input type="submit" /></p>
	</form>
</body>
</html>

显示效果:
在这里插入图片描述
(4)编辑SigninServlet.java源代码

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//定义变量接收参数
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		
		//为登陆时参数的输入设置条件
		boolean error = false;
		String errorMsg = " ";
		if (StringUtils.isEmpty(username)) {
			error = true;
			errorMsg = "用户名不允许为空";
		} else if (StringUtils.isEmpty(password)) {
			error = true;
			errorMsg = "密码不允许为空";
		}
		//如果上述条件不满足,则跳转到error.jsp(源代码可见上篇博客),并给出相应提示
		if (error) {
			request.setAttribute("errorMsg", errorMsg);
			RequestDispatcher dispatcher = request.getRequestDispatcher("error.jsp");
			dispatcher.forward(request, response);
			return;
		}
		
		
		Connection connection = null;
		Statement statement = null;
		try {
			//连接数据库,创建Statment接口
			connection = (Connection) DBUtil.getConnection();
			statement = (Statement) connection.createStatement();
			//准备sql语句
			String sql = "select * from t_user where username = '"+username+"' and password = '"+password+"'";
			System.out.println(sql);
			// 执行sql语句
			ResultSet resultSet =  statement.executeQuery(sql);
			resultSet.last();
			//判断登陆是否成功,如果成功则转到success.jsp页面,如失败则跳转到error.jsp页面,给出提示
			int rowCount = resultSet.getRow();
			if (rowCount <= 0) {
				request.setAttribute("errorMsg", "用户名或密码错误");
				RequestDispatcher dispatcher = request.getRequestDispatcher("error.jsp");
				dispatcher.forward(request, response);
				return;
			}
			request.setAttribute("msg", "登陆成功");
			RequestDispatcher dispatcher = request.getRequestDispatcher("success.jsp");
			dispatcher.forward(request, response);
			return;
			//捕获执行try操作中的异常
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			
			//关闭数据库连接和Statement接口
		} finally {
			if (connection != null) {
				try {
					connection.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if (statement != null) {
				try {
					statement.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}

		request.setAttribute("errorMsg", "系统异常");
		RequestDispatcher dispatcher = request.getRequestDispatcher("error.jsp");
		dispatcher.forward(request, response);
	}

}

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>status</title>
</head>
<body>

	<h1 style="color: red; text-align: center;">
	${msg}<!-- EL表达式 -->
	</h1>
	<a href="/blog/showUsers">查看所有注册用户</a><!-- 设置了一个链接,用于直接跳转到查看所有用户信息页面 -->
</body>
</html>

如果登录成功则页面显示:
在这里插入图片描述

2.查询表中所有记录

鉴于很多步骤都与前面的相同,所以这里就不做详细说明,只简单补充

(1)定义usreList.jsp文件用于显示所有用户信息界面
需导入jstl-1.2.jar包和standard-1.1.2.jar包(网上下载后直接copy到lib目录下)

usreList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>所有用户信息</title>
</head>
<body>
<table>
	<tr>
		<th>id</th>
		<th>邮箱</th>
		<th>电话号码</th>
		<th>用户名</th>
		<th>显示昵称</th>
		<th>密码</th>
		<th>创建时间</th>
		<th>更新时间</th>
	</tr>
	<!-- -jstl表达式 -->
<c:forEach items="${userList}" var="u" varStatus="status">
  <tr >
    <td>${u.id}
    </td>
    <td>${u.email}
    </td>
    <td>${u.phoneNumber}
    </td>
    <td>${u.username}
    </td>
    <td>${u.nickname}
    </td>
    <td>${u.password}
    </td>
     
    <td> <fmt:formatDate value="${u.createTime}" pattern="yyyy-MM-dd HH:mm:ss" />
    </td>
    <td><fmt:formatDate value="${u.updateTime}" pattern="yyyy-MM-dd HH:mm:ss" />
    </td>
  </tr>
</c:forEach>
</table>
</body>
</html>

(2)定义ShowUsersServlet处理请求
ShowUsersServlet

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		Connection connection = null;
		Statement statement = null;
		try {
			connection = (Connection) DBUtil.getConnection();
			statement = (Statement) connection.createStatement();
			// 准备sql语句
			String sql = "SELECT * FROM t_user";//sql语句,不区分大小写
			System.out.println(sql);
			
			ResultSet resultSet = statement.executeQuery(sql);
			List<User> userList = new ArrayList<User>();//封装不限长度的数组
			//遍历结果
			while (resultSet.next()) {
				User user = new User();
				user.setId(resultSet.getLong("id"));
				user.setEmail(resultSet.getString("email"));
				user.setPhoneNumber(resultSet.getString("phone_number"));
				user.setUsername(resultSet.getString("username"));
				user.setNickname(resultSet.getString("nickname"));
				user.setPassword(resultSet.getString("password"));
				user.setCreateTime(resultSet.getTimestamp("create_time"));
				user.setUpdateTime(resultSet.getTimestamp("update_time"));
				userList.add(user);
			}
			request.setAttribute("userList", userList);
			RequestDispatcher dispatcher = request.getRequestDispatcher("userList.jsp");
			dispatcher.forward(request, response);
			return;
		
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			//
		} finally {
			if (connection != null) {
				try {
					connection.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if (statement != null) {
				try {
					statement.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		request.setAttribute("errorMsg", "系统异常");
		RequestDispatcher dispatcher = request.getRequestDispatcher("error.jsp");
		dispatcher.forward(request, response);
	}

完成登录后点击链接显示:
在这里插入图片描述

拓展
JDBC resultSet关于时间的显示
(1)resultSet.getDate(); 显示日期部分——> yyyy -mm-dd
(2)resultSet.getTime(); 显示时间部分——> hh:mm:ss
(3)resultSet.getTime(); 显示日期和时间——> yyyy -mm-dd hh:mm:ss

发布了49 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ashleyjun/article/details/99710042
今日推荐