javaweb基礎第八課:整合資料庫的登入
阿新 • • 發佈:2018-12-27
這節課我們在上節課的基礎上整合一下資料庫。
既然要整合資料庫,首先得有一個數據庫,我們就起名叫javaweb_teach,字元編碼設定為utf8
然後建一個user表
然後開始整合,首先要新增包,說下往javaweb專案裡新增包的步驟:
- 在/WEB-INF下建一個資料夾叫lib(必須是這個名)
- 把需要的jar包拷貝到lib中
- 如果使用的是idea,還需要在Project Structure裡新增依賴(eclipse無視此步驟)
以前我們寫過一個JdbcTool,我已經把這個專案打包成jar包了,等會上傳大家可以下下來直接用,注意別忘可mysql-connector
然後建個bean包,裡面放和資料庫對應的實體類
下一步,寫Mapper用於處理資料庫相關操作
LoginServlet.java:
package com.servlet; import com.bean.User; import com.dao.UserMapper; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import java.util.Map; //這個servlet用來處理登入請求 public class LoginServlet extends HttpServlet {private UserMapper userMapper = UserMapper.getInstance(); @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String username = req.getParameter("username"); String password = req.getParameter("password"); Map<String,Object> map = new HashMap<>(); map.put("username",username); map.put("password",password); try { List<User> users = userMapper.selectByExample(map); if (users != null && users.size() == 1) { User user = users.get(0); if (user != null) { //跳轉到登入成功的頁面 /** * 跳轉頁面使用request.getRequestDispatcher(要跳轉的頁面的路徑).forward(request,response); */ req.getRequestDispatcher("/WEB-INF/login_success.jsp").forward(req,resp); } else { //如果登入失敗,我們給點提示資訊 req.setAttribute("errorMsg","登入失敗"); //向request域裡設定屬性和值 req.getRequestDispatcher("/WEB-INF/login.jsp").forward(req,resp); } } else { //如果登入失敗,我們給點提示資訊 req.setAttribute("errorMsg","登入失敗"); //向request域裡設定屬性和值 req.getRequestDispatcher("/WEB-INF/login.jsp").forward(req,resp); } } catch (SQLException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } }
DataSource.java:
package com.dao; import com.tool.Dbc; import java.sql.Connection; import java.sql.SQLException; public class DataSource { private static String driver = "com.mysql.jdbc.Driver", url = "jdbc:mysql://localhost:3306/javaweb_teach", username = "root", password = "root"; public static Connection getConnection() throws SQLException, ClassNotFoundException { Connection connection = Dbc.getConnection(driver, url, username, password); return connection; } }
UserMapper.java
package com.dao; import com.bean.User; import com.tool.Mapper; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; //注意搞成單例 public class UserMapper extends Mapper<User> { private static UserMapper instance = null; private UserMapper(Connection connection) { super(connection); } private UserMapper(String dbcPropertiesPath) throws SQLException, IOException, ClassNotFoundException { super(dbcPropertiesPath); } public static UserMapper getInstance() { if (instance == null) { try { instance = new UserMapper(DataSource.getConnection()); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } return instance; } }
User.java:
package com.bean; public class User { private String username; private String password; public User() { } public User(String username, String password) { this.username = username; this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User{" + "username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>登入</title> </head> <body style="text-align: center"> <form style="margin-top: 100px;border: 1px solid black;text-align: center" action="/login" method="post"> <input type="text" name="username" placeholder="使用者名稱"><br><br> <input type="password" name="password" placeholder="密碼"><br><br> <!-- 這裡開始涉及jsp的知識了,下節課開始講,先看看效果 --> <scan><%=request.getAttribute("errorMsg")%></scan><br> <button type="submit">登入</button> </form> </body> </html>