婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 關于JSP用戶登錄連接數據庫詳情

關于JSP用戶登錄連接數據庫詳情

熱門標簽:電銷機器人免培訓 潤滑油銷售電銷機器人 電話機器人需要使用網絡嗎 如何看懂地圖標注點 給地圖標注得傭金 外呼系統使用方法 自繪地圖標注數據 海外圖書館地圖標注點 南通通訊外呼系統產品介紹

關于JSP用戶登錄連接數據庫詳情

1、首先創建po類

與數據庫一一對應

lombok生成get set方法

package com.ftzlover.demo.po;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class User {

    private Integer userId; // 用戶ID
    private String uname; // 用戶名稱
    private String upwd; // 用戶密碼
    private String nick; // 用戶昵稱
    private String head; // 用戶頭像
    private String mood; // 用戶簽名
}

2、創建底層UserDao

這里就是所有創建好的層

3、創建UserService(一般都會調用UserDao)

 private UserDao userDao = new UserDao();

4、寫web層UserSrevlet

注意:

  1. 首先需要寫@WebServlet("/user")在頂端,
  2. 接下來讓其調用service層private UserService userService = new UserService();
  3. 然后讓后讓這個類繼承 HttpServlet

public class UserServlet extends HttpServlet {

4.1 重寫方法 

@Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

4.2創建vo層并在里面創建ResultInfo類用于封裝返回數據

創建狀態碼code 提示信息 返回對象

@Getter
@Setter
public class ResultInfoT> {

    private Integer code; // 狀態碼 成功=1,失敗=0
    private String msg; // 提示信息
    private T result; // 返回的對象(字符串、JavaBean、集合、Map等)

}

5、開始從Dao開始寫

Dao層:(數據訪問層:數據庫中的增刪改查操作)通過用戶名查詢用戶對象, 返回用戶對象

獲取數據庫連接

  1. 定義sql語句
  2. 預編譯
  3. 設置參數
  4.  執行查詢,返回結果集
  5. 判斷并分析結果集
  6. 關閉資源
package com.ftzlover.demo.dao;

import com.ftzlover.demo.po.User;
import com.ftzlover.demo.util.DBUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 *  Dao層:(數據訪問層:數據庫中的增刪改查操作)
 *         通過用戶名查詢用戶對象, 返回用戶對象
 *             1. 獲取數據庫連接
 *             2. 定義sql語句
 *             3. 預編譯
 *             4. 設置參數
 *             5. 執行查詢,返回結果集
 *             6. 判斷并分析結果集
 *             7. 關閉資源
 */
public class UserDao {

    public User queryUserByName(String userName){
        //首先創建對象
        User user = null;
        Connection connection = null;
        PreparedStatement preparedStatement = null;  //預編譯對象
        ResultSet resultSet = null;

        try {
            // 1. 獲取數據庫連接
            connection = DBUtil.getConnetion();
            // 2. 定義sql語句
            String sql = "select * from tb_user where uname = ?";
            // 3. 預編譯
            preparedStatement = connection.prepareStatement(sql);
            // 4. 設置參數
            preparedStatement.setString(1, userName);
            // 5. 執行查詢,返回結果集
            resultSet = preparedStatement.executeQuery();
            // 6. 判斷并分析結果集
            if (resultSet.next()) {
                user = new User();
                user.setUserId(resultSet.getInt("userId"));
                user.setUname(userName);
                user.setHead(resultSet.getString("head"));
                user.setMood(resultSet.getString("mood"));
                user.setNick(resultSet.getString("nick"));
                user.setUpwd(resultSet.getString("upwd"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 7. 關閉資源
            DBUtil.close(resultSet,preparedStatement,connection);
        }


        return  user;
    }
}

6、開始寫service層

package com.ftzlover.demo.service;

import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.DigestUtil;
import com.ftzlover.demo.dao.UserDao;
import com.ftzlover.demo.po.User;
import com.ftzlover.demo.vo.ResultInfo;
/*Service層:(業務邏輯層:參數判斷、業務邏輯處理)
        1. 判斷參數是否為空
        如果為空
        設置ResultInfo對象的狀態碼和提示信息
        返回resultInfo對象
        2. 如果不為空,通過用戶名查詢用戶對象
        3. 判斷用戶對象是否為空
        如果為空
        設置ResultInfo對象的狀態碼和提示信息
        返回resultInfo對象
        4. 如果用戶對象不為空,將數據庫中查詢到的用戶對象的密碼與前臺傳遞的密碼作比較 (將密碼加密后再比較)
        如果密碼不正確
        設置ResultInfo對象的狀態碼和提示信息
        返回resultInfo對象
        5. 如果密碼正確
        設置ResultInfo對象的狀態碼和提示信息
        6. 返回resultInfo對象

 */
public class UserService {
    private UserDao userDao = new UserDao();

    public ResultInfoUser> userLogin(String userName,String userPwd){
        ResultInfoUser> resultInfo = new ResultInfo>();

        // 數據回顯:當登錄實現時,將登錄信息返回給頁面顯示
        User u = new User();
        u.setUname(userName);
        u.setUpwd(userPwd);
        // 設置到resultInfo對象中
        resultInfo.setResult(u);

        //  1. 判斷參數是否為空
        if (StrUtil.isBlank(userName) || StrUtil.isBlank(userPwd)) {
            // 如果為空 設置ResultInfo對象的狀態碼和提示信息
            resultInfo.setCode(0);
            resultInfo.setMsg("用戶姓名或密碼不能為空!");
            // 返回resultInfo對象
            return resultInfo;

        }

        // 2. 如果不為空,通過用戶名查詢用戶對象
        User user = userDao.queryUserByName(userName);


        // 3. 判斷用戶對象是否為空
        if (user == null) {
            // 如果為空,設置ResultInfo對象的狀態碼和提示信息
            resultInfo.setCode(0);
            resultInfo.setMsg("該用戶不存在!");
            // 返回resultInfo對象
            return resultInfo;
        }

        //  4. 如果用戶對象不為空,將數據庫中查詢到的用戶對象的密碼與前臺傳遞的密碼作比較 (將密碼加密后再比較)
        // 將前臺傳遞的密碼按照MD5算法的方式加密
        userPwd = DigestUtil.md5Hex(userPwd);

        // 判斷加密后的密碼是否與數據庫中的一致
        if (!userPwd.equals(user.getUpwd())) {
            // 如果密碼不正確
            resultInfo.setCode(0);
            resultInfo.setMsg("用戶密碼不正確!");
            return resultInfo;
        }
        resultInfo.setCode(1);
        resultInfo.setResult(user);
        return resultInfo;
    }
}

7、編寫最后的Servelt層

7.1 用戶登陸

package com.ftzlover.demo.web;

import com.ftzlover.demo.po.User;
import com.ftzlover.demo.service.UserService;
import com.ftzlover.demo.vo.ResultInfo;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/user")
public class UserServlet extends HttpServlet {

    private UserService userService = new UserService();

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        // 接收用戶行為
        String actionName = request.getParameter("actionName");
        if ("login".equals(actionName)) {

            // 用戶登錄
            userLogin(request, response);

        }


    }
    /**
     * 用戶登錄
     1. 獲取參數 (姓名、密碼)
     2. 調用Service層的方法,返回ResultInfo對象
     3. 判斷是否登錄成功
     如果失敗
        將resultInfo對象設置到request作用域中
        請求轉發跳轉到登錄頁面
     如果成功
        將用戶信息設置到session作用域中
           判斷用戶是否選擇記住密碼(rem的值是1)
              如果是,將用戶姓名與密碼存到cookie中,設置失效時間,并響應給客戶端
              如果否,清空原有的cookie對象
     重定向跳轉到index頁面
     * @param request
     * @param response
     */

    private void userLogin(HttpServletRequest request, HttpServletResponse response) {
        // 1. 獲取參數 (姓名、密碼)
        String userName = request.getParameter("userName");
        String userPwd = request.getParameter("userPwd");

        // 2. 調用Service層的方法,返回ResultInfo對象
        ResultInfoUser> resultInfo = userService.userLogin(userName, userPwd);

        // 3. 判斷是否登錄成功
        if (resultInfo.getCode() == 1) { // 如果成功
            //  將用戶信息設置到session作用域中
            request.getSession().setAttribute("user", resultInfo.getResult());
            //  判斷用戶是否選擇記住密碼(rem的值是1)
            String rem = request.getParameter("rem");
            // 如果是,將用戶姓名與密碼存到cookie中,設置失效時間,并響應給客戶端
            if ("1".equals(rem)) {
                // 得到Cookie對象
                Cookie cookie = new Cookie("user",userName +"-"+userPwd);
                // 設置失效時間
                cookie.setMaxAge(3*24*60*60);
                // 響應給客戶端
                response.addCookie(cookie);
            } else {
                // 如果否,清空原有的cookie對象
                Cookie cookie = new Cookie("user", null);
                // 刪除cookie,設置maxage為0
                cookie.setMaxAge(0);
                // 響應給客戶端
                response.addCookie(cookie);
            }
            // 重定向跳轉到index頁面
            try {
                response.sendRedirect("index.html");
            } catch (IOException e) {
                e.printStackTrace();
            }

        } else { // 失敗
            // 將resultInfo對象設置到request作用域中
            request.setAttribute("resultInfo", resultInfo);
            // 請求轉發跳轉到登錄頁面
            try {
                request.getRequestDispatcher("login.jsp").forward(request, response);
            } catch (ServletException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }


}

附件:util層的DBUtil

package com.ftzlover.demo.util;

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;


public class DBUtil {

    // 得到配置文件對象
    private static Properties properties = new Properties();

    static {
        try {
            // 加載配置文件(輸入流)
            InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("db.properties");
            System.out.println("是否獲取到流對象:" + in);
            System.out.println("流對象:" + properties);
            // 通過load()方法將輸入流的內容加載到配置文件對象中
            properties.load(in);
            // 通過配置文件對象的getProperty()方法獲取驅動名,并加載驅動
            Class.forName(properties.getProperty("jdbcName"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    public static Connection getConnetion() {
        Connection connection = null;
        try {
            // 得到數據庫連接的相關信息
            String dbUrl = properties.getProperty("dbUrl");
            System.out.println(dbUrl);
            String dbName = properties.getProperty("dbName");
            System.out.println(dbName);
            String dbPwd = properties.getProperty("dbPwd");
            System.out.println(dbName);
            // 得到數據庫連接
            connection = DriverManager.getConnection(dbUrl, dbName, dbPwd);
            System.out.println(connection);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

        return connection;
    }


    public static void close(ResultSet resultSet,
                             PreparedStatement preparedStatement,
                             Connection connection) {

        try {
            // 判斷資源對象如果不為空,則關閉
            if (resultSet != null) {
                resultSet.close();
            }
            if (preparedStatement != null) {
                preparedStatement.close();
            }
            if (connection != null) {
                connection.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

8、示例

十分炫酷的登陸界面加完善的后臺登陸界面截圖:

數據庫代碼:新建數據庫名叫my 建表名叫tb_user

CREATE TABLE `tb_user` (
  `userId` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵,自動增長',
  `uname` varchar(50) NOT NULL COMMENT '用戶名',
  `upwd` varchar(50) DEFAULT NULL COMMENT '密碼',
  `nick` varchar(50) DEFAULT NULL COMMENT '昵稱',
  `head` varchar(100) DEFAULT NULL COMMENT '頭像',
  `mood` varchar(500) DEFAULT NULL COMMENT '心情',
  PRIMARY KEY (`userId`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

到此這篇關于關于JSP用戶登錄連接數據庫詳情的文章就介紹到這了,更多相關JSP用戶登錄連接數據庫內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • jsp+dao+bean+servlet(MVC模式)實現簡單用戶登錄和注冊頁面
  • 使用JSP實現簡單的用戶登錄注冊頁面示例代碼解析
  • jsp實現用戶自動登錄功能
  • jsp實現簡單用戶7天內免登錄
  • servlet+jsp實現過濾器 防止用戶未登錄訪問
  • JSP Spring防止用戶重復登錄的實現方法
  • JavaWeb實現用戶登錄注冊功能實例代碼(基于Servlet+JSP+JavaBean模式)
  • JSP實現用戶登錄、注冊和退出功能
  • jsp基于XML實現用戶登錄與注冊的實例解析(附源碼)
  • JSP實現簡單的用戶登錄并顯示出用戶信息的方法
  • 在jsp中用bean和servlet聯合實現用戶注冊、登錄

標簽:大連 銅川 貸款邀約 內江 廣州 南京 樂山 黃石

巨人網絡通訊聲明:本文標題《關于JSP用戶登錄連接數據庫詳情》,本文關鍵詞  關于,JSP,用戶,登錄,連接,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《關于JSP用戶登錄連接數據庫詳情》相關的同類信息!
  • 本頁收集關于關于JSP用戶登錄連接數據庫詳情的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产大陆亚洲精品国产| 亚洲国产一区二区三区青草影视| 欧美一区日韩一区| 亚洲欧美偷拍三级| 午夜视频一区二区| 国产精品白丝jk黑袜喷水| 一二三四区精品视频| 处破女av一区二区| 91久久线看在观草草青青| 亚洲国产精品成人综合色在线婷婷| 蜜臀av在线播放一区二区三区 | 在线免费观看日本欧美| 一区二区三区日韩| 欧美精品乱码久久久久久| 亚洲女人的天堂| 欧美日韩性生活| 中文字幕永久在线不卡| 成人激情小说网站| 亚洲精品一区二区三区精华液 | 成人白浆超碰人人人人| 亚洲国产经典视频| 91麻豆精品久久久久蜜臀| 色婷婷综合久久久中文一区二区| 亚洲欧美视频在线观看| 91精品久久久久久久99蜜桃| 国产乱人伦精品一区二区在线观看| 欧美老人xxxx18| 欧美aaaaaa午夜精品| 亚洲国产成人在线| 欧美精品第1页| 国产成人免费视频精品含羞草妖精| 久久婷婷国产综合精品青草| 久久这里都是精品| 免费观看在线综合色| 91精品国产色综合久久不卡蜜臀| 不卡的av网站| 国产精品一区二区三区99 | 97久久人人超碰| 国产一区二区主播在线| 一二三四区精品视频| 中文字幕中文字幕在线一区| 在线播放91灌醉迷j高跟美女 | 久久久国产精品午夜一区ai换脸| 91热门视频在线观看| 老司机午夜精品| 久久激情五月婷婷| 色94色欧美sute亚洲线路一久| 国产精品夜夜嗨| 国产一区二区剧情av在线| 精品一二三四区| 亚洲午夜激情av| 亚洲色图欧美激情| 香蕉加勒比综合久久| 欧美a级理论片| 精品午夜久久福利影院| 久久久不卡网国产精品二区| 国产成人精品亚洲午夜麻豆| 日本三级韩国三级欧美三级| 欧美群妇大交群中文字幕| 日韩小视频在线观看专区| 中日韩免费视频中文字幕| 精品三级av在线| 欧美精品亚洲一区二区在线播放| 精品久久久久久最新网址| 一区二区视频免费在线观看| 国产在线不卡一区| 欧美日精品一区视频| 久久亚洲综合av| 天天综合网天天综合色| 99国产精品久久久久久久久久久| 韩国理伦片一区二区三区在线播放| 麻豆视频一区二区| 亚洲成人av在线电影| 色偷偷成人一区二区三区91 | www.在线成人| 国产欧美一区二区精品性色| 国产尤物一区二区| 久久久久久亚洲综合| 久久成人免费电影| 精品少妇一区二区三区| 久久福利视频一区二区| 欧美一区午夜视频在线观看 | 亚洲欧美在线另类| 成人激情校园春色| 国产欧美日韩三区| 北条麻妃国产九九精品视频| 日本一区二区视频在线观看| 国产九色精品成人porny| 亚洲天堂成人在线观看| 6080午夜不卡| 国产黄色精品视频| 一区二区三区四区视频精品免费| 成人av免费观看| 一区二区三区欧美| 久久久久久电影| www国产成人免费观看视频 深夜成人网| 亚洲精品videosex极品| 欧美日韩五月天| 蜜桃视频在线观看一区二区| av中文字幕在线不卡| 久久九九久久九九| 欧亚洲嫩模精品一区三区| 美女视频网站久久| 日韩欧美精品三级| 欧美日韩一区三区| 国产高清精品网站| 亚洲国产精品久久人人爱蜜臀| 欧美日韩综合在线免费观看| 精品对白一区国产伦| 欧美三级日韩三级国产三级| 亚洲成人在线网站| 久久99精品久久久| 久久―日本道色综合久久| 日本在线播放一区二区三区| xnxx国产精品| 宅男噜噜噜66一区二区66| 一区二区三区在线观看欧美| 欧美日产国产精品| 亚洲欧美日韩国产一区二区三区| 色狠狠一区二区三区香蕉| 精一区二区三区| 婷婷丁香激情综合| 精品国产一区二区国模嫣然| 日本韩国精品一区二区在线观看| 国产河南妇女毛片精品久久久 | 欧美日韩精品一区二区三区 | 欧美成人性福生活免费看| 在线一区二区三区| 91免费视频网址| 懂色av一区二区三区蜜臀| 精品一区二区三区久久| 欧美国产精品v| 国产精品色一区二区三区| 国产欧美精品一区二区色综合朱莉 | 久久精品72免费观看| 亚洲香蕉伊在人在线观| 中文字幕在线不卡一区二区三区| 国产精品国产馆在线真实露脸| 久久久久成人黄色影片| 亚洲四区在线观看| 亚洲私人黄色宅男| 日韩成人精品在线观看| 久久不见久久见免费视频7| 不卡一卡二卡三乱码免费网站| 色婷婷久久久亚洲一区二区三区| 欧美丝袜丝nylons| 国产亚洲欧美日韩俺去了| 欧美国产精品一区| 亚洲美女少妇撒尿| 国产精品自拍三区| 久久精品国产精品亚洲精品| 国产精品国产三级国产aⅴ原创| 欧美丰满美乳xxx高潮www| 欧美日韩视频在线第一区| 精品国产一区二区三区久久久蜜月| 1024成人网色www| 亚洲综合久久久久| 久久精品国产亚洲高清剧情介绍| 国产一区二区在线视频| 7777精品伊人久久久大香线蕉完整版 | 欧美日韩一区不卡| 亚洲欧美日韩久久| 国产99精品在线观看| 成人av资源网站| 久久新电视剧免费观看| 图片区小说区区亚洲影院| 久久超碰97中文字幕| 91精品国产综合久久久久| 亚洲大尺度视频在线观看| 91浏览器打开| 亚洲国产精品麻豆| 欧美一区二区三区视频免费| 亚洲免费av观看| 在线观看免费成人| 亚洲一区国产视频| 日韩一区二区在线看片| 国产成人免费9x9x人网站视频| 精品美女一区二区| 国产suv精品一区二区6| 亚洲国产精品国自产拍av| 麻豆一区二区三| 欧美日韩免费一区二区三区视频| 国产一区二区在线看| 国产欧美一区二区精品久导航 | 国产精品欧美综合在线| 欧美日韩高清一区二区三区| 日韩高清国产一区在线| 国产免费久久精品| 欧美一区二区三区视频| 一本久道久久综合中文字幕| 亚洲国产精品国自产拍av| 色综合一个色综合亚洲| 婷婷中文字幕综合| 91精品国产91热久久久做人人| 国产aⅴ综合色| 欧美国产成人在线| 欧美日韩精品欧美日韩精品一 | 亚洲成人福利片| 日韩精品一区二区三区在线观看| 国内精品伊人久久久久av影院|