前面文章中,我们已经完成了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="data: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

OSGI企业应用开发(十五)基于Spring、Mybatis、Spring MVC实现一个登录应用的更多相关文章

  1. OSGI企业应用开发(五)使用Blueprint整合Spring框架(二)

    上篇文章中,我们开发了一个自定义的Bundle,接着从网络中下载到Spring和Blueprint的Bundle,然后复制到DynamicRuntime项目下. 需要注意的是,这些Bundle并不能在 ...

  2. STC8H开发(十五): GPIO驱动Ci24R1无线模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  3. 设计模式之美学习(九):业务开发常用的基于贫血模型的MVC架构违背OOP吗?

    我们都知道,很多业务系统都是基于 MVC 三层架构来开发的.实际上,更确切点讲,这是一种基于贫血模型的 MVC 三层架构开发模式. 虽然这种开发模式已经成为标准的 Web 项目的开发模式,但它却违反了 ...

  4. OSGI企业应用开发(十四)整合Spring、Mybatis、Spring MVC

    作为一个企业级的Web应用,MVC框架是必不可少的.Spring MVC目前使用也比较广泛,本文就来介绍一下如何在OSGI应用中实现Spring.Mybatis.Spring MVC框架的整合,其中S ...

  5. OSGI企业应用开发(十二)OSGI Web应用开发(一)

    前面文章中介绍了如何在OSGI应用中整合Spring和Mybatis框架,本篇文章开始介绍如何使用OSGI技术开发Web应用.对于传统的Java EE应用,应用中涉及到的Web元素无非就是Servle ...

  6. OSGI企业应用开发(九)整合Spring和Mybatis框架(二)

    上篇文章中,我们完成了在OSGI应用中整合Spring和Mybatis框架的准备工作,本节我们继续Spring和Mybatis框架的整合. 一.解决OSGI整合Spring中的Placeholder问 ...

  7. OSGI企业应用开发(八)整合Spring和Mybatis框架(一)

    到目前为止,我们已经学习了如何使用Blueprint將Spring框架整合到OSGI应用中,并学习了Blueprint&Gemini Blueprint的一些使用细节.本篇文章开始,我们將My ...

  8. OSGI企业应用开发(一)OSGI简介

    一.OSGI简介 OSGI全称为Open Service Gateway Initiative(开放服务网关规范),有两个层面的含义,一方面它指OSGi Alliance组织:另一方面指该组织制定的一 ...

  9. OSGI企业应用开发(十三)OSGI Web应用开发(二)

    上篇文章介绍了OSGI Web应用的两种开发模式,并把Jetty应用服务器以Bundle的形式整合到Equinox容器中,已这种模式开发Web应用,所有的应用程序资源,例如Servlet.JSP.HT ...

随机推荐

  1. Metasploit Framework(1)基本命令、简单使用

    文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 基本的控制台命令介绍: banner 查看metasp ...

  2. 怎样在mybatis里向mysql中插入毫秒数的时间?

    由于业务场景需求,需要记录精准的时间,但是呢,又不要想使用int类型来存储时间,因为这样的可读性比较差了. 怎样在mybatis中向数据库插入毫秒级别的时间呢? 首先,先来看看怎样向数据库中插入毫秒时 ...

  3. 机器学习入门03 - 降低损失 (Reducing Loss)

    原文链接:https://developers.google.com/machine-learning/crash-course/reducing-loss/ 为了训练模型,需要一种可降低模型损失的好 ...

  4. AI - Tips

    01- Playground http://playground.tensorflow.org TensorFlow的网页工具Playground提供了几种简单类型的data,可以调节网络结构.学习率 ...

  5. php 中构造函数和析构函数

    构造函数: 在对象实例化时被调用,一个类中只能有一个构造函数,在类中起初始化的作用. 析构函数: 在对象结束时被自动调用. 话不多说,用一段代码来说明两者的区别: <?php //定义一个类 c ...

  6. 内存管理-buddy[代码]

    基于2.6.32内核源码分析 首选内存区和gfp描述符关系运算 64位系统默认没有开启CONFIG_HIGHMEM选项,因此只有4个内存区DMA(0),DMA32(1),NORMAL(2),MOVAB ...

  7. 利用 DynamicLinq 实现简单的动态表达式构建查询

    平时使用 LINQ 进行一些简单的条件拼接查询一般都会这样操作: public class SearchInputDto { public string ConditionA { get; set; ...

  8. axios 安卓低版本兼容性处理

    问题: 在较低版本的android手机中发现封装的 http 无效,我测试使用的是android 4.4的老手机,主要就是无法使用promise. 解决方案 安装 npm install es6-pr ...

  9. linux 命令 — sed

    sed stream editor,流编辑器 查找替换 sed 's/pattern/replace_string/' file 替换每一行第一次出现的pattern,将替换后的文本输出到stdout ...

  10. [机器学习]回归--Decision Tree Regression

    CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值:当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很好的解决分类问题. ...