idea下用maven创建并搭建dubbox微服务环境项目(五)—综合整理及总结
2018-12-26 19:15
591 查看
版权声明:转载请标明出处: https://blog.csdn.net/gaofengyan/article/details/85266600
第四篇链接地址:https://blog.csdn.net/gaofengyan/article/details/85252856
今天将之前几天做的全部串联了起来,然后把订单再写一个来测试,做个总结,就差不多了。
在数据库增加模拟数据:
新建OrderMapper.java接口:
[code]package cn.kgc1803.smbms_user_provider.dao; import cn.kgc1803.smbms_common.pojo.Order; 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.springframework.stereotype.Repository; import java.util.List; @Mapper @Repository public interface OrderMapper { /** * 查询订单 * @param ownerUserId * @return */ @Select("SELECT o.ID,o.OWNERUSERID,o.PRODUCTNAME,o.PRICE,o.AMOUNT\n" + "FROM smbms_order AS o \t\n" + "WHERE ownerUserId =#{ownerUserId}") @Results(id = "orderMap",value = { @Result(property = "id",column = "ID",javaType = Integer.class), @Result(property = "ownerUserId",column = "OWNERUSERID",javaType = Integer.class), @Result(property = "productName",column = "PRODUCTNAME",javaType = String.class), @Result(property = "price",column = "PRICE",javaType = Double.class), @Result(property = "amount",column = "AMOUNT",javaType = Integer.class) }) List<Order> getOrderList(Integer ownerUserId); }
修改OrderServiceImpl.java实现类:
[code]package cn.kgc1803.smbms_user_provider.service; import cn.kgc1803.smbms_common.pojo.Order; import cn.kgc1803.smbms_common.service.OrderService; import cn.kgc1803.smbms_user_provider.dao.OrderMapper; import com.alibaba.dubbo.rpc.protocol.rest.support.ContentType; import javax.annotation.Resource; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import java.util.ArrayList; import java.util.List; //@Produces设置输出结果集的 数据类型 @Path("/order") @Produces(ContentType.APPLICATION_JSON_UTF_8) public class OrderServiceImpl implements OrderService { @Resource private OrderMapper orderMapper; //@Path访问路径 //@GET请求方式 @Path("/orderlist/{ownerUserId}") @GET public List<Order> findList(@PathParam("ownerUserId")Integer ownerUserId) { return orderMapper.getOrderList(ownerUserId); } }
OrderController.java控制层修改,增加参数:
[code]package cn.kgc1803.smbms_user_consume.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; @Controller @RequestMapping("/order") public class OrderController { @RequestMapping("/orderlist.html") public void getOrderListJson(HttpServletResponse response,Integer ownerUserId){ response.setCharacterEncoding("UTF-8");//字符编码处理 try { //请求输出流 OutputStream out = response.getOutputStream(); //获取远程的dubbo rest数据 //请求地址 URL url = new URL("http://localhost:20888/order/orderlist/"+ownerUserId); //建立连接 URLConnection conn = url.openConnection(); //输入流,获取请求结果集对应的输入流 InputStream in = conn.getInputStream(); //以数组方式读取数据 byte[] buf = new byte[1024]; int len = in.read(buf); while (len != -1){ //读完为止 //循环读取文件内容 out.write(buf,0,len); len = in.read(buf); } } catch (IOException e) { e.printStackTrace(); } } }
这里我把jQuery的版本更换了jquery-3.3.1.js,index.jsp页面做以下修改:
[code]<%-- Created by IntelliJ IDEA. User: Lenovo Date: 2018/12/24 Time: 15:00 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>首页</title> </head> <script type="text/javascript" src="${pageContext.request.contextPath}/statics/js/jquery-3.3.1.js"></script> <%--<script type="text/javascript" src="${pageContext.request.contextPath}/statics/js/order.js"></script>--%> <script type="text/javascript"> function textId() { var ownerUserId=$("#textId").val(); $.post("http://localhost:8081/order/orderlist.html","ownerUserId="+ownerUserId,returnText); } function returnText(orderList) { var order= $.parseJSON(orderList);/*parseJSON函数将后端传回来的字符串转化成对象,以便遍历*/ var ul=$('ul'); $.each(order,function (index,item) { ul.append('<li>'+item.id+" "+item.ownerUserId+" "+item.productName+" "+item.price+" "+item.amount+'</li>'); }); } </script> <body> 登陆成功,欢迎你:${session_user.userName}<br> 请输入需要查的编号:<input type="text" id="textId"> <input type="button" value="提交" onclick="textId()"><br> 订单列表: <ul> </ul> </body> </html>
简述以上执行过程:前端登陆进入首页后,在查询兰输入订单拥有者(参数:ownerUserId):
[code]请输入需要查的编号:<input type="text" id="textId">;
post提交后:
[code]$.post("http://localhost:8081/order/orderlist.html","ownerUserId="+ownerUserId,returnText);
参数传递到后台
[code] public void getOrderListJson(HttpServletResponse response,Integer ownerUserId)
执行此方法
[code] URL url = new URL("http://localhost:20888/order/orderlist/"+ownerUserId);
方法执行结束将数据返回给页面显示,前端通过回调函数将后端传回来的字符串数据转化成json对象,循环输出:
[code] var order= $.parseJSON(orderList);/*parseJSON函数将后端传回来的字符串转化成对象,以便遍历*/
[code]$.each(order,function (index,item) { ul.append('<li>'+item.id+" "+item.ownerUserId+" "+item.productName+" "+item.price+" "+item.amount+'</li>'); });
测试:
登陆页面:
进入首页输入订单号:
提交后查询结果:
这个项目环境搭建到此就算结束了,过程还是有很多没有做到最优的,后续可能还有很多需要补充的。先到此吧,今天还要做个spring boot搭建单体SSM框架环境的基础。
2018-12-27更新:
采用之前的 js 与jsp分离的方式动态获取,是将user对象保存到session作用域,并在订单查询的时候将session保存的user对象的id 取出来传值获取order订单内容,具体注意细节如下:
[code]OrderServiceImpl.java 类增加spring的注解@Service,这个注解的内容跟dubbo_user_provider.xml配置文件发布服务的ref对象一致。
[code]package cn.kgc1803.smbms_user_provider.service; import cn.kgc1803.smbms_common.pojo.Order; import cn.kgc1803.smbms_common.service.OrderService; import cn.kgc1803.smbms_user_provider.dao.OrderMapper; import com.alibaba.dubbo.rpc.protocol.rest.support.ContentType; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import java.util.List; //@Produces设置输出结果集的 数据类型 @Path("/order") @Produces(ContentType.APPLICATION_JSON_UTF_8) @Service("orderService") public class OrderServiceImpl implements OrderService { @Resource private OrderMapper orderMapper; //@Path访问路径 //@GET请求方式 @Path("/orderlist/{id}") @GET public List<Order> findList(@PathParam("id")Integer id) { return orderMapper.getOrderList(id); } }
OrderController.java 类的修改:
[code]package cn.kgc1803.smbms_user_consume.controller; import cn.kgc1803.smbms_common.pojo.User; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; @Controller @RequestMapping("/order") public class OrderController { @RequestMapping("/orderlist.html") public void getOrderListJson(HttpServletResponse response, HttpSession session){ response.setCharacterEncoding("UTF-8");//字符编码处理 User user= (User) session.getAttribute("session_user"); try { //请求输出流 OutputStream out = response.getOutputStream(); //获取远程的dubbo rest数据 //请求地址 URL url = new URL("http://localhost:20888/order/orderlist/"+user.getId()); //建立连接 URLConnection conn = url.openConnection(); //输入流,获取请求结果集对应的输入流 InputStream in = conn.getInputStream(); //以数组方式读取数据 byte[] buf = new byte[1024]; int len = in.read(buf); while (len != -1){ //读完为止 //循环读取文件内容 out.write(buf,0,len); len = in.read(buf); } } catch (IOException e) { e.printStackTrace(); } } }
index.jsp 修改:
[code]<%-- Created by IntelliJ IDEA. User: Lenovo Date: 2018/12/24 Time: 15:00 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>首页</title> </head> <script type="text/javascript" src="${pageContext.request.contextPath}/statics/js/jquery-3.3.1.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/statics/js/order.js"></script> <body> 登陆成功,欢迎你:${session_user.userName}<br> 订单列表: <ul> </ul> </body> </html>
order.js:
[code]$(function () { $.ajax({ url:"http://localhost:8081/order/orderlist.html", dataType:"json", success:function (orderList) { var ul=$('ul'); $.each(orderList,function (index,item) { ul.append('<li>'+item.id+" "+item.ownerUserId+" "+item.productName+" "+item.price+" "+item.amount+'</li>'); }); } }); });
好了,以上的修改经过测试没有问题了,这几天的搭配项目环境对初学来说也不容易了,按照这几天的步骤来做就可以继续写业务代码了。
相关文章推荐
- MAVEN环境搭建和IDEA创建MAVEN项目
- idea+spring boot+dubbox搭建微服务SSM框架环境项目(maven-图文并解)
- MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合 一、搭建开发环境 1.1、使用Maven创建Web项目 执行如下命令: mvn archetype:create
- idea下用spring boot(maven的升级版)搭建SSM微服务环境项目
- Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题
- [置顶] Java Web学习总结(25)——MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
- dubbo-如何搭建maven项目,并实现Dubbo分布式服务管理
- Maven环境搭建和介绍(MyEclipse创建Maven项目)
- 使用idea搭建一个简单的SSM框架:(1)使用idea创建maven项目
- [置顶] Java Web学习总结(25)——MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
- MAC环境下idea:maven+Spring+Dubbo+Zookeeper简单工程搭建
- BLUENESSG 早一日受苦、早一日解决、早一日浴火重生 Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题
- maven环境搭建及创建spring+springmvc+mybatis项目(eclipse)
- Maven环境搭建以及在myeclipse中创建Maven项目
- [置顶] Java Web学习总结(25)——MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
- Maven-maven多模块项目搭建+Dubbo分布式服务框架 budong
- IDEA环境下创建基于Maven的Web项目出现找不到资源文件的问题
- 使用idea14.1.4创建maven多项目工程搭建jfinal框架报错
- 快速使用maven之一:搭建环境创建项目
- IDEA 通过Maven创建Spring MVC项目搭建