<c:forEach>为循环控制标签,功能是将集合中的成员按顺序浏览一遍
我的user表:
数据库的连接
ULutil.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DLutil {
//驱动名称
private String driver = "com.mysql.cj.jdbc.Driver";
// 获取mysql连接地址
private String url = "jdbc:mysql://localhost:3306/dbjsp?&useSSL=false&serverTimezone=UTC";//dbjsp是数据库名称
// 数据名称
private String username ="root";
// 数据库密码
private String password ="hh20000220!@#";
//连接数据库
public Connection getCon() {
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("数据库驱动加载失败!");
e.printStackTrace();
}
Connection conn = null;
try {
//getConnection()方法,连接MySQL数据库!
conn=DriverManager.getConnection(url,username,password);
}
catch(SQLException e1){
//数据库连接失败异常处理
e1.printStackTrace();
}
return conn; }
//关闭数据库连接
public void CloseCon(Connection conn) throws Exception {
if(conn!=null) {
conn.close();
}
}
public static void main(String[] args) {
DLutil dlu=new DLutil();
try { dlu.getCon();
System.out.println("数据库连接成功");
}
catch(Exception e2){
System.out.println("数据库连接失败");
e2.printStackTrace();
}
}
}
实体类User.java
public class User {
private String userid;
private String passwd;
private String name;
public User() {
super();
// TODO Auto-generated constructor stub
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
获取数据库的数据
EightDao.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import bean.User;
import util.DLutil;
public class EightDao {
public List AllUser() {
List<User> arr=new ArrayList<User>();
try { DLutil dtl=new DLutil();
Connection conn=dtl.getCon();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from user");
User user =null;
while (rs.next()) {
user=new User();
user.setUserid(rs.getString("userid"));
user.setName(rs.getString("name"));
user.setPasswd(rs.getString("passwd"));
arr.add(user);//集合保存user实体
}
return arr;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return arr;
}
}
Show.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib prefix="p" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="dao.EightDao"%>
<%@ page import="bean.User"%>
<%@ page import="java.util.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="1" >
<tr>
<th>账号id</th>
<th>姓名</th>
<th>密码</th>
</tr>
<%
EightDao ed=new EightDao();
List<User> al=ed.AllUser();
session.setAttribute("arrs",al);
%>
<tr>
<p:forEach items="${arrs}" var="user">
<td>${user.userid }</td>
<td>${user.name }</td>
<td>${user.passwd }</td>
</p:forEach>
</tr>
</table>
</body>
</html>
运行结果如下:
若想Show.jsp里不出现Java代码,我在用于验证用户登录信息LoginServlet那放写在jsp里的那块代码,不过有需要注意的点
LoginServlet.java里的跳转到Show,jsp时进行数据库的遍历查询存储
在Show.jsp的代码如下:
因为前面是用request去存储对象,所以在Show.jsp中需要用requestScope去接收对象