目录
2.2 web层,MainServlet写后台处理前台的数据;
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");
}
这样问题就解决了!