2021-03-29

报错时回显注册的用户名

  <div class="form-group has-success has-feedback">													
			<input type="text" class="form-control" id="loginacct" name="loginacct" placeholder="请输入登录账号" 
			//param.loginacct是获取客户端请求中的loginacct元素
			value="${param.loginacct}" autofocus>
			<span class="glyphicon glyphicon-user form-control-feedback"></span>
		  </div> 

//还要再补充一下前后台的绝对路径

注销操作

@RequestMapping("/logout")
public String logout(HttpSession session) {
	log.debug("注销用户...");
	//先判断session域中是否放了数据
	//可能session已经失效了
	if(session!=null) {
		//先删除后销毁
		session.removeAttribute(Const.LOGIN_ADMIN);
		session.invalidate();
	}
	
	//这里不能用转发,因为刷新页面时转发会重复提交请求	
	return "redirect:/index";
}

加密功能

	if(!admin.getUserpswd().equals(MD5Util.digest(userpassword))) {
		throw new LoginException(Const.LOGIN_USERPSWD_ERROR);
	}

//记得加MD5Util在util里

抽取相同页面

<%@ include file="/WEB-INF/jsp/common/css.jsp" %>
<jsp:include page="/WEB-INF/jsp/common/css.jsp"></jsp:include>

看主页面是否经常发生变化,是则选用动态包含

页面的css和javascript用静态

管理员的菜单栏就要用动态引进了

菜单树

1、没用插件存手打

controller层,响应请求
查询表单数据并放入session域中

@RequestMapping("/main")
	public String main(HttpSession session) {
		log.debug("跳转到后台系统的登入页面...");
		查询表单数据并放入session域中
		List<TMenu> menuList= menuService.listMenuAll();
		session.setAttribute("menuList", menuList);
		return "main";
	}

==service层 ==
查询所有的父菜单,并且把子菜单存到父菜单的childen里

@Service
public class TMenuServiceImpl implements TMenuService {
	Logger log= LoggerFactory.getLogger(TMenuServiceImpl.class);
	
	@Autowired
	TMenuMapper menuMapper;

	@Override
	public List<TMenu> listMenuAll() {
		//获取数据库中的菜单
		List<TMenu> allList=menuMapper.selectByExample(null);
		List<TMenu> menuList=new ArrayList<>();
		Map<Integer,TMenu> cache=new HashMap<Integer, TMenu>();
		
		
		//循环选出父菜单
			//为了方便把子添加到父的child<list>中则把父再在map中存一遍
		for (TMenu tMenu : allList) {
			if(tMenu.getPid()==0) {
				menuList.add(tMenu);
				cache.put(tMenu.getId(), tMenu);
			}
		}
		
		
		//循环选出子菜单
		for (TMenu tMenu : allList) {
			if(tMenu.getPid()!=0) {
				Integer pId=tMenu.getPid();
				TMenu parent=cache.get(pId);
				parent.getChilden().add(tMenu);
			}
		}
		
		//返回父菜单
		return menuList;
	}


}

前端
解析menuList菜单

			<!-- 			
				手写循环树菜单
				背景:menuList里存的是一级父菜单,每个父菜单里有哥child<List>子菜单里面存着二级菜单(如果没有二级菜单着为null)
				从session中获取menuList
				循环遍历所有菜单
					if 有没有子菜单
						
					else 有子菜单
						循环遍历子菜单
				
				
				
				
			 -->
	<c:forEach items="${menuList}" var="parent">
			<div class="tree">
				<ul style="padding-left:0px;" class="list-group">
				
				<c:if test="${empty parent.childen }">
					<li class="list-group-item tree-closed" >
						<a href="${PATH}/${parent.url}"><i class="${parent.icon}"></i> ${parent.name}</a> 
					</li>
				</c:if>
				<c:if test="${not empty parent.childen }">
					<li class="list-group-item tree-closed">
						<span><i class="${parent.icon}"></i> ${parent.name}管理 <span class="badge" style="float:right">${parent.childen.size()}</span></span> 
						<ul style="margin-top:10px;display:none;">
						<c:forEach items="${menuList.childen}" var="childen">
							<li style="height:30px;">
								<a href="${PATH}/${childen.url}"><i class="${childen.icon}"></i> ${childen.name}</a> 
							</li>
						</c:forEach>
							
						</ul>
					</li>
				</c:if>
					<li class="list-group-item tree-closed" >
						<a href="param.html"><i class="glyphicon glyphicon-list-alt"></i> 参数管理</a> 
					</li>
				</ul>
			</div>
			
	
	</c:forEach>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值