Diary(三)——日志列表显示以及分页查询的实现(上)

上一节我们实现了后台主页面,现在来看看后台的日志列表显示这一块如何实现; 

目录

 

1.model层,写Diary类;

2. dao层,写DiaryDao类;

3. 工具类;

4.web层,写MainServlet类;

5.页面,写diaryList.jsp;


1.model层,写Diary类;

 看一下数据库中t_diary这个表的字段属性等;

package com.java.model;

import java.util.Date;

public class Diary {

	private int diaryId;
	private String title;
	private String content;
	//给一个默认值为-1
	private int typeId=-1;
	private Date releaseDate;
	
	
	public int getDiaryId() {
		return diaryId;
	}
	public void setDiaryId(int diaryId) {
		this.diaryId = diaryId;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public int getTypeId() {
		return typeId;
	}
	public void setTypeId(int typeId) {
		this.typeId = typeId;
	}
	public Date getReleaseDate() {
		return releaseDate;
	}
	public void setReleaseDate(Date releaseDate) {
		this.releaseDate = releaseDate;
	}
	
	
}

 

2. dao层,写DiaryDao类;

这里主要是一个显示日志的方法;

package com.java.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.java.model.Diary;
import com.java.util.DateUtil;

public class DiaryDao {

	//显示日志列表的方法
	public List<Diary> diaryList(Connection con)throws Exception{
		List<Diary> diaryList=new ArrayList<Diary>();
		StringBuffer sb=new StringBuffer("select * from t_diary t1,t_diarytype t2 where t1.typeId=t2.diaryTypeId ");
		//由于后面有可能需要以其它方式查询出来,所以用拼接的方式,这里是日期降序
		sb.append(" order by t1.releaseDate desc");
		PreparedStatement pstmt=con.prepareStatement(sb.toString());
		ResultSet rs=pstmt.executeQuery();
		while(rs.next()){
			Diary diary=new Diary();
			diary.setDiaryId(rs.getInt("diaryId"));
			diary.setTitle(rs.getString("title"));
			diary.setContent(rs.getString("content"));
			//对于日期获取,我们要将日期转换成标准形式
			diary.setReleaseDate(DateUtil.formatString(rs.getString("releaseDate"), "yyyy-MM-dd"));
			diaryList.add(diary);
		}
		return diaryList;
	}
}

 

3. 工具类;

这里要引入两个工具类,一个是日起对象与字符串对象的相互转换,另外一个是判断字符串是否为空;

DateUtil.java:

package com.java.util;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {

	//将日期对象转换成字符串形式
	public static String formatDate(Date date,String format){
		String result="";
		SimpleDateFormat sdf=new SimpleDateFormat(format);
		if(date!=null){
			result=sdf.format(date);
		}
		return result;
	}
	
	
	//将字符串形式转换成日期对象
	public static Date formatString(String str,String format) throws Exception{
		if(StringUtil.isEmpty(str)){
			return null;
		}
		SimpleDateFormat sdf=new SimpleDateFormat(format);
		return sdf.parse(str);
	}
	
}

StringUtil.java:

package com.java.util;

public class StringUtil {

	//判断字符串是否为空
	public static boolean isEmpty(String str){
		if("".equals(str)|| str==null){
			return true;
		}else{
			return false;
		}
	}
	
	//判断字符串是否不为空
	public static boolean isNotEmpty(String str){
		if(!"".equals(str)&&str!=null){
			return true;
		}else{
			return false;
		}
	}
	
	
}

 

4.web层,写MainServlet类;

package com.java.web;

import java.io.IOException;
import java.sql.Connection;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.java.dao.DiaryDao;
import com.java.model.Diary;
import com.java.util.DbUtil;

public class MainServlet extends HttpServlet{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private DbUtil dbUtil=new DbUtil();
	private DiaryDao diaryDao=new DiaryDao();

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.doPost(request, response);
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置字符集编码
		request.setCharacterEncoding("utf-8");
		Connection con=null;
		try {
			con=dbUtil.getCon();
			List<Diary> diaryList=diaryDao.diaryList(con);
			//将所有日志信息全部存放起来
			request.setAttribute("diaryList", diaryList);
			//将得到的mainPage和diaryList连接起来
			request.setAttribute("mainPage", "diary/diaryList.jsp");
			//内部转发
			request.getRequestDispatcher("mainTemp.jsp").forward(request, response);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally{
			try {
				dbUtil.closeCon(con);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	
}

其中,核心代码只有几行:

 

5.页面,写diaryList.jsp;

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 使用JSTL标签需要引入的头文件 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- 使用fmt 对时间进行格式化的时候需要引入的头文件 -->
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<div class="data_list">
		<div class="data_list_title">
			<img src="${pageContext.request.contextPath}/images/list_icon.png"/>日记列表
		</div>
		<div class="diary_datas">
			<ul>
				<c:forEach var="diary" items="${diaryList }">
					<li>『<fmt:formatDate value="${diary.releaseDate }" type="date" pattern="yyyy-MM-dd"/>』<span>&nbsp;<a href="#">${diary.title }</a></span></li>
				</c:forEach>
			</ul>
		</div>
</div>
</body>
</html>

 

效果如图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值