SSM框架实现简单的登录、查询

新建maven项目

相关概念简单介绍:

监听器:监听器就是监听某个域对象的状态变化的组件
过滤器:filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标资源访问前后进行逻辑处理。作用:代码的抽取(可以对request设置编码,这样所有走过的servlet的编码都是统一的,没必要每一个都写)权限管理(在filter内部去除当前登录客户的角色,再看看访问的资源,如果匹配则放行,不匹配则不放行)

开发步骤

1.新建maven项目:
在这里插入图片描述
在这里插入图片描述
在右下角点击enable import,让其自动导包。

2.新建相关目录:例如java、resource等,具体目录列表如下图所示:
在这里插入图片描述
3.在bean包下新建UserInfo类,输入数据库中包含的属性值,选择自动生成构造方法、setter、getter方法、toString方法:

package com.zhongruan.bean;

public class UserInfo {
    private int id;
    private String username;
    private String password;

    public UserInfo() {
    }
    public UserInfo(int id,String username,String password){
        this.id=id;
        this.username=username;
        this.password=password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "UserInfo{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

4.在UserInfoMapper.xml文件中编写关于数据库相关操作的代码,eg:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.zhongruan.dao.IUserInfoDao" >
    <select id="findAll" resultType="com.zhongruan.bean.UserInfo">
        select * from userinfo
    </select>
    <select id="login" resultType="com.zhongruan.bean.UserInfo" parameterType="com.zhongruan.bean.UserInfo">
        select * from userinfo where username=#{username} and password=#{password}
    </select>


</mapper>

5.IUserInfoDao接口:

package com.zhongruan.dao;

import com.zhongruan.bean.UserInfo;

import java.util.List;

public interface IUserInfoDao {
    public List<UserInfo> findAll();
    public UserInfo login(UserInfo userInfo);
}

6.在service层新建一个接口类 IUserInfoService:

package com.zhongruan.service;

import com.zhongruan.bean.UserInfo;

import java.util.List;

public interface IUserInfoService {
    public List<UserInfo> findAll();
    public boolean login(UserInfo userInfo);
}

7.UserInfoServiceImpl实现IUserInfoService接口

import com.zhongruan.dao.IUserInfoDao;
import com.zhongruan.service.IUserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service("userInfoService")
public class UserInfoServiceImpl implements IUserInfoService {
    @Autowired
    private IUserInfoDao userInfoDao;
    @Override
    public List<UserInfo> findAll() {
        return userInfoDao.findAll();
    }
    public boolean login(UserInfo userInfo){
        UserInfo user = userInfoDao.login(userInfo);
        if(user!=null)
        {
            return true;
        }
        else
            return false;
    }
}

上述加注解@Autowired,表明Spring会自动new一个对象出来;
8.配置文件介绍:
在这里插入图片描述
扫描dao包,注入sqlSessionFactory,连接数据库,扫描bean包,加载映射文件
在这里插入图片描述
描述了数据库的相关信息,不需要jdbc的七步操作了。

实现结果:
实现查询的功能,结果如下图所示:
在这里插入图片描述
登录成功界面:
在这里插入图片描述
在这里插入图片描述
登录失败:
在这里插入图片描述
相关实现代码(逻辑部分):

@Controller
@RequestMapping("user")
public class UserInfoController {
    @Autowired
    private IUserInfoService userInfoService;

    @RequestMapping("/findAll.do")
    public ModelAndView findAll()
    {
        ModelAndView mv=new ModelAndView();
        List<UserInfo> userInfos=userInfoService.findAll();
        mv.addObject("userInfos",userInfos);
        mv.setViewName("user-list");
        return mv;
    }
    @RequestMapping("login.do")
    public ModelAndView login(UserInfo userInfo) {
        boolean flag=userInfoService.login(userInfo);
        ModelAndView mv = new ModelAndView();
        if (flag) {
            mv.setViewName("main");
            return mv;
        }
        else{
            mv.setViewName("../failer");
            return mv;
        }
    }
}
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页