很多大传统企业用的产品都是SAP的标准化产品,可能用过SAP的朋友都知道,确实很标准化,很多东西都是循规蹈矩的,SAP的产品确实很强大,这个不能否认,但是软件也是万能的东西,却是异常的庞大,当然这是个人的观点,在netweaver上写东西,上传到服务器,每次上线都得重新启动服务器,这个个漫长的过程。
前段时间,在做公司的一个项目的时候,为了去SAP化,这里指的只是portal,想开发点新的东西,采用的都是开源的项目,如spring,mybatise、docker、等。对于 集成SAP也就是我们说的单点登入,这里就不做讨论了,里边有好的坑,后续有时间我会专门写一篇博客来阐述,如何集成SAP的portal实现单点登入的效果。
废话不多说了,直接进入主题了,下边是是web端的一个大致的架构,都是很常见的,移动端的不是很熟悉,就不画了。
1.主要想讲的的就是后台的tomcat集群,这里边所有都是接口化开发,也就是组件化吧,也可以说是微服务的一种实现吧,用的框架就是SpringMVC来实现的,其实用springBoot也是蛮不错的选择,这个代码我有做个一个demo,但是集团出于别的考虑,就没有用吧,比如开发人员的学习成本等,这个逼废话,你懂的。
边直接上代码了,下边是后台接口Controller的一个方法,(注:只是demo,但麻雀虽小,五章俱全,公司的代码是不可能拿到的,这个都是自己平时在家或者图书官写的,都是不会涉及其他人的利益的,引用别人的我会标注出出处的)
package com.demo.login.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.demo.login.pojo.User;
import com.demo.login.service.UserService;
@RequestMapping(value="toLogin")
@Controller
public class LoginController {
@Autowired
private UserService userService;
/**
* 接口说明 :
* data:1 登入成功,0登入失败
* @param user
* @return
*/
@RequestMapping(value="toValidateLogin",method=RequestMethod.POST)
@ResponseBody
public Map<String, Object> login(User user){
Map<String, Object> map = new HashMap<String, Object>();
try {
int loginVal = this.userService.loginVal(user);
map.put("data", loginVal);
map.put("status", true);
} catch (Exception e) {
map.put("data", 0);
map.put("status", false);
e.printStackTrace();
}
return map;
}
}
@ResponseBody这个注解就可以实现接口的调用了,返回的json,在展现层直接调用这个接口就ok,当然了,登入不可能这么随意的这里只是为了演示。
2.下边是前台发送请求来调用接口(web端的实现,若果移动端的也是)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>集团登入界面</title>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.8.3.js"></script>
</head>
<body>
用户名:<input type="text" id="nameId"><br>
密 码:<input type="password" id="passWordId"><br>
<button οnclick="login()">登入</button>
<script type="text/javascript">
function login(){
var name = $("#nameId").val();
var passWord = $("#passWordId").val();
//空、长度等校验就不写了
$.ajax({
async: false,
url: "http://localhost:8080/login/toLogin/toValidateLogin",
type: "post",
datatType: "json",
data:{"name":name,"passWord":passWord},
success: function(data){
//data 1表示成功,0失败
alert(data);
}, //成功执行方法
error: function (data) {
//错误处理
alert("登入校验出现异常");
}
});
}
</script>
</body>
</html>
这里直接发送ajax请求就ok,这些静态资源可以放到nginx托管。具体的代码我会上传到csdn中,但在代码中对js的代码我们有放到nginx中也是直接打成war包放到tomcat中中测试了。
代码的路径是:可能需要审核之类的,后续再加上吧。