日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:470日期:2022-06-07 18:45:19
目錄
  • 關于JSP用戶登錄連接數據庫詳情
    • 1、首先創建po類
    • 2、創建底層UserDao
    • 3、創建UserService(一般都會調用UserDao)
    • 4、寫web層UserSrevlet
      • 4.1重寫方法
      • 4.2創建vo層并在里面創建ResultInfo類用于封裝返回數據
    • 5、開始從Dao開始寫
      • 6、開始寫service層
        • 7、編寫最后的Servelt層
          • 7.1用戶登陸
        • 8、示例

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

        1、首先創建po類

        與數據庫一一對應

        lombok生成get set方法

        package com.ftzlover.demo.po;import lombok.Getter;import lombok.Setter;@Getter@Setterpublic 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@Setterpublic class ResultInfo<T> {    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 ResultInfo<User> userLogin(String userName,String userPwd){ResultInfo<User> 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對象ResultInfo<User> 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為0cookie.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
        日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
        久久激情av| 国产精品久久久久久久免费观看| 国产精品自拍区| 欧美一区自拍| 日韩在线观看一区二区| 亚洲免费精品| 欧洲一区二区三区精品| 青青草伊人久久| 中文字幕一区二区av| 久久一区二区三区喷水| 欧美.日韩.国产.一区.二区| 欧美日韩中文一区二区| 最新国产拍偷乱拍精品| 免费日韩视频| 蜜臀久久久久久久| 三级久久三级久久久| 日韩精品第一| 国产一区二区三区探花| 欧美福利在线| 日韩高清在线不卡| 久草精品视频| 在线亚洲观看| 国产精品第一| 欧美日韩国产精品一区二区亚洲| 亚洲精品九九| 国产日产精品_国产精品毛片| 国产成人精品一区二区免费看京| 婷婷色综合网| 国产三级精品三级在线观看国产| 国产精品久久久久av电视剧| 鲁大师影院一区二区三区| 国产高清精品二区| 欧美影院三区| 麻豆91精品视频| 国产亚洲欧洲| 日韩黄色大片网站| 欧美日韩在线精品一区二区三区激情综合 | 美美哒免费高清在线观看视频一区二区| 久久国产成人| 你懂的亚洲视频| 日韩中文字幕亚洲一区二区va在线 | 99精品视频在线| 日本v片在线高清不卡在线观看| 国产精品精品国产一区二区| 国产字幕视频一区二区| 欧美激情精品| 日韩精品一级二级 | 你懂的亚洲视频| 国产精品毛片| 狠狠久久伊人| 国产精品一区亚洲| 在线日韩成人| 婷婷综合在线| 99久久夜色精品国产亚洲1000部| 91av一区| 中文无码久久精品| 香蕉视频亚洲一级| 精品女同一区二区三区在线观看| 在线精品一区| 久久久久99| 日韩中文影院| 国产中文在线播放| 国产精品高潮呻吟久久久久| 亚洲三级av| 视频一区免费在线观看| 亚洲国产一区二区三区在线播放 | 久久在线91| 国产亚洲精品美女久久久久久久久久| 蜜臀久久99精品久久久久久9 | 宅男噜噜噜66国产日韩在线观看| 欧美精品99| 国产日韩欧美一区在线| 日本少妇精品亚洲第一区| 亚洲精品裸体| 日本一区二区三区视频在线看| 亚洲一卡久久| 日韩中文字幕不卡| 日韩在线一二三区| 青草国产精品| 国产精品三p一区二区| 国产精品成人3p一区二区三区| 国产精品一区二区三区av| 国产精品美女午夜爽爽| 麻豆精品国产91久久久久久| 黄色精品视频| 99热精品久久| 精品亚洲美女网站| 亚洲精品网址| 国产精品大片| 久久精品动漫| 蜜桃视频第一区免费观看| 人人爱人人干婷婷丁香亚洲| 久久这里只有精品一区二区| 久久久一本精品| 一区二区三区午夜视频| 国产欧美大片| 视频福利一区| 日韩国产欧美视频| www在线观看黄色| 亚洲激情偷拍| 久久免费精品| 少妇精品导航| 国产精品久久久久久久久久白浆| 欧美aa在线观看| 综合视频一区| 黑人精品一区| 日韩三级精品| 99在线精品视频在线观看| 亚洲网址在线观看| 91亚洲成人| 亚洲精品乱码久久久久久蜜桃麻豆| 国产精品a级| 另类激情亚洲| 亚洲天堂免费电影| 国产精品国码视频| 一区二区三区午夜视频| 欧美国产日本| 日韩精品免费观看视频| 亚洲精品a级片| 中文字幕在线看片| 免费观看亚洲天堂| 亚洲有吗中文字幕| 美女久久久久| 国产成人精品三级高清久久91| 久久亚洲不卡| 91精品91| 亚洲天堂久久| 91免费精品| 国产美女高潮在线| 美女国产一区二区三区| 天堂久久av| 日韩啪啪电影网| 精品视频自拍| 国产精品网站在线看| 91成人在线网站| 日韩不卡在线观看日韩不卡视频| 日本 国产 欧美色综合| 欧美日韩国产精品一区二区亚洲| 九九色在线视频| 日韩国产欧美| 久久精品1区| 99国产精品| 丝袜国产日韩另类美女| 午夜在线视频观看日韩17c| 丝袜脚交一区二区| 日本一区二区三区中文字幕| 欧美日韩国产精品一区二区亚洲| 亚洲香蕉网站| 视频一区欧美精品| 日本欧美在线| 久久精品国产999大香线蕉| 精品国产aⅴ| 久久国产亚洲精品| 中文亚洲欧美| 日韩高清在线观看一区二区| 国产精品美女在线观看直播| 精品一区二区三区免费看| 日韩av在线中文字幕| 尤物在线精品| 国产亚洲一区二区三区啪| 国产精品久久久一区二区| 午夜久久av| 国产乱人伦精品一区| 91久久久精品国产| 国产欧美日韩一区二区三区在线| 麻豆一区二区在线| 午夜日韩福利| 国产精品白丝av嫩草影院| 午夜精品久久久久久久久久蜜桃| 99香蕉国产精品偷在线观看 | 国产一区日韩| 亚洲激情中文| 麻豆极品一区二区三区| 亚洲特色特黄| 久久精品国产久精国产爱| 99成人在线| 麻豆视频在线看| 91麻豆精品| 在线视频亚洲| 日韩成人亚洲| 精品视频一区二区三区四区五区| 伊人久久大香线蕉av不卡| 国产日韩一区| 蜜臀av亚洲一区中文字幕| 日本一二区不卡| 日本亚洲欧洲无免费码在线| av资源中文在线| 国产精品一线天粉嫩av| 视频一区在线视频| 91精品精品| 91亚洲国产| 欧美91在线| 国产美女撒尿一区二区| 亚洲欧美久久精品| 久热re这里精品视频在线6| 久久一区二区三区喷水| 成人国产精品| 欧美国产美女| 国产999精品在线观看| 欧美在线黄色|