Diary(五)——日志主页功能完善(上)

目录

 

1. 个人信息显示;

1.1 先在数据库中添加个人信息;

1.2 写一下后台UserDao的数据;

1.3 写一下前台展现数据;

2. 根据日志类别和日志日期查询日志;

2.1 dao层,DiaryDao类写查询方法;

2.2 web层,MainServlet写后台处理前台的数据;

2.3 mainTemp.jsp,写前台页面展示;

2.4 解决日志类别和日志日期不能同时点击的问题;


1. 个人信息显示;

1.1 先在数据库中添加个人信息;

1.2 写一下后台UserDao的数据;

这里我们在WebContent目录下新建一个文件夹,并附上一张个人信息的照片;

另外在diary.properties文件里面新添一些信息;

ImageFile=userImages/

这时我们在UserDao里面来获取一下数据;

1.3 写一下前台展现数据;

<div class="data_list">
				<div class="data_list_title">
					<img src="${pageContext.request.contextPath}/images/user_icon.png"/>
					个人中心
				</div>
				<!-- 显示个人的其他数据 -->
				<div class="user_image">
					<img src="${currentUser.imageName }"/>
				</div>
				<div class="nickName">${currentUser.nickName }</div>
				<div class="userSign">(${currentUser.mood })</div>
			</div>

样式文件:

.data_list .user_image{
	text-align: center;
}

.data_list .user_image img{
	padding-top:10px;
	width: 200px;
	height: 250px;
}

.data_list .nickName , .data_list .userSign{
	text-align: center;
}

来看一下效果:

 

2. 根据日志类别和日志日期查询日志;

2.1 dao层,DiaryDao类写查询方法;

注意这里的typeId默认值是-1,只有当其不等于-1时,也就是前台点击日志类别这一个链接时,所传的typeId值肯定不等于-1,所以才可以继续查询;releaseDateStr也是;

//日志类别查询和日志日期查询
		if(s_diary.getTypeId()!=-1){
			sb.append(" and t1.typeId="+s_diary.getTypeId()+"");
		}
		if(StringUtil.isNotEmpty(s_diary.getReleaseDateStr())){
			sb.append(" and DATE_FORMAT(t1.releaseDate,'%Y年%m月')='"+s_diary.getReleaseDateStr()+"'");
		}

2.2 web层,MainServlet写后台处理前台的数据;

这里主要是来处理前台获取的typeId和releaseDateStr;用session保存一下数据; 

//从前台获取日志类别的Id和日志日期的Id,diary是专门用来封装查询条件的
		Diary diary=new Diary();
		String s_typeId=request.getParameter("s_typeId");
		String s_releaseDateStr=request.getParameter("s_releaseDateStr");
		if(StringUtil.isNotEmpty(s_typeId)){
			diary.setTypeId(Integer.parseInt(s_typeId));
			//将数据存放在session中
			session.setAttribute("s_typeId", s_typeId);
		}
		if(StringUtil.isNotEmpty(s_releaseDateStr)){
			diary.setReleaseDateStr(s_releaseDateStr);
			//将数据存放在session中
			session.setAttribute("s_releaseDateStr", s_releaseDateStr);
		}
		if(StringUtil.isEmpty(s_typeId)){
			Object o=session.getAttribute("s_typeId");
			if(o!=null){
				diary.setTypeId(Integer.parseInt((String)o));
			}
		}
		if(StringUtil.isEmpty(s_releaseDateStr)){
			Object o=session.getAttribute("s_releaseDateStr");
			if(o!=null){
				diary.setReleaseDateStr(s_releaseDateStr);
			}
		}

2.3 mainTemp.jsp,写前台页面展示;

这里主要是取一下MainServlet所保存的后台数据,以及前台页面的展示; 主要是写一下href链接;

<div class="data_list">
				<div class="data_list_title">
					<img src="${pageContext.request.contextPath}/images/byType_icon.png"/>
					按日志类别
				</div>
				<!-- 日志类别列表数据 -->
				<div class="datas">
					<ul>
						<c:forEach var="diaryTypeCount" items="${diaryTypeCountList }">
							<li><span><a href="main?s_typeId=${diaryTypeCount.diaryTypeId }">${diaryTypeCount.typeName }(${diaryTypeCount.diaryCount })</a></span></li>
						</c:forEach>
					</ul>
				</div>
			</div>
			
			<div class="data_list">
				<div class="data_list_title">
					<img src="${pageContext.request.contextPath}/images/byDate_icon.png"/>
					按日志日期
				</div>
				<!-- 日志日期列表数据 -->
				<div class="datas">
					<ul>
						<c:forEach var="diaryRiQiCount" items="${diaryCountList }">
							<li><span><a href="main?s_releaseDateStr=${diaryRiQiCount.releaseDateStr }">${diaryRiQiCount.releaseDateStr }(${diaryRiQiCount.diaryCount })</a></span></li>
						</c:forEach>
					</ul>
				</div>
			</div>

运行结果:

2.4 解决日志类别和日志日期不能同时点击的问题;

我们单机日志类别的链接,日志列表显示是 没有问题的;

但是我们再次点击日志日期的链接时,此时的日志列表则会显示空的信息;

原因是: 

我们点击日志类别的时候,此时session记录的是日志类别的信息;

当我们再次点击日志日期的时候,此时的session又变成了记录日志日期的信息,这相当于两个查询条件了,所以会出问题;

解决办法:

当我们点击日志类别之后,我们将session移除掉;

当点击日志日期之后,我们也将session移除掉,这样就不会出问题了;

if(StringUtil.isNotEmpty(s_typeId)){
			diary.setTypeId(Integer.parseInt(s_typeId));
			//将数据存放在session中
			session.setAttribute("s_typeId", s_typeId);
			//将日志日期的session移除掉,否则会产生排斥
			session.removeAttribute("s_releaseDateStr");
		}
		if(StringUtil.isNotEmpty(s_releaseDateStr)){
			s_releaseDateStr=new String(s_releaseDateStr.getBytes("ISO-8859-1"),"UTF-8");
			diary.setReleaseDateStr(s_releaseDateStr);
			//将数据存放在session中
			session.setAttribute("s_releaseDateStr", s_releaseDateStr);
			//将日志类别的session移除掉
			session.removeAttribute("s_typeId");
		}

这样问题就解决了! 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值