学生信息管理系统

需求分析:

学生信息管理系统

1.   先写 login.jsp , 并且搭配一个LoginServlet 去获取登录信息。

<h3>欢迎使用学生管理系统</h3>

<form action="LoginServlet" method="post">
	账号:<input type="text" name="username"/><br>
	密码:<input type="password" name="password"/><br>
	<input type="submit" value="登陆"/>
</form>

2、创建用户表, 里面只要有id , username  和 password、

3、 创建UserDao, 定义登录的方法 

/**
 *   该dao定义了对用户表的访问规则
*/
public interface UserDao {

/**
* 这里简单就返回一个Boolean类型, 成功或者失败即可。
* ​
* 但是开发的时候,登录的方法,一旦成功。这里应该返回该用户的个人信息
* @param userName 
* @param password
* ​
* @return true : 登录成功, false : 登录失败。
*/
boolean login(String userName , String password);
}

4、创建UserDaoImpl , 实现刚才定义的登录方法。

5、在LoginServlet里面访问UserDao, 判断登录结果。 以区分对待

6、创建stu_list.jsp , 让登录成功的时候跳转过去。

7、创建学生表 , 里面字段随意。 

8、定义学生的Dao . StuDao 

public interface StuDao {

	/**
	* 查询出来所有的学生信息
	* @return List集合
	*/
	List<Student> findAll();
}

9、对上面定义的StuDao 做出实现 StuDaoImpl

public class StuDaoImpl implements StuDao {

	@Override
	public List<Student> finaAll() {
		Connection conn = null;
		ResultSet rs = null;
		PreparedStatement ps = null;
		List<Student> list = new ArrayList();
			
		try {
			//1、得到连接对象
			conn = JDBCUtil.getCoon();
			
			String sql = "select * from t_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.setGender(rs.getString("gender"));
				stu.setAddress(rs.getString("address"));
				
				list.add(stu);
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			JDBCUtil.release(conn, ps, rs);
		}
		return list;
	}

}

10、 在登录成功的时候,完成三件事情。

>查询所有的学生

>把这个所有的学生集合存储到作用域中。

>跳转到stu_list.jsp

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");
		
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		
		System.out.println("user:" + username + "   " + "password:" + password);
		
		UserDao dao = new UserDaoImpl(); 
		boolean flag = dao.login(username,password);
		if(flag) {
			//1、查询出来所有的学生信息
			StuDao stuDao = new StuDaoImpl();
			List<Student> list = stuDao.finaAll();
			
			//2、先把这个集合存到作用域中
			request.getSession().setAttribute("list", list);
			
			//3、重定向
			response.sendRedirect("stu_list.jsp");
		}
		else {
			response.getWriter().write("登录失败");
		}
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

11、在stu_list.jsp中,取出域中的集合,然后使用c标签 去遍历集合。 

<body>

	<br>学生列表<br>
	<table border="1" width="700">
		<tr align="center">
			<td>编号</td>
			<td>姓名</td>
			<td>性别</td>
			<td>年龄</td>
			<td>住址</td>
			<td>操作</td>
		</tr>	
		
		<c:forEach items="${list }" var="stu">
		<tr align="center">
			<td>${stu.id }</td>
			<td>${stu.name }</td>
			<td>${stu.gender }</td>
			<td>${stu.age }</td>
			<td>${stu.address }</td>
			<td><a href="#">更新</a>    <a href="#">删除</a></td>
		</tr>	
		</c:forEach>
			
	</table>

</body>

注:JDBSutil代码为

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 getCoon(){
		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 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;
		}
	}

	private static void closeRs(ResultSet rs) {
		try {
			if(rs != null) {
				rs.close();
			}
		}catch(SQLException e) {
			e.printStackTrace();
		}finally {
			rs = null;
		}
	}

}

放在src下的jdbc.properties配置文件:

driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/stu
name=root
password=admin