1. 程式人生 > >OSGI企業應用開發(十五)基於Spring、Mybatis、Spring MVC實現一個登入應用

OSGI企業應用開發(十五)基於Spring、Mybatis、Spring MVC實現一個登入應用

前面文章中,我們已經完成了OSGI應用中Spring、Mybatis、Spring MVC的整合,本篇文章我們就在這個基礎上來完成一個簡單的登入應用,其中使用者名稱和密碼需要從資料庫中查詢。

前面文章中,我們已經搭建好的工作空間如下圖所示:
這裡寫圖片描述
本篇文章中,我們只需要在com.csdn.osgi.user.web工程中新增頁面及Controller即可。

首先新增一個登入介面,檔案路徑為在WebContent/WEB-INF/jsp/login.jsp,內容如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>使用者登入</title> <link href="css/bootstrap/css/bootstrap.min.css"
rel="stylesheet">
<link href="css/signin.css" rel="stylesheet"> </head> <body> <div class="signin"> <div class="signin-head"><img src="images/head_120.png" alt="" class="img-circle"></div> <form class="form-signin" role="form" action="Login.do" method
="post">
<input type="text" name="username" class="form-control" placeholder="使用者名稱" required autofocus /> <input type="password" name="password" class="form-control" placeholder="密碼" required /> <button class="btn btn-lg btn-warning btn-block" type="submit">登入</button> <label class="checkbox"> <input type="checkbox" value="remember-me"> 記住我 </label> </form> </div> </body> </html>

登入成功後,跳轉到成功頁面,所以我們還需要新增一個登入成功頁面,檔案路徑為WebContent/WEB-INF/jsp/success.jsp,頁面程式碼如下:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>使用者登入</title>

<link href="css/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="css/signin.css" rel="stylesheet">

</head>
<body>
<h1>登入成功</h1>
</body>
</html>

接下來需要定義兩個控制器來處理業務邏輯,首先增加一個PreLoginControler,邏輯比較簡單,用於跳轉到首頁面,程式碼如下:

package com.csdn.osgi.user.controllers;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.ModelAndView;

public class PreLoginControler implements Controller {

    public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return new ModelAndView("login");
    }
}

然後還需要一個控制器LoginControler處理登入邏輯,程式碼如下:

package com.csdn.osgi.user.controllers;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.ibatis.session.SqlSession;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class LoginControler implements Controller {

    private SqlSession sqlMap;

    public void setSqlMap(SqlSession sqlMap) {
        this.sqlMap = sqlMap;
    }

    public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        String userName = request.getParameter("username");
        String password = request.getParameter("password");

        System.out.println("UserName=>" + userName + ";" + "Password=>" + password);

        if(userName == null || password == null){
            return new  ModelAndView("login");
        }

        String pword = (String) sqlMap.selectOne("user.getPasswordByName", userName);
        System.out.println(pword);

        if(pword !=null && pword.equals(password)){
            return new ModelAndView("success");
        } else {
            return new  ModelAndView("login");
        }
    }

}

其中SqlSession 為Mybatis操作資料庫的Session物件,通過Spring注入,Bean的配置如下:

    <bean name="/preLogin.do"  class="com.csdn.osgi.user.controllers.PreLoginControler">
    </bean>


    <bean name="/Login.do"  class="com.csdn.osgi.user.controllers.LoginControler">
        <property name="sqlMap" ref="sqlMapService"></property>
    </bean>

到此為止我們已經完成了這個簡單的登入應用的開發,原始碼下載地址會在文章結尾提供,接下來就來看看效果,首先啟動OSGI容器,開啟瀏覽器訪問http://localhost:8080/preLogin.do,如下圖所示:
這裡寫圖片描述
輸入正確的使用者名稱密碼,例如Smith/Smith,則跳轉到登入成功介面,如下圖所示:

這裡寫圖片描述

使用者名稱密碼輸入不正確則停止在登入介面,當然還可以增加一些提示資訊,告訴客戶使用者名稱密碼錯誤,這裡就不做演示了,本案例主要是用於證明Spring MVC是整合成功的,否則Mybatis的SqlSession物件是無法注入到Controller物件中的。