Java Web 网络商城案例演示七(自动登录,记住用户名,抽取公共页面)

Java Web 网络商城案例演示七(自动登录,记住用户名,抽取公共页面)

自动登录

1、在login.jsp上的自动登录的位置上命名

<label> <input type="checkbox" name="autoLogin">自动登录

在这里插入图片描述
2、在servlet里面获取到login.jsp关于自动登录的按钮的值

String autoLogin = request.getParameter("autoLogin");

在这里插入图片描述
3、用户登录成功将对应Cookie的数据发送到客户端

if (autoLogin != null) {
                Cookie cookie = new Cookie("autoLoginCookie", user02.getUsername()+"@"+user02.getPassword());
                cookie.setPath("/");
                cookie.setMaxAge(60*60);
                response.addCookie(cookie);
            }

4、在EncodingFilter验证 session 中是否存在此用户
5、验证是否包含自动登陆的cookie

// 检测自动登录
		// 验证session当中是否存在此用户
		User loginUser = (User) request.getSession().getAttribute("loginUser");
		if (loginUser != null) {
			chain.doFilter(request, response);
			return;
		}
		// 验证是否包含自动登陆的cookie
		Cookie[] allCookie = request.getCookies();
		Cookie userCookie = null;
		if (allCookie != null) {
			for (Cookie c : allCookie) {
				if ("autoLoginCookie".equals(c.getName())) {
					userCookie = c;
					break;
				}
			}
		}
		if (userCookie == null) {
			chain.doFilter(request, response);
			return;
		}
		// 验证cookie中信息是否正确
		String[] u = userCookie.getValue().split("@");
		String username = u[0];
		String password = u[1];
		User user = new User();
		user.setUsername(username);
		user.setPassword(password);
		UserService service = new UserServiceImpl();
		try {
			loginUser = service.userLogin(user);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		if (loginUser == null) {
			chain.doFilter(request, response);
			return;
		}

在这里插入图片描述

记住密码

<% String flag = (String)session.getAttribute("flag")==null?"":(String)session.getAttribute("flag");

String name = "";
String password = "";
try{ 
    Cookie[] cookies=request.getCookies(); 
    if(cookies!=null){ 
	for(int i=0;i<cookies.length;i++){ 
	    if(cookies[i].getName().equals("cookie_user")){ 
		String value = 	cookies[i].getValue();
		if(value!=null&&!"".equals(value)){
		    name=cookies[i].getValue().split("-")[0]; 
		    if(cookies[i].getValue().split("-")[1]!=null && !cookies[i].getValue().split("-")[1].equals("null")){
password=cookies[i].getValue().split("-")[1]; 
		     }
					 
	        }
            } 
		request.setAttribute("name",name); 
		request.setAttribute("passward",password); 
	} 
    } 
}catch(Exception e){ 
	e.printStackTrace(); 
} 
%> 
<body>
<div id="logo"><img src="<%=request.getContextPath() %>/frontsite/Images/Logo.jpg" width="244" height="44" alt="" /></div>
<div id="loginfrm">
<form action="<%=request.getContextPath() %>/frontsite/login.do?method=login" method="post" id="forms" onsubmit="checkForm();return false;">
	<div class="frm">
		<ul>
			<li class="l1">用户名:</li>
			<li class="l2"><input name="login_id" type="text" id="login_id" class="input" value="<%=name %>"/></li>
			<li class="l3">* 最大限度为20字节</li>
			<li class="l1">密码:</li>
			<li class="l2"><input name="login_pwd" type="password" id="login_pwd" class="input" value="<%=password %>"/></li>
			<li class="l3">* 最大限度为20字节</li>			
			 <li class="l1">验证码:
		        <li class="l2" style="width: 180px;"><input name="checkImg" id="checkImg" type="text" class="input" style="width: 60px;" size="10" />
	            &nbsp;&nbsp;<img src="<%=request.getContextPath() %>/CheckImg_FT" width="49" height="22" /></li>
			<li class="l4">
				<label><input type="checkbox" name="flag" id="flag" value="1" <%if(flag!=null && flag.equals("1")){%> checked ; value ="1"; <%}else {%> value="0" <%;}%> />记住密码</label>
				<label><span style="margin-left:10px; color: #F00;" ><html:errors /></span></label>				
			</li>
			<li class="l4"><input type="image" name="imageField" id="imageField" src="<%=request.getContextPath() %>/frontsite/Images/login_bnt.jpg" /></li>
		</ul>
	</div>
</form>
</div>
</body>
String flag = request.getParameter("flag");
//set cookie
if(flag!=null && flag.equals("1")){
    Cookie cookie = new Cookie("cookie_user", po.getLogin_id()+"-"+form.getLogin_pwd());				
    cookie.setMaxAge(60*60*24*30); //cookie 保存30天
response.addCookie(cookie);
}else{	
    Cookie cookie = new Cookie("cookie_user",po.getLogin_id()+"-"+null);				
    cookie.setMaxAge(60*60*24*30); //cookie 保存30天
    response.addCookie(cookie);				
}

抽取公共页面

新建一个header.jsp的页面将index.jsp的导航栏抽取出来
注意在header.jsp里面要<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

			<!--
            	描述:菜单栏
            -->
			<div class="container-fluid">
				<div class="col-md-4">
					<img src="${pageContext.request.contextPath}/img/logo2.png" />
				</div>
				<div class="col-md-5">
					<img src="${pageContext.request.contextPath}/img/header.png" />
				</div>
				<div class="col-md-3" style="padding-top:20px">
					<ol class="list-inline">					
					<c:if test="${empty loginUser}">
						<li><a href="${pageContext.request.contextPath}/UserServlet?method=loginUI">登录</a></li>
						<li><a href="${pageContext.request.contextPath}/UserServlet?method=registUI">注册</a></li>
					</c:if>
					<c:if test="${not empty loginUser}">
						<li>欢迎${loginUser.username}</li>
						<li><a href="${pageContext.request.contextPath}/UserServlet?method=logOut">退出</a></li>
						<li><a href="${pageContext.request.contextPath}/jsp/cart.jsp">购物车</a></li>
						<li><a href="${pageContext.request.contextPath}/jsp/order_list.jsp">我的订单</a></li>
					</c:if>
					</ol>
				</div>
			</div>
			<!--
            	描述:导航条
            -->
			<div class="container-fluid">
				<nav class="navbar navbar-inverse">
					<div class="container-fluid">
						<!-- Brand and toggle get grouped for better mobile display -->
						<div class="navbar-header">
							<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
								<span class="sr-only">Toggle navigation</span>
								<span class="icon-bar"></span>
								<span class="icon-bar"></span>
								<span class="icon-bar"></span>
							</button>
							<a class="navbar-brand" href="#">首页</a>
						</div>
						<!-- Collect the nav links, forms, and other content for toggling -->
						<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
							<ul class="nav navbar-nav">
								<li class="active"><a href="${pageContext.request.contextPath}/jsp/product_list.jsp">手机数码<span class="sr-only">(current)</span></a></li>
								<li><a href="#">电脑办公</a></li>
								<li><a href="#">电脑办公</a></li>
								<li><a href="#">电脑办公</a></li>
							</ul>
							<form class="navbar-form navbar-right" role="search">
								<div class="form-group">
									<input type="text" class="form-control" placeholder="Search">
								</div>
								<button type="submit" class="btn btn-default">Submit</button>
							</form>
						</div>
						<!-- /.navbar-collapse -->
					</div>
					<!-- /.container-fluid -->
				</nav>
			</div>

新建一个footer.jsp将index的页脚抽取出来

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>关于我们</title>
<link rel="stylesheet"
	href="${pageContext.request.contextPath}/css/bootstrap.min.css"
	type="text/css" />
<script src="${pageContext.request.contextPath}/js/jquery-1.11.3.min.js"
	type="text/javascript"></script>
<script src="${pageContext.request.contextPath}/js/bootstrap.min.js"
	type="text/javascript"></script>
<!-- 引入自定义css文件 style.css -->
<link rel="stylesheet"
	href="${pageContext.request.contextPath}/css/style.css" type="text/css" />
</head>
<body>
           <div class="container-fluid">
				<div style="margin-top:50px;">
					<img src="${pageContext.request.contextPath}/img/footer.jpg" width="100%" height="78" alt="我们的优势" title="我们的优势" />
				</div>
				<div style="text-align: center;margin-top: 5px;">
					<ul class="list-inline">
						<li><a href="${pageContext.request.contextPath}/jsp/info.jsp">关于我们</a></li>
						<li><a>联系我们</a></li>
						<li><a>招贤纳士</a></li>
						<li><a>法律声明</a></li>
						<li><a>友情链接</a></li>
						<li><a>支付方式</a></li>
						<li><a>配送方式</a></li>
						<li><a>服务声明</a></li>
						<li><a>广告声明</a></li>
					</ul>
				</div>
			</div>
</body>

</html>

在其他拥有导航栏和也脚的页面分别导入这两个页面,并删除旧的的

<%@ include file="/jsp/header.jsp" %>

在这里插入图片描述

 <%@ include file="/jsp/footer.jsp" %>

在这里插入图片描述

原创文章 76 获赞 151 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44757034/article/details/104945282