分布式调用与高并发处理 Dubbo分布式调用(四)

简介: 分布式调用与高并发处理 Dubbo分布式调用(四)

5.12 user_consumer项目集成Thymeleaf

5.12.1 user_consumer工程pom文件中添加thymeleaf依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

5.12.2 配置视图解析器

默认

spring-boot很多配置都有默认配置,比如默认页面映射路径为

classpath:/templates/*.html

同样静态文件路径为

classpath:/static/

自定义

在application.properties(或者application.yml)中可以配置thymeleaf模板解析器属性.就像使用springMVC的JSP解析器配置一样。

spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html 
#开发时关闭缓存,不然没法看到实时页面
spring.thymeleaf.cache=false

5.12.3 编写index.html首页

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<a th:href="@{/addUser}">添加用户</a><br>
<a th:href="@{/user/getUser}">查询用户</a>
</body>
</html>

5.12.4 创建页面跳转 Controller

package com.zj.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class PageController {
   /**
   * 完成页面跳转
   */
   @GetMapping("/{page}")
   public String showPage(@PathVariable String page){
     return page;
   }
   /*忽略图标*/
    @GetMapping("/favicon.ico")
    @ResponseBody
    public String favicon(){
        return " ";
    }
}

启动user_cnsumer项目。

5.13 用户添加业务消费者实现

5.13.1 user_consumer项目配置文件中添加Dubbo相关的配置信息

################ Dubbo 配置 ####################
#服务的名称
dubbo.application.name=Consumer
#  注册中心地址(单机)
dubbo.registry.address=zookeeper://192.168.66.100:2181
#  注册中心地址(集群)
#dubbo.registry.address=zookeeper://192.168.233.130:2181?backup=192.168.233.130:2182,192.168.233.130:2183
dubbo.registry.timeout=50000
#协议
dubbo.protocol.name=dubbo
#dubbo服务端口
dubbo.protocol.port=20881
#包扫描
dubbo.scan.base-packages=com.zj.service

5.13.2 编写adduser.html页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>添加用户</title>
</head>
<body>
<form th:action="@{/user/addUser}" method="post">
    用户姓名:<input type="text" name="name"/><br/>
    用户年龄:<input type="text" name="age"/><br/>
    <input type="submit" value="OK"/>
</form>
</body>
</html>

5.13.3 user-consumer项目添加 user_api依赖

<dependency>
            <groupId>com.zj</groupId>
            <artifactId>user_api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

5.13.4 user_consumer项目编写用户添加接口和实现类

package com.zj.service;
import com.zj.pojo.User;
public interface UserService {
    void addUser(User user);
}
package com.zj.service.Impl;
import com.alibaba.dubbo.config.annotation.Reference;
import com.zj.api.AddUserService;
import com.zj.pojo.User;
import com.zj.service.UserService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
    //远程调用生产者接口
    @Reference
    private AddUserService addUserService;
    @Override
    public void addUser(User user) {
      addUserService.addUser(user);
    }
}

5.13.5创建控制器

package com.zj.controller;
import com.zj.pojo.User;
import com.zj.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource;
/**
 * 处理用户操作控制器
 */
@Controller
@RequestMapping("/user")
public class UserController {
  @Resource
  private UserService userService;
  /**
   * 处理添加用户请求
   */
  @RequestMapping("/addUser")
  public String addUser(User user){
    this.userService.addUser(user);
    return "redirect:/ok";
   }
}

运行项目即可。

查看数据库是否存在该数据。

查看、修改、删除和添加同理不再赘述。

相关文章
|
2月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
24天前
|
NoSQL Java Redis
京东双十一高并发场景下的分布式锁性能优化
【10月更文挑战第20天】在电商领域,尤其是像京东双十一这样的大促活动,系统需要处理极高的并发请求。这些请求往往涉及库存的查询和更新,如果处理不当,很容易出现库存超卖、数据不一致等问题。
42 1
|
1月前
|
NoSQL Java Redis
Redlock分布式锁高并发下有什么问题
Redlock分布式锁在高并发场景下可能面临的问题主要包括:网络延迟、时钟偏移、单点故障、宕机重启问题、脑裂问题以及效率低等。接下来,我将使用Java代码示例来说明其中一些问题。
83 12
|
1月前
|
存储 缓存 NoSQL
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
56 4
|
1月前
|
缓存 NoSQL Ubuntu
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
53 3
|
2月前
|
负载均衡 监控 Dubbo
分布式框架-dubbo
分布式框架-dubbo
|
2月前
|
Dubbo Java 应用服务中间件
分布式-dubbo的入门
分布式-dubbo的入门
|
2月前
|
存储 Dubbo 应用服务中间件
分布式-Dubbo-Dubbo的由来
分布式-Dubbo-Dubbo的由来
|
2月前
|
XML 负载均衡 监控
分布式-dubbo-简易版的RPC框架
分布式-dubbo-简易版的RPC框架
|
2月前
|
负载均衡 监控 Dubbo
分布式-Dubbo-dubbo能解决什么问题
分布式-Dubbo-dubbo能解决什么问题