java_web项目3(文章板块内容显示)
文章板块内容的显示 包括图片 点赞数量(如果是该用户点赞了这篇文章样式还不一样)评论数量 还有分页展示(一页展示五篇)
分页查询是依靠数据库做到的 如下
pageNumber是值当前的页码
pageSize指的是每一个所要展示的数量
String sql = "select * from (select t1.* , rownum num from ("
+ "select * from campus_inform order by cDate) "
+ "t1 where rownum <="+pageNumber*pageSize+")"
+ "where num>"+(pageNumber-1)*pageSize;
根据业务需求 我创建文章类放在model下 来存放从数据库类面返回的数据
private String userId; //用户id
private String cId; //文章id
private String cName; //文章名字
private String cText; //文章内容
private Date cDate; //发布日期
private int cReply; //回复数量
private int cPrise; //点赞数量
private int cTransmit;//转发数量
private int cStatus; //点赞状态 0--该用户没有给该id点赞 1--该用户给该id点赞了
首先是servle里面得到值
//查找文章
public void search(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
int pagenumber = 1;//设置初始页码为1
String userId = "0";
User user = (User) session.getAttribute("user");
if(user!=null){
userId = user.getUserId();
}
if(request.getParameter("pagenumber")!=null){
pagenumber =Integer.parseInt(request.getParameter("pagenumber"));
}
CInfoServiceImp csi = new CInfoServiceImp();
List cInfoList =csi.search(pagenumber,userId);//得到文章
List pictureList = csi.getPicturePath();//得到所有的图片地址
int maxPage = csi.getMaxPage(); //得到最大页码数
request.setAttribute("pictureList", pictureList);
request.setAttribute("pagenumber", pagenumber);
request.setAttribute("maxPage", maxPage);
request.setAttribute("list", cInfoList);
request.getRequestDispatcher("campusInform.jsp").forward(request, response);
}
调用service进行业务处理
CInfoDaoImp cid = new CInfoDaoImp();
List<CInfo> cInfoList=cid.search(pageNumber,pageSize); //得到所有的文章的内容
List<Prise> priseList = cid.searchPrise(); //得到所有的点赞信息
//判断当前用户是否给该篇文章点过赞 如果点过赞 就把点赞状态设置为1 否则设置为0
List<String> priseArticleId = new ArrayList<String>();
for(int i=0;i<priseList.size();i++){
if(priseList.get(i).getUserId().equals(userId)){
priseArticleId.add(priseList.get(i).getArticleId());
}
}
for(int i=0;i<priseArticleId.size();i++){
for(int j=0;j<cInfoList.size();j++){
if(priseArticleId.get(i).equals(cInfoList.get(j).getcId())){
cInfoList.get(j).setcStatus(1);
}else{
if(cInfoList.get(j).getcStatus()!=1){
cInfoList.get(j).setcStatus(0);
}
}
}
}
return cInfoList;
最后数据查询
public List search(int pageNumber ,int pageSize) {
List<CInfo> cInfoList = new ArrayList();
try {
//JDBC数据库连接 1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.创建链接
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "ADMIN");
//3.获取一个Preparestatement
String sql = "select * from (select t1.* , rownum num from ("
+ "select * from campus_inform order by cDate) "
+ "t1 where rownum <="+pageNumber*pageSize+")"
+ "where num>"+(pageNumber-1)*pageSize;
PreparedStatement psmt = conn.prepareStatement(sql);
ResultSet rs = psmt.executeQuery();
while(rs.next()){
CInfo cInfo = new CInfo();
String userId=rs.getString(1);
String cId=rs.getString(2);
String cName=rs.getString(3);
String cText=rs.getString(4);
Date cDate = rs.getDate(5);
int cReply=rs.getInt(6);
int cPrise=rs.getInt(7);
int cTransmit=rs.getInt(8);
cInfo.setUserId(userId);
cInfo.setcId(cId);
cInfo.setcName(cName);
cInfo.setcText(cText);
cInfo.setcDate(cDate);
cInfo.setcReply(cReply);
cInfo.setcPrise(cPrise);
cInfo.setcTransmit(cTransmit);
cInfoList.add(cInfo);
}
if(conn!=null){
conn.close();
}
if(psmt!=null){
psmt.close();
}
return cInfoList;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
然后把结果返回servlet进行跳转到展示页面
前端拿到代码后用el表达式得到值进行展示
这里面还有好多细节不变一一细说 代码实现的过程中碰到的一些难题jquery的控制等等
如果你有兴趣的话,欢迎私信我