1. 程式人生 > >javaweb基礎第八課:整合資料庫的登入

javaweb基礎第八課:整合資料庫的登入

  這節課我們在上節課的基礎上整合一下資料庫。

  既然要整合資料庫,首先得有一個數據庫,我們就起名叫javaweb_teach,字元編碼設定為utf8

  然後建一個user表

 

  然後開始整合,首先要新增包,說下往javaweb專案裡新增包的步驟:

  1. 在/WEB-INF下建一個資料夾叫lib(必須是這個名)
  2. 把需要的jar包拷貝到lib中
  3. 如果使用的是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>