国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JavaEE 項(xiàng)目:用戶信息管理系統(tǒng)

這篇具有很好參考價(jià)值的文章主要介紹了JavaEE 項(xiàng)目:用戶信息管理系統(tǒng)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

項(xiàng)目介紹

數(shù)據(jù)庫設(shè)計(jì)

各包結(jié)構(gòu)設(shè)計(jì)與說明

功能實(shí)現(xiàn)

1. 登錄功能

2. 分頁查詢、模糊查詢

3. 增、刪、改操作

總結(jié)

項(xiàng)目介紹

本項(xiàng)目主要實(shí)現(xiàn)了對用戶信息的管理,能夠在客戶端很好的操作各個(gè)功能,并實(shí)時(shí)更新用戶數(shù)據(jù)。采用?MySQL數(shù)據(jù)庫?存儲數(shù)據(jù),JDBC?連接數(shù)據(jù)庫,Servlet、JSP?等技術(shù)完成各個(gè)功能的具體實(shí)現(xiàn)。界面采用?Bootstrap框架?技術(shù),實(shí)現(xiàn)了一個(gè)簡單的界面效果。

數(shù)據(jù)庫設(shè)計(jì)

為了方便起見,將管理員的用戶名和密碼寫在了用戶信息表中。(不合理的設(shè)計(jì),當(dāng)個(gè)反面教材)

圖示:

JavaEE 項(xiàng)目:用戶信息管理系統(tǒng)

各包結(jié)構(gòu)設(shè)計(jì)與說明

JavaEE 項(xiàng)目:用戶信息管理系統(tǒng)

userInfo_project:模塊名

src / dao:操作數(shù)據(jù)庫的接口(訪問數(shù)據(jù)庫層)

src / dao / impl:操作數(shù)據(jù)庫接口的具體實(shí)現(xiàn)類

src / domain:實(shí)體類

src / service:一系列數(shù)據(jù)處理的接口(業(yè)務(wù)邏輯層)

src / service / impl:數(shù)據(jù)處理接口的具體實(shí)現(xiàn)類

src / util:連接數(shù)據(jù)庫的工具類

src / web:存放各個(gè)servlet

web:前端展示界面(界面層)

功能實(shí)現(xiàn)

1. 登錄功能

設(shè)計(jì)思路:管理員填寫用戶名和密碼后,通過表單提交到 LoginServlet 進(jìn)行數(shù)據(jù)驗(yàn)證操作。

LoginServlet:

//登錄
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //設(shè)置編碼
        request.setCharacterEncoding("utf-8");
        //獲取用戶輸入的驗(yàn)證碼
        String verifycode = request.getParameter("verifycode");
        //獲取系統(tǒng)生成的驗(yàn)證碼
        HttpSession session = request.getSession();
        String checkCode_server = (String) session.getAttribute("CHECKCODE_SERVER");
        //刪除session,確保驗(yàn)證碼的一次性
        session.removeAttribute("CHECKCODE_SERVER");
        //判斷驗(yàn)證碼:驗(yàn)證碼不正確
        if (!checkCode_server.equalsIgnoreCase(verifycode)) {
            //提示信息
            request.setAttribute("login_msg", "驗(yàn)證碼錯誤!");
            //跳轉(zhuǎn)登錄頁面,轉(zhuǎn)發(fā)
            request.getRequestDispatcher("/login.jsp").forward(request, response);
            return;
        }

        //獲取所有參數(shù)的map集合
        Map<String, String[]> map = request.getParameterMap();
        //封裝User對象
        User user = new User();
        try {
            BeanUtils.populate(user, map);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }

        //調(diào)用Service查詢
        UserService service = new UserServiceImpl();
        User loginUser = service.login(user);
        //判斷是否登錄成功
        if (loginUser != null) {
            //登錄成功,將用戶存到session
            session.setAttribute("user", loginUser);
            //跳轉(zhuǎn)到主頁面,重定向
            response.sendRedirect(request.getContextPath() + "/index.jsp");
        } else {
            //登錄失敗,提示錯誤信息
            request.setAttribute("login_msg", "用戶名或密碼錯誤!");
            //跳轉(zhuǎn)登錄頁面,轉(zhuǎn)發(fā)
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

注意:數(shù)據(jù)的查詢操作是通過調(diào)用封裝在UserServiceImpl類中的login方法來實(shí)現(xiàn)的,而其中的login方法是根據(jù)封裝在UserDaoImpl類中的findUserByUsernameAndPassword方法來實(shí)現(xiàn)的。

login:

    //驗(yàn)證登錄信息
    @Override
    public User login(User user) {
        return dao.findUserByUsernameAndPassword(user.getUsername(), user.getPassword());
    }

findUserByUsernameAndPassword:

    //根據(jù)用戶名和密碼查詢User對象
    @Override
    public User findUserByUsernameAndPassword(String username, String password) {
        try {
            String sql = "select * from user where username = ? and password = ?";
            User user = template.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), username, password);
            return user;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

實(shí)現(xiàn)效果:

JavaEE 項(xiàng)目:用戶信息管理系統(tǒng)

2. 分頁查詢、模糊查詢

設(shè)計(jì)思路:創(chuàng)建一個(gè)分頁的實(shí)體類對象 PageBean,主頁跳轉(zhuǎn)到?FindUserByPageServlet?中進(jìn)行查詢。

PageBean屬性:

    //總記錄數(shù)
    private int totalCount;
    //總頁碼
    private int totalPage;
    //每頁的數(shù)據(jù)
    private List<T> list;
    //當(dāng)前頁碼
    private int currentPage;
    //每頁顯示的記錄數(shù)
    private int rows;

FindUserByPageServlet:

//查詢
@WebServlet("/findUserByPageServlet")
public class FindUserByPageServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //設(shè)置編碼
        request.setCharacterEncoding("utf-8");
        //當(dāng)前頁碼
        String currentPage = request.getParameter("currentPage");
        //每頁顯示條數(shù)
        String rows = request.getParameter("rows");
        //判斷當(dāng)前頁碼、每頁顯示的條數(shù)
        if (currentPage == null || "".equals(currentPage)) {
            currentPage = "1";
        }
        if (rows == null || "".equals(rows)) {
            rows = "5";
        }
        //獲取條件查詢參數(shù)
        Map<String, String[]> condition = request.getParameterMap();
        //調(diào)用service查詢
        UserService service = new UserServiceImpl();
        PageBean<User> pb = service.findUserByPage(currentPage, rows, condition);

        //將PageBean存入request
        request.setAttribute("pb", pb);
        //將查詢條件存入request
        request.setAttribute("condition", condition);
        //轉(zhuǎn)發(fā)到list.jsp
        request.getRequestDispatcher("/list.jsp").forward(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

注意:數(shù)據(jù)的查詢是通過調(diào)用封裝在UserServiceImpl類中的findUserByPage方法實(shí)現(xiàn)的,然而具體的數(shù)據(jù)庫操作是根據(jù)封裝在UserDaoImpl類中的?findTotalCount 和 findByPage 方法?來實(shí)現(xiàn)的。

findTotalCount:

    //查詢總記錄條數(shù)
    @Override
    public int findTotalCount(Map<String, String[]> condition) {
        //定義模板初始化sql
        String sql = "select count(*) from user where 1 =1 ";
        StringBuilder sb = new StringBuilder(sql);
        //遍歷map
        Set<String> keySet = condition.keySet();
        //定義參數(shù)集合
        List<Object> params = new ArrayList<>();
        for (String key : keySet) {
            //排除分頁條件參數(shù)
            if ("currentPage".equals(key) || "rows".equals(key)) {
                continue;
            }
            //獲取value
            String value = condition.get(key)[0];

            //判斷value是否有值
            if (value != null && !"".equals(value)) {
                //有值
                sb.append(" and " + key + " like ? ");
                //?條件的值
                params.add("%" + value + "%");
            }
        }
        return template.queryForObject(sb.toString(), Integer.class, params.toArray());
    }

findByPage:

    //在數(shù)據(jù)庫中查詢數(shù)據(jù),獲取一個(gè)User的對象集合
    @Override
    public List<User> findByPage(int start, int rows, Map<String, String[]> condition) {
        String sql = "select * from user where 1 = 1 ";
        StringBuilder sb = new StringBuilder(sql);
        //遍歷map
        Set<String> keySet = condition.keySet();
        //定義參數(shù)集合
        List<Object> params = new ArrayList<>();
        for (String key : keySet) {
            //排除分頁條件參數(shù)
            if ("currentPage".equals(key) || "rows".equals(key)) {
                continue;
            }
            //獲取value
            String value = condition.get(key)[0];
            //判斷value是否有值
            if (value != null && !"".equals(value)) {
                //有值
                sb.append(" and " + key + " like ? ");
                //?條件的值
                params.add("%" + value + "%");
            }
        }
        if (start < 0)
            start = 0;
        //添加分頁查詢
        sb.append(" limit ?,? ");
        //添加分頁查詢參數(shù)值
        params.add(start);
        params.add(rows);

        return template.query(sb.toString(), new BeanPropertyRowMapper<>(User.class), params.toArray());
    }

findUserByPage:

    //處理查詢
    @Override
    public PageBean<User> findUserByPage(String _currentPage, String _rows, Map<String, String[]> condition) {
        //類型轉(zhuǎn)換
        int currentPage = Integer.parseInt(_currentPage);
        int rows = Integer.parseInt(_rows);
        //第一頁時(shí),不能點(diǎn)擊上一頁
        if (currentPage <= 0)
            currentPage = 1;

        //創(chuàng)建PageBean對象
        PageBean<User> pb = new PageBean<>();
        //調(diào)用dao查詢總記錄數(shù)
        int totalCount = dao.findTotalCount(condition);
        pb.setTotalCount(totalCount);
        
        //計(jì)算總頁碼
        int totalPage = (totalCount % rows) == 0 ? totalCount / rows : totalCount / rows + 1;
        pb.setTotalPage(totalPage);
        
        //最后一頁時(shí),不能點(diǎn)擊下一頁
        if (currentPage >= totalPage)
            currentPage = totalPage;

        //設(shè)置參數(shù)
        pb.setCurrentPage(currentPage);
        pb.setRows(rows);

        //調(diào)用dao查詢list集合
        //計(jì)算開始記錄索引
        int start = (currentPage - 1) * rows;
        List<User> list = dao.findByPage(start, rows, condition);
        pb.setList(list);

        return pb;
    }

實(shí)現(xiàn)效果:

JavaEE 項(xiàng)目:用戶信息管理系統(tǒng)

3. 增、刪、改操作

設(shè)計(jì)思路:管理員選擇對應(yīng)的功能操作后,JSP頁面的數(shù)據(jù)就會提交到對應(yīng)的?Servlet 中進(jìn)行處理,通過調(diào)用業(yè)務(wù)邏輯層中的方法,業(yè)務(wù)邏輯層再調(diào)用數(shù)據(jù)庫操作層中的方法,從而實(shí)現(xiàn)用戶信息的增、刪、改。

實(shí)現(xiàn)效果:

JavaEE 項(xiàng)目:用戶信息管理系統(tǒng)

?JavaEE 項(xiàng)目:用戶信息管理系統(tǒng)

總結(jié)

????????本項(xiàng)目綜合性很強(qiáng),涉及到的知識點(diǎn)比較多,盲目的敲代碼是不理智的,明確項(xiàng)目的設(shè)計(jì)思路十分重要。本次介紹只展示出了幾個(gè)比較重要功能的部分代碼,其他部分就不詳細(xì)介紹了。博主認(rèn)為最難的點(diǎn)就在于數(shù)據(jù)的交互,前端到后端,后端到前端,前端到前端,后端到后端,使用的數(shù)據(jù)傳遞方式不盡相同,要明確是哪一種數(shù)據(jù)傳遞場景,這樣就很好解決了。

源碼

可在博主主頁獲?。?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-474967.html


到了這里,關(guān)于JavaEE 項(xiàng)目:用戶信息管理系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Springboot+vue的時(shí)間管理系統(tǒng)(有報(bào)告)。Javaee項(xiàng)目,springboot vue前后端分離項(xiàng)目。

    Springboot+vue的時(shí)間管理系統(tǒng)(有報(bào)告)。Javaee項(xiàng)目,springboot vue前后端分離項(xiàng)目。

    Springboot+vue的時(shí)間管理系統(tǒng)(有報(bào)告)。Javaee項(xiàng)目,springboot vue前后端分離項(xiàng)目。 前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站。 本文設(shè)計(jì)了一個(gè)基于Springboot+vue的前后端分離的時(shí)間管理系統(tǒng),采用M(model)V(

    2024年02月07日
    瀏覽(20)
  • Springboot+vue的教學(xué)資料管理系統(tǒng)(有報(bào)告)。Javaee項(xiàng)目,springboot vue前后端分離項(xiàng)目

    Springboot+vue的教學(xué)資料管理系統(tǒng)(有報(bào)告)。Javaee項(xiàng)目,springboot vue前后端分離項(xiàng)目

    Springboot+vue的教學(xué)資料管理系統(tǒng)(有報(bào)告)。Javaee項(xiàng)目,springboot vue前后端分離項(xiàng)目 本文設(shè)計(jì)了一個(gè)基于Springboot+vue的前后端分離的教學(xué)資料管理系統(tǒng),采用M(model)V(view)C(controller)三層體系結(jié)構(gòu),通過Spring + SpringBoot + Mybatis+Vue+Maven來實(shí)現(xiàn)。MySQL數(shù)據(jù)庫作為系統(tǒng)數(shù)據(jù)儲存平

    2024年02月04日
    瀏覽(21)
  • 信息系統(tǒng)項(xiàng)目管理師-項(xiàng)目溝通管理

    1.信息系統(tǒng)項(xiàng)目管理師-項(xiàng)目整合管理 2.信息系統(tǒng)項(xiàng)目管理師-項(xiàng)目范圍管理 3.信息系統(tǒng)項(xiàng)目管理師-項(xiàng)目進(jìn)度管理 4.信息系統(tǒng)項(xiàng)目管理師-項(xiàng)目成本管理 5.信息系統(tǒng)項(xiàng)目管理師-項(xiàng)目質(zhì)量管理 6.信息系統(tǒng)項(xiàng)目管理師-項(xiàng)目資源管理 7.信息系統(tǒng)項(xiàng)目管理師-項(xiàng)目溝通管理 8.信息系統(tǒng)項(xiàng)目

    2023年04月16日
    瀏覽(102)
  • 信息系統(tǒng)項(xiàng)目管理師:配置管理

    配置管理指的是在一個(gè)系統(tǒng)或軟件中對配置項(xiàng)的管理,包括對配置項(xiàng)的定義、存儲、跟蹤和修改等一系列活動。配置項(xiàng)可以是硬件設(shè)備、軟件組件、系統(tǒng)設(shè)置、網(wǎng)絡(luò)配置等,配置管理旨在確保在不同時(shí)間點(diǎn)或環(huán)境下系統(tǒng)或軟件的配置項(xiàng)的正確性和一致性。通過配置管理,可以

    2024年02月16日
    瀏覽(95)
  • Springboot+vue的開放性實(shí)驗(yàn)室管理系統(tǒng)(有報(bào)告)。Javaee項(xiàng)目,springboot vue前后端分離項(xiàng)目。

    Springboot+vue的開放性實(shí)驗(yàn)室管理系統(tǒng)(有報(bào)告)。Javaee項(xiàng)目,springboot vue前后端分離項(xiàng)目。

    ssm+vue的開放性實(shí)驗(yàn)室管理系統(tǒng)(有報(bào)告)。Javaee項(xiàng)目,ssm vue前后端分離項(xiàng)目。 采用M(model)V(view)C(controller)三層體系結(jié)構(gòu),通過Spring + SpringMvc+ Mybatis+Vue+Maven來實(shí)現(xiàn)。MySQL數(shù)據(jù)庫作為系統(tǒng)數(shù)據(jù)儲存平臺,實(shí)現(xiàn)了基于B/S結(jié)構(gòu)的Web系統(tǒng)。界面簡潔,操作簡單。

    2024年02月07日
    瀏覽(27)
  • JAVAWEB學(xué)生信息管理系統(tǒng)保姆級教程(增刪改查+<普通用戶和管理員>登錄注冊+Filter+mysql+批量刪除信息+用戶退出登錄注銷)eclipse版(升級版)

    JAVAWEB學(xué)生信息管理系統(tǒng)保姆級教程(增刪改查+<普通用戶和管理員>登錄注冊+Filter+mysql+批量刪除信息+用戶退出登錄注銷)eclipse版(升級版)

    該項(xiàng)目源碼地址: 源碼地址請點(diǎn)擊這里喲! ????????AdminBean.java ? ? ? ?對數(shù)據(jù)庫里的用戶名的表的數(shù)據(jù)進(jìn)行封裝。 ????????StudentBean.java ????????對數(shù)據(jù)庫里的學(xué)生信息的表的數(shù)據(jù)進(jìn)行封裝。 ????????AdminDao.java ? ? ? ? 實(shí)現(xiàn)登錄和注冊的方法。 ????????

    2024年02月08日
    瀏覽(26)
  • 【Java/SSM/LayUI】JavaEE課程設(shè)計(jì)(基于Layui+SSM的圖書管理系統(tǒng)項(xiàng)目介紹及源碼)

    【Java/SSM/LayUI】JavaEE課程設(shè)計(jì)(基于Layui+SSM的圖書管理系統(tǒng)項(xiàng)目介紹及源碼)

    注: 本文為JavaEE課程的課程設(shè)計(jì),如需原文件及項(xiàng)目代碼請后臺聯(lián)系作者或qq3416252112,也可在作者主頁資源中下載,僅供學(xué)習(xí)交流使用! 一、項(xiàng)目介紹 ? 結(jié)合本學(xué)期所學(xué)知識,以及以往積累的經(jīng)驗(yàn),我們通過Layui+SSM的方式完成了簡化版的“圖書管理系統(tǒng)”。本系統(tǒng)操作界面

    2024年02月05日
    瀏覽(28)
  • 【軟考高級信息系統(tǒng)項(xiàng)目管理師--第八章:項(xiàng)目整合管理】

    【軟考高級信息系統(tǒng)項(xiàng)目管理師--第八章:項(xiàng)目整合管理】

    ?? 作者 :“碼上有前” ?? 文章簡介 :軟考高級–信息系統(tǒng)項(xiàng)目管理師 ?? 歡迎小伙伴們 點(diǎn)贊??、收藏?、留言?? 1、資源分配; 2、平衡競爭性需求; 3、研究各種備選方法; 4、裁減過程以實(shí)現(xiàn)各種方法; 5、管理各個(gè)項(xiàng)目管理知識領(lǐng)域之間的依賴關(guān)系。 編寫一份正式批準(zhǔn)項(xiàng)

    2024年02月19日
    瀏覽(106)
  • 【軟考高級信息系統(tǒng)項(xiàng)目管理師--第五章:信息系統(tǒng)工程下】

    【軟考高級信息系統(tǒng)項(xiàng)目管理師--第五章:信息系統(tǒng)工程下】

    ?? 作者 :“碼上有前” ?? 文章簡介 :軟考高級–信息系統(tǒng)項(xiàng)目管理師 ?? 歡迎小伙伴們 點(diǎn)贊??、收藏?、留言?? 1、概念模型:基本元素包含實(shí)體、屬性、、鍵、關(guān)聯(lián); 2、輯模型:主要數(shù)據(jù)結(jié)構(gòu)有層次結(jié)構(gòu)、網(wǎng)狀結(jié)構(gòu)、關(guān)系型、面向?qū)ο竽P汀?3、物理模型: 1、需求分析

    2024年02月20日
    瀏覽(99)
  • Javaweb項(xiàng)目案例:一個(gè)簡單的用戶管理系統(tǒng)實(shí)現(xiàn)

    Javaweb項(xiàng)目案例:一個(gè)簡單的用戶管理系統(tǒng)實(shí)現(xiàn)

    我們來設(shè)計(jì)一個(gè)簡單的用戶管理系統(tǒng),具有查看用戶,添加用戶,刪除用戶,更新用戶的所有功能,并能支持分頁顯示,以及通過模糊查詢的 本項(xiàng)目采用Druid數(shù)據(jù)庫連接池 注意:JDBC和DAO部分本文不予演示,請自行完成此部分代碼的編寫??? 模板頁面,showuser.html Sho

    2024年02月09日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包