前面文章中,咱們已經完成了OSGI應用中Spring、Mybatis、Spring MVC的整合,本篇文章咱們就在這個基礎上來完成一個簡單的登陸應用,其中用戶名和密碼須要從數據庫中查詢。css
前面文章中,咱們已經搭建好的工做空間以下圖所示:
本篇文章中,咱們只須要在com.csdn.osgi.user.web工程中添加頁面及Controller便可。html
首先新增一個登陸界面,文件路徑爲在WebContent/WEB-INF/jsp/login.jsp,內容以下:java
<%@ 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,頁面代碼以下:web
<%@ 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,邏輯比較簡單,用於跳轉到首頁面,代碼以下:spring
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處理登陸邏輯,代碼以下:sql
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,則跳轉到登陸成功界面,以下圖所示:apache
用戶名密碼輸入不正確則中止在登陸界面,固然還能夠增長一些提示信息,告訴客戶用戶名密碼錯誤,這裏就不作演示了,本案例主要是用於證實Spring MVC是整合成功的,不然Mybatis的SqlSession對象是沒法注入到Controller對象中的。bootstrap