基于SSM的用戶信息管理系統的增刪查、登錄功能及分頁的實現

SSM的增刪改功能實現

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實現層


    @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語句的實現

 <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>

登錄功能的實現

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實現層

 @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>

分頁管理的實現

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);
//把得到的結果集 給到pagehelper中得到內置對象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實現層

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

課后問題

  1. 請求轉發forward 和 重定向redirect的區別
    轉發是服務器行為,重定向是客戶端行為。
    轉發過程:客戶瀏覽器發送http請求——》web服務器接受此請求——》調用內部的一個方法在容器內部完成請求處理和轉發動作——》將目標資源發送給客戶;在這里,轉發的路徑必須是同一個web容器下的url,其不能轉向到其他的web路徑上去,中間傳遞的是自己的容器內的request。在客戶瀏覽器路徑欄顯示的仍然是其第一次訪問的路徑,也就是說客戶是感覺不到服務器做了轉發的。轉發行為是瀏覽器只做了一次訪問請求。
    重定向過程:客戶瀏覽器發送http請求——》web服務器接受后發送302狀態碼響應及對應新的location給客戶瀏覽器——》客戶瀏覽器發現是302響應,則自動再發送一個新的http請求,請求url是新的location地址——》服務器根據此請求尋找資源并發送給客戶。在這里location可以重定向到任意URL,既然是瀏覽器重新發出了請求,則就沒有什么request傳遞的概念了。在客戶瀏覽器路徑欄顯示的是其重定向的路徑,客戶可以觀察到地址的變化的。重定向行為是瀏覽器做了至少兩次的訪問請求的。

  2. get和post的優缺點


    在這里插入圖片描述
  3. PageHelper的參數

    //當前頁
    private int pageNum;
    //每頁的數量
    private int pageSize;
    //當前頁的數量
    private int size;
    //由于startRow和endRow不常用,這里說個具體的用法
    //可以在頁面中"顯示startRow到endRow 共size條數據"
    //當前頁面第一個元素在數據庫中的行號
    private int startRow;
    //當前頁面最后一個元素在數據庫中的行號
    private int endRow;
    //總記錄數
    private long total;
    //總頁數
    private int pages;
    //結果集
    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;
    //導航頁碼數
    private int navigatePages;
    //所有導航頁號
    private int[] navigatepageNums;
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 數據存儲和消息隊列 SSM/Servlet 1. Servlet的生命周期 Servlet的產生到消亡過程中,分為...
    熊先森_5094閱讀 2,178評論 0 2
  • SpringMVC 一、SpringMVC概述 1. 三層架構 服務器端開發程序主要由兩種形式構成。一種是基于客戶...
    青丶空閱讀 394評論 0 1
  • 標簽:sso iplas 一、SSO(單點登錄)介紹 SSO英文全稱Single SignOn,單點登錄。SSO是...
    傑仔閱讀 15,693評論 2 35
  • 一、Spring面試題 1、Spring 在ssm中起什么作用? Spring:輕量級框架 作用:Bean工廠,用...
    coder_girl閱讀 348評論 0 5
  • 1.工具:IDEA,要用到的包,mysql數據庫 1.2數據庫 1.3.準備連接數據庫的封裝方法 package ...
    靜靜_6b03閱讀 310評論 0 0