1,新建project(smbms-springboot-dubbox)
2,新建module(smbms-springboot-dubbox-common)公共项目
2.1)增加jar包 配置
<packaging>jar</packaging>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.12</version>
</dependency>
2.2)编写实体类与service接口
//实体类
import java.io.Serializable;
public class User implements Serializable {
@JsonProperty //实体类可以自动转化为json类对象数据的属性
private Integer id;
@JsonProperty
private String userCode;
@JsonProperty
private String userName;
@JsonProperty
private String password;
//接口
public interface UserService {
//登陆
User loginUser(User user);
}
2.3)打成jar包,放入maven仓库
3,新建module(smbms-springboot-dubbox-provider)提供者
3.1)增加jar包 配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.kgc1803</groupId>
<version>1.0-SNAPSHOT</version>
<artifactId>smbms-springboot-dubbox-provider</artifactId>
<!--定义变量-->
<properties>
<java.version>1.8</java.version>
<spring.boot.version>1.5.10.RELEASE</spring.boot.version>
<mybatis.spring.boot.version>1.3.2</mybatis.spring.boot.version>
<mysql.driver>5.1.46</mysql.driver>
</properties>
<dependencies>
<!--公共包-->
<dependency>
<groupId>org.kgc1803</groupId>
<artifactId>smbms-springboot-dubbox-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.driver}</version>
</dependency>
<!--mybatis,mybatis-spring,spring-jdbc-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.8</version>
</dependency>
<!--spring+dubbox的jar包-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.1.1</version>
<!--<exclusions>-->
<!--<exclusion>-->
<!--<groupId>com.alibaba</groupId>-->
<!--<artifactId>dubbo</artifactId>-->
<!--</exclusion>-->
<!--<exclusion>-->
<!--<groupId>org.apache</groupId>-->
<!--<artifactId>zookeeper</artifactId>-->
<!--</exclusion>-->
<!--</exclusions>-->
</dependency>
</dependencies>
</project>
3.2)编写service实现类, dao mapper
A,新建dao mapper:
package org.kgc1803.smbms.dao;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.kgc1803.smbms.pojo.User;
import org.springframework.stereotype.Repository;
@Mapper //表示该接口是一个注解mybatis接口
@Repository //表示注入一个dao实现类
public interface UserMapper {
//登陆
@Select("SELECT id,userName,userCode FROM smbms_user WHERE userCode=#{userCode} and password=#{password}")
@Results(id="userMap",value = {
@Result(property = "id",column = "id",javaType =Integer.class ),
@Result(property = "userName",column = "userName",javaType =String.class ),
@Result(property = "userCode",column = "userCode",javaType =String.class )
}) //相当于resultMap,如果用resultType就不用写
User loginUser(User user);
}
B,新建service实现类:
package org.kgc1803.smbms.service;
import org.kgc1803.smbms.dao.UserMapper;
import org.kgc1803.smbms.pojo.User;
import com.alibaba.dubbo.config.annotation.Service;
import javax.annotation.Resource;
@Service(timeout = 10000) //用dubbo的Service(com.alibaba.dubbo.config.annotation.Service)
public class UserServiceImpl implements UserService {
@Resource
private UserMapper userMapper;
public User loginUser(User u) {
return userMapper.loginUser(u);
}
}
3.3)编写配置文件(application.properties)
#dataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/dubbo-smbms
spring.datasource.username=root
spring.datasource.password=123456
#服务器
server.port=21001
server.tomcat.uri-encoding=UTF-8
#应用的名称
dubbo.application.name=smbms_provider123
#注册中心的地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo扫描包 发布服务所在的包
dubbo.scan.base-packages=org.kgc1803.smbms.service
3.4)编写测试类(SsmApplication)
package org.kgc1803.smbms;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
@SpringBootApplication
public class SsmApplication {
public static void main(String[] args) {
//以main方法启动
//SpringApplication.run(SsmApplication.class, args);
//项目以web方式启动
//new SpringApplicationBuilder(SsmApplication.class).web(WebApplicationType.NONE).run();
new SpringApplicationBuilder(SsmApplication.class).web(false).run();
}
}
3.5)用SsmApplication类启动提供者
4,新建module(smbms-springboot-dubbox-consume)消费者
4.1)增加jar包 配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.kgc1803</groupId>
<version>1.0-SNAPSHOT</version>
<artifactId>smbms-springboot-dubbox-consume</artifactId>
<packaging>war</packaging>
<!--定义变量-->
<properties>
<java.version>1.8</java.version>
<spring.boot.version>1.5.10.RELEASE</spring.boot.version>
<mybatis.spring.boot.version>1.3.2</mybatis.spring.boot.version>
<mysql.driver>5.1.46</mysql.driver>
</properties>
<dependencies>
<!--公共包-->
<dependency>
<groupId>org.kgc1803</groupId>
<artifactId>smbms-springboot-dubbox-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--spring mvc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<!--dubbo-spring-boot-starter-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.1.1</version>
</dependency>
<!--zookeeper-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<!--zkclient-->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.8</version>
</dependency>
<!--ideal内置tomcat不支持jsp,需要增加 jsp jar包-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>8.5.27</version>
<!--测试用-->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>8.5.27</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.2)编写controller
package org.kgc1803.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
//首页访问
@Controller
public class IndexController {
@RequestMapping("/")
public String index(){
return "login";
}
}
package org.kgc1803.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import org.kgc1803.smbms.pojo.User;
import org.kgc1803.smbms.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpSession;
@Controller
@RequestMapping("/user")
public class UserController {
@Reference(interfaceClass = UserService.class) //dubbo的@Reference,和javax.annotation.Resource同作用
private UserService userService;
@RequestMapping(value = "dologin.html",method = RequestMethod.POST)
public String doLogin(User user, HttpSession session){
User u=userService.loginUser(user);
if(u!=null){
session.setAttribute("session_user",u);
return "index";
}else {
return "login";
}
}
}
4.3)新建编写配置文件(application.properties)
#spring mvc
spring.mvc.view.prefix=/WEB-INF/js/
spring.mvc.view.suffix=.jsp
#spring字符集
spring.http.encoding.charset=UTF-8
spring.http.encoding.force=true
spring.http.encoding.enabled=true
#服务器
server.port=8081
server.tomcat.uri-encoding=UTF-8
#应用的名称
dubbo.application.name=smbms_consume123
#注册中心的地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
4.4)编写测试类(SsmConsume)
package org.kgc1803;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
@SpringBootApplication
public class SsmConsume {
public static void main(String[] args) {
//以main方法启动
SpringApplication.run(SsmConsume.class, args);
//项目以web方式启动
//new SpringApplicationBuilder(SsmConsume.class).web(false).run();
}
}
4.5)新建webapp/WEB-INF/js/路径,新建jsp页面
login.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="fm" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@page isELIgnored="false"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登陆</title>
</head>
<body>
<form method="post" action="${pageContext.request.contextPath}/user/dologin.html">
用户名:<input name="userCode">
密码:<input name="password">
<input type="submit" value="登陆">
</form>
</body>
</html>
index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="fm" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@page isELIgnored="false"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>首页</title>
<script src="${pageContext.request.contextPath}/js/jquery-3.3.1.js"></script>
<script type="text/javascript">
$(function () {
$.ajax({
url:"http://localhost:8085/order/orderlist.htm",
dataType:"json",
success:function (orderList) {
var ul=$("ul");
$.each(orderList,function (index,item) {
ul.append("<li>"+item.productName+"</li>");
})
}
})
})
</script>
</head>
<body>
<h2>欢迎你:${session_user.userName}</h2>
<ul>
</ul>
</body>
</html>
4.6)springboot启动: