20180228.利用JsonArray实现功能:好友圈、我的微博。
2018-03-16 18:18
330 查看
需求是得到数据库的文章信息和关注者信息,需要分开保存为数组并取得。所以首先要写dao的方法,省略大部分,只写要点:
Connection conn=getConnection();
String sql="";
PreparedStatement pstmt;
ArrayList<essay> essayList=new ArrayList<essay>();
sql="SELECT *FROM essay WHERE user_name IN (SELECT follow_name FROM follow WHERE user_name = ?)";
try{
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, name);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
int id=rs.getInt("id");
String user_name = rs.getString("user_name");
String context = rs.getString("context");
Timestamp time=rs.getTimestamp("time");
essayList.add(new essay(id,user_name,context,time));
}
return essayList;
}catch(SQLException e){
e.printStackTrace();
return null;
}finally{
closeConnection(conn);
}
。只需要知道如何用Mysql简单的嵌套查询就可以。
后端servlet的代码实现传入一个用户名,得到他关注的人,并用之前写好的方法,找到这些人写的文章:
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
resp.setContentType("text/html;charset=utf-8");
// 1. 取到前端提交的数据
String name = req.getParameter("name");
ArrayList<essay> List = new UserDAO().findByFriend(name);
// 创建一个json的对象,把结果保存到result键中
JsonArray jsonArray=new JsonArray();
JsonArray jsonArray1=new JsonArray();
JsonObject jsonOb=new JsonObject();
HttpSession session = req.getSession(); // 取到会话对象,准备保存用户名在会话中
// 在会话对象中,保存当前登录的用户名
resp.setContentType("application/json");
PrintWriter out = resp.getWriter();
for(int i=0;i<List.size();i++){
jsonArray.add(List.get(i).getContext());
jsonArray1.add(List.get(i).getUser_name());
}
jsonOb.add("result", jsonArray);
jsonOb.add("result1", jsonArray1);
out.println(jsonOb.toString());
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req,resp);
}
前端需要分别取得关注用户名和关注用户的文章,逻辑简单,后端给的数据就是两个JsonArray,分别取得,添加到组件的data就行了。挂载之前必须执行,所以要在钩子函数里面进行。
mounted: function () {
if(sessionStorage.getItem("login_user")!=null){
this.items.pop();
this.$http.post('/api/UserManager/ReadFriendEssay?name='+sessionStorage.getItem('login_user'))
.then((response)=>{
for(var i in response.data.result){
this.items.push({
username:response.data.result1[response.data.result1.length-i-1],
essay:response.data.result[response.data.result.length-i-1],
})
}
}).catch(function(err){
console.log(err);
});
}else{
}
},
Connection conn=getConnection();
String sql="";
PreparedStatement pstmt;
ArrayList<essay> essayList=new ArrayList<essay>();
sql="SELECT *FROM essay WHERE user_name IN (SELECT follow_name FROM follow WHERE user_name = ?)";
try{
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, name);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
int id=rs.getInt("id");
String user_name = rs.getString("user_name");
String context = rs.getString("context");
Timestamp time=rs.getTimestamp("time");
essayList.add(new essay(id,user_name,context,time));
}
return essayList;
}catch(SQLException e){
e.printStackTrace();
return null;
}finally{
closeConnection(conn);
}
。只需要知道如何用Mysql简单的嵌套查询就可以。
后端servlet的代码实现传入一个用户名,得到他关注的人,并用之前写好的方法,找到这些人写的文章:
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
resp.setContentType("text/html;charset=utf-8");
// 1. 取到前端提交的数据
String name = req.getParameter("name");
ArrayList<essay> List = new UserDAO().findByFriend(name);
// 创建一个json的对象,把结果保存到result键中
JsonArray jsonArray=new JsonArray();
JsonArray jsonArray1=new JsonArray();
JsonObject jsonOb=new JsonObject();
HttpSession session = req.getSession(); // 取到会话对象,准备保存用户名在会话中
// 在会话对象中,保存当前登录的用户名
resp.setContentType("application/json");
PrintWriter out = resp.getWriter();
for(int i=0;i<List.size();i++){
jsonArray.add(List.get(i).getContext());
jsonArray1.add(List.get(i).getUser_name());
}
jsonOb.add("result", jsonArray);
jsonOb.add("result1", jsonArray1);
out.println(jsonOb.toString());
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req,resp);
}
前端需要分别取得关注用户名和关注用户的文章,逻辑简单,后端给的数据就是两个JsonArray,分别取得,添加到组件的data就行了。挂载之前必须执行,所以要在钩子函数里面进行。
mounted: function () {
if(sessionStorage.getItem("login_user")!=null){
this.items.pop();
this.$http.post('/api/UserManager/ReadFriendEssay?name='+sessionStorage.getItem('login_user'))
.then((response)=>{
for(var i in response.data.result){
this.items.push({
username:response.data.result1[response.data.result1.length-i-1],
essay:response.data.result[response.data.result.length-i-1],
})
}
}).catch(function(err){
console.log(err);
});
}else{
}
},
相关文章推荐
- (更新版)ExtJS Tree利用json(直接传List TreeNode,不需要转化为JSONArray)在Struts 2实现Ajax动态加载树结点
- jQuery实现微博发布框@好友出现列表功能
- 【Struts2】利用JQuery与struts2-json-plugin实现Struts2的Ajax功能并利用JSON传递数据
- SNS,微博 好友关注和推送功能的数据库设计是怎么实现的底层设计?
- jQuery实现微博发布框@好友出现列表功能
- Android关于微博发表微博时@好友后删除@的好友的功能实现
- ExtJS Tree利用json(直接传List TreeNode,不需要转化为JSONArray或通过JSP传)在Struts 2实现Ajax动态加载树结点
- asp.net 站内搜索功能的实现及利用datatable绑定数据并进行分页
- [MDT] 利用 MDT 2010 的 Media 功能实现单机的轻量级接触部署 Windows Server 2003
- 利用solr实现商品的搜索功能
- 利用java的反射原理实现数据注入功能
- 利用JQuery jqprint实现打印功能
- 利用silverlight中Path类实现跟随鼠标画线功能
- android定时定位 - 利用百度定位API来实现定时定位功能
- 利用SQLServer2005复制功能实现与Oracle数据库同步
- jQuery使用cookie与json简单实现购物车功能
- Array对象的方法实现(1)----Array.prototype.push和Array.prototype.concat(实现常规参数的功能)
- 文章标题C#实现json与dt、array的转换
- 利用百度地图的路书功能实现汽车实时定位
- 利用Everything的DLL实现文件的搜索功能