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>