学生信息管理系统
需求分析:
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