主要逻辑:

页面头部登陆前后不同状态
登陆前后主要区别体现在首页的头部:
登录前,右上角最后一个为新用户注册,下面并无登陆者信息:

登陆后,右上角最后一个为退出登录,下面同时显示登陆者信息:

jsp中实现原理:
<%
User user = (User) request.getSession().getAttribute("user");
if(null == user){
%>
| <a href="${pageContext.request.contextPath}/client/register.jsp">新用户注册</a>
<%
}else{
%>
| <a href="${pageContext.request.contextPath}/logout" onclick="javascript:return confirm_logout()">用户退出</a>
<br><br><br>欢迎您: ${
user.username}
<%
}
%>
可见骚气的if语句分开显示不同情况下的页面内容,登陆前显示新用户注册登陆后变为退出登录,onclick属性指向一个自定义函数,弹出一个确认退出的提示,在接受到确定之后才调用LogoutServlet后直接销毁Session。值得注意在Session获取User之前,要导包,不然js中不能识别该类。
<%@ page import="cn.itcast.itcaststore.entity.User"%>
除此之外,视有无登录情况,头部我的账户会有变化,没有登录就会跳转登录界面,已经登陆就会重定向到账户信息页面,除此之外,根据角色的不同,登陆后我的账户也会有不同的目标页面,普通用户跳转至home.jsp,超级用户跳转至myAccount.jsp后台管理页面,这一套逻辑由web.xml映射的MyAccountServlet完成。
<a href="${pageContext.request.contextPath}/myAccount">我的帐户</a>
MyAccountServlet:
//在session中查找名为“user”的会话
User user = (User) request.getSession().getAttribute("user");
//如果找到没有名为“user”的会话,说明用户没有登录,此时跳转到登录页面
if (user == null) {
response.sendRedirect(request.getContextPath() + "/client/login.jsp");
return;
}
//如果是超级用户,进入到网上书城后台管理系统;否则进入到普通用户的账户信息页面
if ("超级用户".equals(user.getRole())) {
response.sendRedirect(request.getContextPath() + "/admin/login/home.jsp");
// return;
}else{
response.sendRedirect(request.getContextPath() + "/client/myAccount.jsp");
// return;
}
分类显示图书
menu_search.jsp文件中分类栏:<

本文详细介绍了Java EE应用中首页的逻辑实现,包括登录状态对头部信息的影响,如登录前后显示的区别;图书分类的展示逻辑,依赖于特定的查询参数;搜索图书功能,处理搜索框的输入,通过后台服务进行查询;轮播图的实现,涉及CSS和JS;公告的展示,从数据库获取最新公告内容;以及本周热卖推荐的逻辑,可能存在的问题及数据库查询方法。
最低0.47元/天 解锁文章
1293





