基于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阅读 1,087评论 0 1
  • SpringMVC 一、SpringMVC概述 1. 三层架构 服务器端开发程序主要由两种形式构成。一种是基于客户...
    青丶空阅读 140评论 0 1
  • 标签:sso iplas 一、SSO(单点登录)介绍 SSO英文全称Single SignOn,单点登录。SSO是...
    傑仔阅读 13,466评论 2 35
  • 一、Spring面试题 1、Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用...
    coder_girl阅读 194评论 0 6
  • 1.工具:IDEA,要用到的包,mysql数据库 1.2数据库 1.3.准备连接数据库的封装方法 package ...
    静静_6b03阅读 40评论 0 0