自学实前后端践项目3 Spring Cloud微服务 6
六.服务消费者整合user
先添加两个前端:
链接:https://pan.baidu.com/s/1phn9ejGF_21Gp-WGJ9qsCA
提取码:ul6d
在User下创建封装VO
package com.redhat.entity;import lombok.Data;import java.util.List;@Data public class UserVO {private int code;private String msg;private int count;private List<User> data; }
同时client 需要调用也要复制到它的文件夹下
接下来修改handler创建对照menu和user的不同之处
package com.redhat.controller;import com.redhat.entity.User; import com.redhat.entity.UserVO; import com.redhat.feign.UserFeign; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*;import java.util.Date; import java.util.List;@Controller @RequestMapping("/user") public class UserHandler {@Autowiredprivate UserFeign userFeign;@GetMapping("/findAll")@ResponseBodypublic UserVO findAll(@RequestParam("page")int page, @RequestParam("limit")int limit){int index = (page-1)*limit;UserVO userVO = new UserVO();userVO.setCode(0);userVO.setMsg("");userVO.setCount(userFeign.count());userVO.setData(userFeign.findAll(index,limit));return userVO;}@GetMapping("/redirect/{location}")public String redirect(@PathVariable("location") String location){return location;}@GetMapping("/count")public int count(){return userFeign.count();}@PostMapping("/save")public String save(User user){user.setRegisterdate(new Date());userFeign.save(user);return "redirect:/user/redirect/user_manage";}@GetMapping("/deleteById/{id}")public String deleteById(@PathVariable("id") long id) {userFeign.deleteById(id);return "redirect:/user/redirect/user_manage";} }最后启动服务开始测试
调用页面通了开始测试添加用户
提价成功
删除
easy
七。服务消费者整合account(用于admin和普通用户调用的权限访问转换)
1.添加一个模块account
配置文件从user复制
pom相关依赖和user的依赖相同
<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId><version>2.0.2.RELEASE</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.27</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId><version>2.0.2.RELEASE</version></dependency> </dependencies>
bootstrap.yml
spring:application:name: accountprofiles:active: devcloud:config:uri: http://localhost:8762fail-fast: true
端口配置
server:port: 8050 spring:application:name: accountdatasource:name: orderingsystemurl: jdbc:mysql://localhost:3306/orderingsystem?useUnicode=true&characterEncoding=UTF-8username: rootpassword: 123456eureka:client:service-url:defaultZone: http://localhost:8761/eureka/instance:prefer-ip-address: true mybatis:mapper-locations: classpath:/mapping/*.xmltype-aliases-package: com.redhat.entity
创建添加admin和user的封装类
User
package com.redhat.entity;import lombok.Data;import java.util.Date;@Data public class User {private long id;private String username;private String password;private String nickname;private String gender;private String telephone;private Date registerdate;private String address; }
Admin
package com.redhat.entity;import lombok.Data;@Data public class Admin {private long id;private String username;private String password;}
添加account的启动项
package com.redhat;import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication @MapperScan("com.redhat.repository") public class AccountApplication {public static void main(String[] args) {SpringApplication.run(AccountApplication.class,args);}}
accountHandler
package com.redhat.controller;import com.redhat.repository.AdminRepository; import com.redhat.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;@RestController @RequestMapping("/account") public class AccountHandler {@Autowiredprivate UserRepository userRepository;@Autowiredprivate AdminRepository adminRepository;@GetMapping("/login/{username}/{password}/{type}")public Object login(@PathVariable("username") String username,@PathVariable("password") String password,@PathVariable("type") String type){Object object =null;switch (type){case "user":object = userRepository.login(username,password);break;case "admin":object = adminRepository.login(username,password);break;}return object;} } 接口分别编写
UserRepository
package com.redhat.repository;import com.redhat.entity.User;public interface UserRepository {public User login(String username,String password); }
AdminRepository
package com.redhat.repository;import com.redhat.entity.Admin;public interface AdminRepository {public Admin login(String username,String password); } 数据sql查询语句分别编写xml
User
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.redhat.repository.UserRepository"><select id="login" resultType="com.redhat.entity.User">select * from t_user where username = #{param1} and password = #{param2}</select></mapper>
Admin
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.redhat.repository.AdminRepository"><select id="login" resultType="com.redhat.entity.Admin">select * from t_admin where username = #{param1} and password = #{param2}</select></mapper>
所有工作准备就绪测试接口
重启配置中心和配置中心启动新建的启动测试
admin
user
准备前端页面进行登录操作
复制前端login页面
链接:https://pan.baidu.com/s/1-6U3wkiQZm4RzJ9iSfkHtQ
提取码:hyhb
client里面把admin类复制到entity里面准备调用
在client里面编写accountHanlder
判断登录模式已经登录权限分配
package com.redhat.controller;import com.redhat.entity.Admin; import com.redhat.entity.User; import com.redhat.feign.AccountFeign; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam;import javax.servlet.http.HttpSession; import java.util.LinkedHashMap;@Controller @RequestMapping("/account") public class AccountHandler {@Autowiredprivate AccountFeign accountFeign;@PostMapping("/login")public String login(@RequestParam("username") String username,@RequestParam("password") String password,@RequestParam("type") String type,HttpSession session){Object object = accountFeign.login(username, password, type);LinkedHashMap<String,Object> hashMap =(LinkedHashMap)object;String result = null;if(object==null){result="login";}else {switch (type){case "user":User user =new User();String idStr =hashMap.get("id")+"";long id =Long.parseLong(idStr);String nickname=(String)hashMap.get("nickname");user.setId(id);user.setNickname(nickname);session.setAttribute("user",user);result = "index";break;case "admin":Admin admin =(Admin) object;session.setAttribute("admin",admin);result = "";break;}}return result;} }index里面欢迎回来增加登录名称判断nickname <div style="margin-left: 460px; width: 200px;">欢迎回来!<a href="/account/redirect/order" th:text="${session.user.nickname}"></a><a href="/account/logout"> <button class="layui-btn layui-btn-warm layui-btn-radius">退出</button></a> </div>
测试user
登录成功跳转到index
其他order的配置文件以及端口设置和上面account的操作一样
order添加依赖复制menu里面的
<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId><version>2.0.2.RELEASE</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.27</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId><version>2.0.2.RELEASE</version></dependency></dependencies>
把index里面
<script type="text/html" id="barDemo">
</script>
里面的点击事件替换成如下订购按钮
<script type="text/html" id="barDemo"><a class="layui-btn layui-btn-xs" lay-event="order">订购</a> </script>
下面继续完成订单生成相关查询和页面调用
编写相关order的封装
这里需要先把需要用到实体类接口已经需要引用的文件夹复制到对应的文件(已经存在的复制就好)
package com.redhat.entity;import lombok.Data;import java.util.Date;@Data public class Order {private long id;private User user;private Menu menu;private Admin admin;private Date date;private int state; }
OrderHandler里面编写查找和保存相关的方法
package com.redhat.controller;import com.redhat.entity.Order; import com.redhat.repository.OrderRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*;import java.util.Date; import java.util.List;@RestController @RequestMapping("/order") public class OrderHandler { // @Value("${server.port}") // private String port; // @GetMapping("/index") // public String index(){ // return "order的端口"+this.port; // }@Autowiredprivate OrderRepository orderRepository;@PostMapping("/save")public void save(@RequestBody Order order){order.setDate(new Date());orderRepository.save(order);}@GetMapping("/findAll/{index}/{limit}")public List<Order> findAll(@PathVariable("index") int index,@PathVariable("limit") int limit){return orderRepository.findAll(index,limit);} } mmapping里面的OrderRepository数据库查询语句
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.redhat.repository.OrderRepository"><resultMap id="orderMap" type="com.redhat.entity.Order"><id column="id" property="id"></id><result column="date" property="date"></result><result column="state" property="state"></result><association property="menu" select="com.redhat.repository.MenuRepository" column="mid"></association></resultMap><insert id="save" parameterType="com.redhat.entity.Order">insert into t_order(uid,mid,date,state) values(#{user.id},#{menu.id},#{date},0)</insert><select id="findAll" resultType="com.redhat.entity.Order">select id,mid,date,state from t_order limit #{param1},#{param2}</select></mapper>
client里面添加OrderHandler
package com.redhat.controller;import com.redhat.entity.Menu; import com.redhat.entity.Order; import com.redhat.entity.User; import com.redhat.feign.OrderFeign; import org.springframework.beans.factory.annotation.Autowired; 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.RequestMapping;import javax.servlet.http.HttpSession;@Controller @RequestMapping("/order") public class OrderHandler {@Autowiredprivate OrderFeign orderFeign;@GetMapping("/save/{mid}")public String save(@PathVariable("mid")int mid, HttpSession session){User user = (User)session.getAttribute("user");Order order =new Order();order.setUser(user);Menu menu = new Menu();menu.setId(mid);order.setMenu(menu);order.setState(0);orderFeign.save(order);return "index";} }
client接口
package com.redhat.feign;import com.redhat.entity.Order; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody;@FeignClient(value = "order") public interface OrderFeign {@PostMapping("/order/save")public void save(@RequestBody Order order); } 用postman进行保存测试
测试显示
测试点击第一个菜进行保存的号码
数据库数据
测试查找
另外退出登录返回到登录界面在client AccountHanlder下增加即可实现
@GetMapping("/logout") public String logout(HttpSession session){session.invalidate();return "redirect:/login.html";
自学实前后端践项目3 Spring Cloud微服务 6相关推荐
- 自学实前后端践项目3 Spring Cloud微服务 8
九.后台管理系统 1.前面基本上的功能都已经实现了,最后就行优化和界面管理! 1)过滤器接口实现直接访问主页面的时候需要先登录的功能 在client里面创建filter创建UserFilter 类然后 ...
- 自学实前后端践项目3 Spring Cloud微服务 2
创建服务提供者menu 数据库文件设计资料 -- MySQL dump 10.13 Distrib 8.0.11, for macos10.13 (x86_64) -- -- Host: 127.0 ...
- 自学实前后端践项目3 Spring Cloud微服务 3
二.服务消费者整合menu 创建新的文件夹 创建服务消费者依赖 <dependencies><dependency><groupId>org.springframe ...
- 自学实前后端践项目2 phone Store 1
phone Store 基于移动端的手机 基于Spring Boot +Vue 前端技术栈 Vue+Vant UI +less 相关插件安装 npm i vant -S npm i axios -S ...
- 自学实前后端践项目4 MMall商城 1
一.开发环境 1.JDK8以上+Spring Boot 2.3.0+Thymeleaf+MyBatis Plus3.3.1+MySQL8.0+ 2.部署:Linux,,(阿里云 腾讯云)JDK8+,M ...
- 从天气项目看Spring Cloud微服务治理
网上搜集的资源,个人感觉还行,分享了 从天气项目看Spring Cloud微服务治理 网盘地址:https://pan.baidu.com/s/1ggn5uld 密码: n6bn 备用地址(腾讯微云) ...
- Servlet+MyBatis项目转Spring Cloud微服务,多数据源配置修改建议
一.项目需求 在开发过程中,由于技术的不断迭代,为了提高开发效率,需要对原有项目的架构做出相应的调整. 二.存在的问题 为了不影响项目进度,架构调整初期只是把项目做了简单的maven管理,引入spri ...
- Spring Cloud 微服务项目操作实战流程(完结)
Spring Cloud入门项目操作实战流程 Day01~02 〇.Service - 业务服务结构 商品服务 item service,端口 8001 用户服务 user service,端口 81 ...
- Java之 Spring Cloud 微服务的 SpringCloud Config 配置中心(第四个阶段)【二】【SpringBoot项目实现商品服务器端调用】
SpringCloud学习目录点击跳转对应的文章 Java之 Spring Cloud 微服务搭建(第一个阶段)[一][SpringBoot项目实现商品服务器端是调用] Java之 Spring Cl ...
最新文章
- USB获取图像实时处理
- 2008年上半年 网络工程师 上下午试卷【附带答案】
- 知乎宣布完成4.34亿美元F轮融资,快手领投,融资额刷新此前记录
- 使用C#调用外部Ping命令获取网络连接情况
- 真实集群中Flink命令行各种模式提交wordcount
- 栅格像元做地理坐标映射后的坐标值是像元中心点还是其他位置?
- 学计算机之路写一篇作文,我的学习之路作文(2篇)
- z3735f android x86,英特尔的Atom Z3735F分析 全文总结_台电 X80HD_平板电脑评测-中关村在线...
- Struts2 Servelet重构
- java日志文件log4j.properties配置详解
- 20190914:(leetcode习题)验证二叉搜索树
- qt制作位图led点阵_LED显示屏知识详细讲解
- AngularJS transclude 理解及例子
- 多个PDF合并后页面大小不一
- 模拟电路实验 05 - | 集成运算放大器
- cad2012打开后闪退_win7系统打开CAD2012出现闪退的解决方法
- Android编程获取图片和视频缩略图的方法(图片压缩)
- 使用mosquitto库命令与腾讯云通信
- 简单通过微信公众号获取OPEN ID
- Flutter中的依赖注入——get_it
热门文章
- 这3个思路,将彻底解决90%第三方支付公司所面临的合规建设困惑!
- 花咲の姫君(異時層ツキハ) / 花咲(异时层妖刀)
- C语言之程序在内存中的分布以及内存越界问题
- IT教育培训机构套路揭秘,这样的学校不能选,擦亮眼睛不上当
- (数据分析)Python-matpoltlib库-绘制条形图
- Label立体字体效果
- 15、【华为HCIE-Storage】--多路径技术
- 数字化时代下,智能运维全栈监控解决方案及案例盘点
- oracle bi 包括etl,【原创】ETL_ORACLE BI平台-BIEE+心得
- 制作京东快报页面html,仿京东快报.html