这仅仅是一个跟着视频学习的小系统,大牛就绕道啦~
系统实现的功能:
- 与mysql数据库连接,实现登陆功能
- 管理员登陆成功后能查看学生信息
- 扩展功能(完成删除与更新学生信息的操作)
系统实现过程:
- 写一个简单的登陆界面login.jsp ,并且使用LoginServlet获取登陆信息
- 在数据库里创建用户信息表
- 创建UserDao接口,定义登陆方法,创建UserDaoImpl类,实现UserDao接口的登陆方法
- 在LoginServlet里面访问UserDao ,判断登陆是否成功
- 创建stu_list.jsp,登陆成功则跳转
- 在数据库创建学生表
- 定义学生的StuDao接口,再定义一个StuDaoImpl实现StuDao接口的查询所有学生信息的方法
- 登陆成功后,查询所有学生,把这个所有的学生集合存储到session作用域中,跳转到stu_list.jsp
- 在stu_list.jsp中取出session作用域中的集合,然后使用jstl里的c标签遍历集合
先给出web工程的目录结构~
代码给出~
jdbc.properties
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
StuManagerSystem:<br>
<form action="LoginServlet" method="post">
账号:<input type="text" name="username"><br>
账号:<input type="password" name="password"><br>
<input type="submit" value="登陆"><br>
</form>
</body>
</html>
LoginServlet.java
package web.stu.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import web.stu.bean.Student;
import web.stu.dao.StuDao;
import web.stu.dao.UserDao;
import web.stu.dao.impl.StuDaoImpl;
import web.stu.dao.impl.UserDaoImpl;
//用于处理登陆的Servlet
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
//1.获取客户端提交的信息
String username=request.getParameter("username");
String password=request.getParameter("password");
//2.去访问dao,是否满足登陆
UserDao dao=new UserDaoImpl();
boolean isSuccess=dao.login(username, password);
//3.根据dao的返回结果,做出响应
if(isSuccess){
//response.getWriter().write("登陆成功!");
//1.查询所有的学生信息
StuDao studao=new StuDaoImpl();
List<Student> list=studao.findAll();
//2.把该集合存储到作用域
request.getSession().setAttribute("list", list);
//3.重定向 跳转
response.sendRedirect("stu_list.jsp");
}else{
response.getWriter().write("登陆失败!");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
UserDao.java
package web.stu.dao;
/*
该dao定义了对用户表的访问规则
*/
public interface UserDao {
boolean login(String username,String password);
}
UserDaoImpl.java
package web.stu.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import web.stu.dao.UserDao;
import web.stu.util.JDBCUtil;
public class UserDaoImpl implements UserDao {
public boolean login(String username,String password) {
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
//1.得到连接对象
conn=JDBCUtil.getConn();
String sql="select *from user where username=? and password=?";
//2.创建ps对象
ps=conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
//3.开始执行
rs=ps.executeQuery(); //如果能成功移到下一条记录,则说明有这个用户
return rs.next();
} catch (SQLException e) {
e.printStackTrace();
}finally{
JDBCUtil.release(conn, ps,rs);
}
return false;
}
}
stu_list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>StuManagerSystem</title>
</head>
<body>
<br><h2>学生列表</h2><br>
<table border="1" width="700">
<tr align="center">
<td>编号</td>
<td>姓名</td>
<td>年龄</td>
<td>电话号码</td>
<td>操作</td>
</tr>
<c:forEach items="${sessionScope.list }" var="stu">
<tr align="center">
<td>${stu.id }</td>
<td>${stu.name }</td>
<td>${stu.age }</td>
<td>${stu.num }</td>
<td><a href="#">更新</a> <a href="#">删除</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
JDBCUtil.java
package web.stu.util;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCUtil {
static String driverClass = null;
static String url = null;
static String name = null;
static String password= null;
static{
try {
//1. 创建一个属性配置对象
Properties properties = new Properties();
// InputStream is = new FileInputStream("jdbc.properties");
//使用类加载器,去读取src底下的资源文件。 后面在servlet
InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
//导入输入流。
properties.load(is);
//读取属性
driverClass = properties.getProperty("driverClass");
url = properties.getProperty("url");
name = properties.getProperty("name");
password = properties.getProperty("password");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取连接对象
* @return
*/
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(driverClass);
//静态代码块 ---> 类加载了,就执行。 java.sql.DriverManager.registerDriver(new Driver());
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");
//2. 建立连接 参数一: 协议 + 访问的数据库 , 参数二: 用户名 , 参数三: 密码。
conn = DriverManager.getConnection(url, name, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/**
* 释放资源
*/
public static void release(Connection conn , Statement st , ResultSet rs){
closeRs(rs);
closeSt(st);
closeConn(conn);
}
public static void release(Connection conn , Statement st){
closeSt(st);
closeConn(conn);
}
private static void closeRs(ResultSet rs){
try {
if(rs != null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs = null;
}
}
private static void closeSt(Statement st){
try {
if(st != null){
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
st = null;
}
}
private static void closeConn(Connection conn){
try {
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
conn = null;
}
}
}
Student.java
package web.stu.bean;
public class Student {
private int id;
private String name;
private String num;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
StuDao.java
package web.stu.dao;
import java.util.List;
import web.stu.bean.Student;
public interface StuDao {
//查询所有学生信息,返回List集合
List<Student> findAll();
}
StuDaoImpl.java
package web.stu.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import web.stu.bean.Student;
import web.stu.dao.StuDao;
import web.stu.util.JDBCUtil;
public class StuDaoImpl implements StuDao {
//实现StuDao接口,做查询功能
public List<Student> findAll() {
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
List<Student> list=new ArrayList<Student>();
try {
//1.得到连接对象
conn=JDBCUtil.getConn();
String sql="select *from stu";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
Student stu=new Student();
stu.setId(rs.getInt("id"));
stu.setAge(rs.getInt("age"));
stu.setName(rs.getString("name"));
stu.setNum(rs.getString("number"));
list.add(stu);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JDBCUtil.release(conn, ps,rs);
}
return list;
}
}