spring boot+dubbox

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启动:

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zengshangchun/article/details/85313930
今日推荐