基于SSM的用戶信息管理系統(tǒng)的增刪查、登錄功能及分頁的實(shí)現(xiàn)

SSM的增刪改功能實(shí)現(xiàn)

controller層

   @RequestMapping("/updUserById.do")
    public String updUserById(UserInfo userInfo){
        userInfoService.updUserById(userInfo);
        return "redirect:findAll.do";
    }
@RequestMapping("/addUser.do")
    public String addUser(UserInfo userInfo){
        userInfoService.addUser(userInfo);
        return "redirect:findAll.do";
}
@RequestMapping("/delUser")
public String delUser(int id) {
    userInfoService.delUser(id);
    return "redirect:findAll.do";
}

DAO層

    //更新前的查詢
    UserInfo findUserById(int id);
    //update
    void updUserById(UserInfo userInfo);

    //add;id,username,password
    void addUser(UserInfo userInfo);
    //delete
    void delUser(int id);
    List<UserInfo> findUserByName(String username);
    //login
    UserInfo doLogin(String username);

Servie接口層

 //更新前的查詢
    UserInfo findUserById(int id);

    //update
    void updUserById(UserInfo userInfo);

    //add;id,username,password
    void addUser(UserInfo userInfo);

    void delUser(int id);
    //模糊查詢
    List<UserInfo> findUserByName(String username,int page,int size);

Service實(shí)現(xiàn)層


    @Override
    public UserInfo findUserById(int id) {
        return userDao.findUserById(id);
    }

    @Override
    public void updUserById(UserInfo userInfo) {
        userDao.updUserById(userInfo);
    }

    @Override
    public void addUser(UserInfo userInfo) {

        userDao.addUser(userInfo);
    }

    @Override
    public void delUser(int id) {
        userDao.delUser(id);

    }

    @Override
    public List<UserInfo> findUserByName(String username,int page,int size) {
        return userDao.findUserByName(username);
    }

SQL語句的實(shí)現(xiàn)

 <select id="findUserById" parameterType="java.lang.Integer" resultType="com.zhongruan.bean.UserInfo">
            select * from tb_user where  id=#{id}
    </select>

    <update id="updUserById" parameterType="com.zhongruan.bean.UserInfo">
        update tb_user set username={#username},password={#password} where  id=#{id}
    </update>

    <insert id="addUser" parameterType="com.zhongruan.bean.UserInfo">
        insert into tb_user(id,username,password) values (#{id},#{username},#{password})
    </insert>

    <delete id="delUser" parameterType="java.lang.Integer">
        delete from tb_user where id=#{id}
    </delete>

    <select id="findUserByName" parameterType="java.lang.String" resultType="com.zhongruan.bean.UserInfo">
        select * from tb_user where username like '%' #{username} '%'
    </select>

登錄功能的實(shí)現(xiàn)

Controller層

//login
    @RequestMapping("/doLogin.do")
    public String doLogin(String username, String password, HttpSession session){
        UserInfo userInfo=userInfoService.doLogin(username);
        if (userInfo !=null){
            if (userInfo.getPassword().equals(password)){
                System.out.println("登錄成功");
                session.setAttribute("userInfo",userInfo);
                return "main";

            }else{
                System.out.println("密碼錯誤纱昧,請重新登錄!");
                session.setAttribute("message","密碼錯誤缀去,請重新輸入侣灶!");
                return  "../login";
            }
        }else {
            System.out.println("用戶不存在,請重新輸入缕碎!");
            session.setAttribute("message","用戶不存在褥影,請重新輸入!");
            return  "../login";
        }
    }
}

DAO層

 //login
    UserInfo doLogin(String username);

Service接口層

 UserInfo doLogin(String username);咏雌、

Service實(shí)現(xiàn)層

 @Override
    public UserInfo doLogin(String username) {
        return userDao.doLogin(username);
    }
}

SQL語句

 <select id="doLogin" resultType="com.zhongruan.bean.UserInfo" parameterType="java.lang.String">
        select * from tb_user where username=#{username}
    </select>

分頁管理的實(shí)現(xiàn)

Controller層

@RequestMapping("/user")
public class UserInfoController {

    @Autowired
    private UserInfoService userInfoService;
    @RequestMapping("/findAll.do")
    public ModelAndView findAll(@RequestParam(defaultValue="1") int page, @RequestParam(defaultValue = "5") int size){
        List<UserInfo> userInfoList=userInfoService.findAll(page,size);
//把得到的結(jié)果集 給到pagehelper中得到內(nèi)置對象PageInfo中
        PageInfo pageInfo=new PageInfo(userInfoList);
        ModelAndView mv = new ModelAndView();
        mv.addObject("pageInfo",pageInfo);
        mv.setViewName("user-list");
        return mv;
    }

DAO層

//全部查詢
    List<UserInfo> findAll();

Service接口層

 //全部查詢
    List<UserInfo> findAll(int page,int size);

Service實(shí)現(xiàn)層

    @Override
    public List<UserInfo> findAll(int page, int size) {
        //開啟分頁信息
        PageHelper.startPage(page,size);
        return userDao.findAll();
    }

課后問題

  1. 請求轉(zhuǎn)發(fā)forward 和 重定向redirect的區(qū)別
    轉(zhuǎn)發(fā)是服務(wù)器行為凡怎,重定向是客戶端行為。
    轉(zhuǎn)發(fā)過程:客戶瀏覽器發(fā)送http請求——》web服務(wù)器接受此請求——》調(diào)用內(nèi)部的一個方法在容器內(nèi)部完成請求處理和轉(zhuǎn)發(fā)動作——》將目標(biāo)資源發(fā)送給客戶赊抖;在這里统倒,轉(zhuǎn)發(fā)的路徑必須是同一個web容器下的url,其不能轉(zhuǎn)向到其他的web路徑上去氛雪,中間傳遞的是自己的容器內(nèi)的request房匆。在客戶瀏覽器路徑欄顯示的仍然是其第一次訪問的路徑,也就是說客戶是感覺不到服務(wù)器做了轉(zhuǎn)發(fā)的报亩。轉(zhuǎn)發(fā)行為是瀏覽器只做了一次訪問請求浴鸿。
    重定向過程:客戶瀏覽器發(fā)送http請求——》web服務(wù)器接受后發(fā)送302狀態(tài)碼響應(yīng)及對應(yīng)新的location給客戶瀏覽器——》客戶瀏覽器發(fā)現(xiàn)是302響應(yīng),則自動再發(fā)送一個新的http請求弦追,請求url是新的location地址——》服務(wù)器根據(jù)此請求尋找資源并發(fā)送給客戶岳链。在這里location可以重定向到任意URL,既然是瀏覽器重新發(fā)出了請求骗卜,則就沒有什么request傳遞的概念了。在客戶瀏覽器路徑欄顯示的是其重定向的路徑左胞,客戶可以觀察到地址的變化的寇仓。重定向行為是瀏覽器做了至少兩次的訪問請求的。

  2. get和post的優(yōu)缺點(diǎn)


    在這里插入圖片描述
  3. PageHelper的參數(shù)

    //當(dāng)前頁
    private int pageNum;
    //每頁的數(shù)量
    private int pageSize;
    //當(dāng)前頁的數(shù)量
    private int size;
    //由于startRow和endRow不常用烤宙,這里說個具體的用法
    //可以在頁面中"顯示startRow到endRow 共size條數(shù)據(jù)"
    //當(dāng)前頁面第一個元素在數(shù)據(jù)庫中的行號
    private int startRow;
    //當(dāng)前頁面最后一個元素在數(shù)據(jù)庫中的行號
    private int endRow;
    //總記錄數(shù)
    private long total;
    //總頁數(shù)
    private int pages;
    //結(jié)果集
    private List list;

    //第一頁
    private int firstPage;
    //前一頁
    private int prePage;

    //是否為第一頁
    private boolean isFirstPage = false;
    //是否為最后一頁
    private boolean isLastPage = false;
    //是否有前一頁
    private boolean hasPreviousPage = false;
    //是否有下一頁
    private boolean hasNextPage = false;
    //導(dǎo)航頁碼數(shù)
    private int navigatePages;
    //所有導(dǎo)航頁號
    private int[] navigatepageNums;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末遍烦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子躺枕,更是在濱河造成了極大的恐慌服猪,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拐云,死亡現(xiàn)場離奇詭異罢猪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)叉瘩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門膳帕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人薇缅,你說我怎么就攤上這事危彩≡苣ィ” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵汤徽,是天一觀的道長娩缰。 經(jīng)常有香客問我,道長谒府,這世上最難降的妖魔是什么拼坎? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮狱掂,結(jié)果婚禮上演痒,老公的妹妹穿的比我還像新娘。我一直安慰自己趋惨,他們只是感情好鸟顺,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著器虾,像睡著了一般讯嫂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上兆沙,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天欧芽,我揣著相機(jī)與錄音,去河邊找鬼葛圃。 笑死千扔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的库正。 我是一名探鬼主播曲楚,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼褥符!你這毒婦竟也來了龙誊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤喷楣,失蹤者是張志新(化名)和其女友劉穎趟大,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铣焊,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逊朽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了曲伊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惋耙。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绽榛,到底是詐尸還是另有隱情湿酸,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布灭美,位于F島的核電站推溃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏届腐。R本人自食惡果不足惜铁坎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望犁苏。 院中可真熱鬧硬萍,春花似錦、人聲如沸围详。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽助赞。三九已至买羞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雹食,已是汗流浹背畜普。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留群叶,地道東北人吃挑。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像街立,于是被迫代替她去往敵國和親舶衬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 數(shù)據(jù)存儲和消息隊(duì)列 SSM/Servlet 1. Servlet的生命周期 Servlet的產(chǎn)生到消亡過程中几晤,分為...
    熊先森_5094閱讀 2,150評論 0 2
  • SpringMVC 一约炎、SpringMVC概述 1. 三層架構(gòu) 服務(wù)器端開發(fā)程序主要由兩種形式構(gòu)成植阴。一種是基于客戶...
    青丶空閱讀 388評論 0 1
  • 標(biāo)簽:sso iplas 一蟹瘾、SSO(單點(diǎn)登錄)介紹 SSO英文全稱Single SignOn,單點(diǎn)登錄掠手。SSO是...
    傑仔閱讀 15,648評論 2 35
  • 一憾朴、Spring面試題 1、Spring 在ssm中起什么作用喷鸽? Spring:輕量級框架 作用:Bean工廠众雷,用...
    coder_girl閱讀 341評論 0 5
  • 1.工具:IDEA,要用到的包,mysql數(shù)據(jù)庫 1.2數(shù)據(jù)庫 1.3.準(zhǔn)備連接數(shù)據(jù)庫的封裝方法 package ...
    靜靜_6b03閱讀 289評論 0 0