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>
界面效果:
首頁登錄界面
輸入賬號密碼正確跳轉頁面:
輸入賬號密碼錯誤跳轉頁面: