JavaWeb ——servlet學習11之jsp小案例

JavaWeb ——servlet學習11之jsp小案例

導入數據庫lib包

在web/web-inf/lib 文件夾下加入數據庫lib包 mysql-connector-java-5.1.7-bin.jar

創建登錄頁的login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登錄頁</title>
</head>
<body>

    <h2>歡迎使用黑馬學生管理系統</h2>

    <form action="LoginServlet" method="post">
        賬號: <input type="text" name="username"/><br>
        密碼: <input type="password" name="password"/><br>
        <input type="submit" value="登錄">
    </form>
</body>
</html>

學生登錄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、通過數據庫驗證是否登錄成功
      boolean isLogin = new UserDaoImpl().login(userName, password);
      if(isLogin){
         // 3、從數據庫查詢所有學生信息
         List<Student> list = new StuDaoImpl().findAll();
         // 4、將學生集合存儲到作用域中
         request.getSession().setAttribute("list",list);
         // 4、重定向到學生列表
         response.sendRedirect("stu_list.jsp");
      }else {
         response.getWriter().write("登錄失敗");
      }
   }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      doGet(request, response);
   }
}

數據庫連接對象

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();
			
			// 使用類加載器,去讀取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);
			//1. 建立連接 參數一: 協議 + 訪問的數據庫 , 參數二: 用戶名 , 參數三: 密碼。
			conn = DriverManager.getConnection(url, name, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
	
	/**
	 * 釋放資源
	 * @param conn
	 * @param st
	 * @param rs
	 */
	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;
		}
	}
}

學生登錄實現類

public class UserDaoImpl implements UserDao {

   @Override
   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 students where sname=? 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;
   }
}

學生查詢登錄類

public class StuDaoImpl implements StuDao {

	@Override
	public List<Student> findAll() {
		List<Student> list = new ArrayList<Student>();
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs   = null;
		try {
			//1. 得到連接對象
			conn = JDBCUtil.getConn();
			String sql = "select * from students";
			
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			
			//數據多了,用對象裝, 對象也多了呢? 用集合裝。 
			while(rs.next()){ //10 次 ,10個學生
				Student stu = new Student();
				
				stu.setId(rs.getInt("id"));
				stu.setAge(rs.getInt("sage"));
				stu.setName(rs.getString("sname"));
				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;
	}
}

創建學生列表顯示頁面

<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="${sessionScope.list }" var="stu">
		
			<c:if test=""></c:if>
			<tr align="center">
				<td>${stu.id }</td>
				<td>${stu.name }</td>
				<td>${stu.age }</td>
				<td>${stu.gender }</td>
				<td>${stu.address }</td>
				<td><a href="#">更新</a>   <a href="#">刪除</a></td>
			</tr>
		</c:forEach>
	</table>

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章