实现记住用户名功能

login.jsp部分:

<div class="box box-info">
						<div class="box-header with-border">
							<h3 class="box-title">登录</h3>
						</div>
						<form class="form-horizontal" action="login" method="post">
							<div class="box-body">
								<%
									//利用cookie实现记住用户名操作
								Cookie[] cs = request.getCookies();
								Cookie findC = null;
								if (cs != null) {
									for (Cookie c : cs) {
										//如果名为 "remname" 的 cookie的值与cs中有相同的
										if ("remname".equals(c.getName())) {
									findC = c;
										}
									}
								}
								String username = "";
								if (findC != null) {
									username = URLDecoder.decode(findC.getValue(), "UTF-8");
								}

								//实现表单回填

								String value = request.getParameter("username");
								if (value != null) {
									username = value;
								}
								%>
								<div
									class='${empty message ? "form-group" : "form-group has-error" }'>
									<label for="username" class="col-sm-2 control-label">用户名:</label>
									<div class="col-sm-10">
										<input type="text" class="form-control" id="username"
											placeholder="请输入用户名" name="username" value="<%=username%>">
									</div>
									<span class="help-block">${message }</span>
								</div>
								<div class="form-group">
									<label for="password" class="col-sm-2 control-label">密码:</label>
									<div class="col-sm-10">
										<input type="password" class="form-control" id="password"
											placeholder="请输入密码" name="password">
									</div>
								</div>
								<div class="form-group">
									<div class="col-sm-offset-2 col-sm-10">
										<div class="checkbox">
											<label> <input type="checkbox" name="remname"
												value="true" <%=findC == null ? "" : "checked='checked'"%>>记住用户名
											</label>
										</div>
									</div>
								</div>
							</div>
							<div class="box-footer">
								<button type="reset" class="btn btn-default">取消</button>
								<button type="submit" class="btn btn-info pull-right">登录</button>
							</div>
						</form>
					</div>

LoginUserServlet部分:

package cn.tedu.web;

import java.io.IOException;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import cn.tedu.dao.UserDao;

/**
 * 管理员登录
 */
public class LoginUserServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    
	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		
		request.setCharacterEncoding("UTF-8");
		
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String remname = request.getParameter("remname");
		
		//用户名非空验证
		if(username == null || "".equals(username)) {
			request.setAttribute("message", "用户名不能为空!");
			request.getRequestDispatcher("/login.jsp").forward(request, response);
			return;
		}
		
		//执行逻辑
		UserDao dao = new UserDao();
		boolean f = dao.getUserByUsernameAndPassword(username, password);
		
		if(f) {
			//用户登录成功后,向session中添加用户登录状态
			HttpSession session = request.getSession();
			session.setAttribute("user", username);
			
			//实现记住用户名功能
			//判断用户是否勾选了记住用户名功能
			if("true".equals(remname)) {
				//创建cookie保存用户名
				Cookie cookie = new Cookie("remname", URLEncoder.encode(username, "UTF-8"));
				//设置存活时间
				cookie.setMaxAge(60*60*24);
				//设置路径
				cookie.setPath(request.getContextPath());
				//添加到response中
				response.addCookie(cookie);
			}else {
				//删除之前保存的cookie
				Cookie cookie = new Cookie("remname", "");
				cookie.setMaxAge(0);
				cookie.setPath(request.getContextPath());
				response.addCookie(cookie);
			}
			
			response.sendRedirect("list");
			return;
		}else{
			request.setAttribute("message", "登录失败!用户名或密码错误!");
			request.getRequestDispatcher("/login.jsp").forward(request, response);
			return;
		}
		
	}

}











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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值