您的位置:首页 > 其它

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+"&nbsp;"+item.ownerUserId+"&nbsp;"+item.productName+"&nbsp;"+item.price+"&nbsp;"+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+"&nbsp;"+item.ownerUserId+"&nbsp;"+item.productName+"&nbsp;"+item.price+"&nbsp;"+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+"&nbsp;"+item.ownerUserId+"&nbsp;"+item.productName+"&nbsp;"+item.price+"&nbsp;"+item.amount+'</li>');
});
}
});
});

       好了,以上的修改经过测试没有问题了,这几天的搭配项目环境对初学来说也不容易了,按照这几天的步骤来做就可以继续写业务代码了。

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐