(五)基於SSM的用戶登錄

Spring:

Spring是一個基於IOC和AOP的結構J2EE系統的框架
Spring總結起來優點如下:

  • 低侵入式設計,代碼的污染極低。
  • 獨立於各種應用服務器,基於Spring框架的應用,可以真正實現Write Once,Run Anywhere的承諾。
  • Spring的ORM和DAO提供了與第三方持久層框架的良好整合,並簡化了底層的數據庫訪問。

SpringMVC

Spring web MVC框架提供了MVC(模型 - 視圖 - 控制器)架構和用於開發靈活和鬆散耦合的Web應用程序的組件。 MVC模式導致應用程序的不同方面(輸入邏輯,業務邏輯和UI邏輯)分離,同時提供這些元素之間的鬆散耦合。

模型(Model)封裝了應用程序數據,通常它們將由POJO類組成。視圖(View)負責渲染模型數據,一般來說它生成客戶端瀏覽器可以解釋HTML輸出。控制器(Controller)負責處理用戶請求並構建適當的模型,並將其傳遞給視圖進行渲染。

Mybatis

MyBatis 是支持普通 SQL 查詢,存儲過程和高級映射的優秀持久層框架。MyBatis 消除 了幾乎所有的 JDBC 代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML 或註解用於配置和原始映射,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 對象)映射成數據庫中的記錄。
每個MyBatis應用程序主要都是使用SqlSessionFactory實例的,一個SqlSessionFactory實例可以通過SqlSessionFactoryBuilder獲得。SqlSessionFactoryBuilder可以從一個xml配置文件或者一個預定義的配置類的實例獲得。

監聽器

監聽器就是監聽某個域對象的的狀態變化的組件
監聽器:

  • 事件源:被監聽的對象(三個域對象 request、session、servletContext)
  • 監聽器:監聽事件源對象事件源對象的狀態的變化都會觸發監聽器
  • 註冊監聽器:將監聽器與事件源進行綁定

過濾器

filter是對客戶端訪問資源的過濾,符合條件放行,不符合條件不放行,並且可以對目標資源訪問前後進行邏輯處理。作用:代碼的抽取(可以對request設置編碼,這樣所有走過的servlet的編碼都是統一的,沒必要每一個都寫)權限管理(在filter內部去除當前登錄客戶的角色,再看看訪問的資源,如果匹配則放行,不匹配則不放行)

項目結構

在這裏插入圖片描述
這次學習瞭如何基於SSM進行用戶登錄
代碼細節:
UserInfoController

@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");
        }else {
            mv.setViewName("../failer");
        }
        return mv;
    }
}

IUserInfo

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

IUserInfoService

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

UserInfoServiceImpl

@Service("userInfoServiceImpl")
public class UserInfoServiceImpl implements IUserInfoService {
    @Autowired
    private IUserInfoDao userInfoDao;

    @Override
    public List<UserInfo> findAll() {
        return userInfoDao.findAll();
    }

    @Override
    public boolean login(UserInfo userInfo) {
        UserInfo user=userInfoDao.login(userInfo);
        if(user!=null){
            return true;
        }else{
            return false;
        }
    }
}

UserInfoMapper

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

界面效果:

首頁登錄界面
在這裏插入圖片描述
輸入賬號密碼正確跳轉頁面:
在這裏插入圖片描述
輸入賬號密碼錯誤跳轉頁面:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章