zoukankan      html  css  js  c++  java
  • 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对象中的。

    本文源码下载:http://download.csdn.net/detail/rongbo_j/9757751

  • 相关阅读:
    sql 变量赋值
    mysql 行号 获取指定行数据
    SQL Server获取指定行的数据
    sql server 创建内联表值函数
    sql server 表变量存储临时查询数据
    sql server 循环操作
    oracle for in 学习
    oracle C# 访问
    sql server insert values 多值 与oracle 的不同
    mysql 如何选择随机行
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6468127.html
Copyright © 2011-2022 走看看