业务阐明
阐明:当用户点击商品时,须要跳转到商品的展示页面中,页面名称 item.jsp
重构 JT-MANAGE
创立接口
在 common 中创立接口
编辑 Dubbo 实现类
package com.jt.service;
import com.alibaba.dubbo.config.annotation.Service;
import com.jt.mapper.ItemDescMapper;
import com.jt.mapper.ItemMapper;
import com.jt.pojo.Item;
import com.jt.pojo.ItemDesc;
import org.springframework.beans.factory.annotation.Autowired;
@Service(timeout = 3000)
public class DubboItemServiceImpl implements DubboItemService{
@Autowired
private ItemMapper itemMapper;
@Autowired
private ItemDescMapper itemDescMapper;
@Override
public Item findItemById(Long itemId) {return itemMapper.selectById(itemId);
}
@Override
public ItemDesc findItemDescById(Long itemId) {return itemDescMapper.selectById(itemId);
}
}
编辑 YML 配置文件
server:
port: 8091
servlet:
context-path: /
spring:
datasource:
#引入 druid 数据源
#type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
#mybatis-plush 配置
mybatis-plus:
type-aliases-package: com.jt.pojo
mapper-locations: classpath:/mybatis/mappers/*.xml
configuration:
map-underscore-to-camel-case: true
logging:
level:
com.jt.mapper: debug
#对于 Dubbo 配置
dubbo:
scan:
basePackages: com.jt #指定 dubbo 的包门路 扫描 dubbo 注解
application: #利用名称
name: provider-manage #一个接口对应一个服务名称 一个接口能够有多个实现
registry: #注册核心 用户获取数据从机中获取 主机只负责监控整个集群 实现数据同步
address: zookeeper://192.168.126.129:2181?backup=192.168.126.129:2182,192.168.126.129:2183
protocol: #指定协定
name: dubbo #应用 dubbo 协定 (tcp-ip) web-controller 间接调用 sso-Service
port: 20881 #每一个服务都有本人特定的端口 不能反复.
编辑 ItemController
package com.jt.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.jt.pojo.Item;
import com.jt.pojo.ItemDesc;
import com.jt.service.DubboItemService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/items")
public class ItemController {@Reference(timeout = 3000)
private DubboItemService itemService;
/**
* 实现商品详情页面跳转
* url: http://www.jt.com/items/562379.html
* 参数: 562379 itemId
* 返回值: item.jsp 页面
* 页面取值阐明:
* ${item.title} item 对象
* ${itemDesc.itemDesc} itemDesc 对象
*
* 思路:
* 1. 重构 jt-manage 我的项目
* 2. 创立中立接口 DubboItemService
* 3. 实现业务调用获取 item/itemDesc 对象
*/
@RequestMapping("/{itemId}")
public String findItemById(@PathVariable Long itemId, Model model){Item item = itemService.findItemById(itemId);
ItemDesc itemDesc = itemService.findItemDescById(itemId);
// 将数据保留到 request 域中
model.addAttribute("item",item);
model.addAttribute("itemDesc",itemDesc);
return "item";
}
}
页面成果展示