您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
09-案例-记住用户(解决使用if标签没有taglib声明下在input标签中checked属性出现未正常闭合情况)
发布时间:2024-12-06 20:29:32编辑:雪饮阅读()
-
在java中为了防止空指针异常,所以经常有类似这样的写法
if("1".equals(remember)){
}
但是我看着特别的别扭,我更喜欢先判断是否是空指针,然后赋予对应的一个非空指针的无效值,那么如果要实现记住密码,我的理解是前端复选框选中了后提交上来时候,就将用户和密码写入cookie中,下次携带过来就自动填充密码,以及考虑到登录名可能有中文的情况,所以这里我的登录servlet的doGet方法的实现继上篇以来,但实际上我还要考虑就是如果用户没有勾选的情况就要清除记住密码的相关信息,所以再次修改如:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
User user=userService.login(req);
resp.setContentType("text/html;charset=utf-8");
if(user==null){
req.setAttribute("msg","用户名或密码错误");
req.getRequestDispatcher("/login.jsp").forward(req,resp);
}
else{
HttpSession session= req.getSession();
session.setAttribute("user",user);
String remember=req.getParameter("remember");
if(remember==null){
remember="";
}
Cookie cookie_u=new Cookie("username", URLEncoder.encode(user.getUsername()));
Cookie cookie_c=new Cookie("password", user.getPassword());
Cookie remember_c=new Cookie("remember", remember);
if(remember.equals("1")){
cookie_u.setMaxAge(60*60*24*7);
cookie_c.setMaxAge(60*60*24*7);
remember_c.setMaxAge(60*60*24*7);
}
if(remember.equals("1")==false){
cookie_u.setMaxAge(0);
cookie_c.setMaxAge(0);
remember_c.setMaxAge(0);
}
resp.addCookie(cookie_u);
resp.addCookie(cookie_c);
resp.addCookie(remember_c);
resp.sendRedirect(req.getContextPath()+"/ServletQueryAll");
}
}
那么登录页jsp页面中想要获取cookie可以更简单,也无需要类似上篇中pageContext那样长的语句才获取,其实可以直接类似${cookie.key.value},同时也需要判断是否以及勾选了remember,如果以前勾选过,则继续保持勾选状态,则该登录的jsp表单修改后如:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login</title>
<link href="css/login.css" rel="stylesheet">
<style>
.msg{
color:red;
}
</style>
</head>
<body>
<div id="loginDiv">
<form action="${pageContext.request.contextPath}/loginServlet" id="form">
<h1 id="loginMsg">LOGIN IN</h1>
<div class="msg">${msg}</div>
<p>Username:<input id="username" name="username" type="text" value="${cookie.username.value}"></p>
<p>Password:<input id="password" name="password" type="password" value="${cookie.password.value}"></p>
<p>remember:<input type="checkbox" name="remember" value="1" <c:if test="${cookie.remember.value == 1}"> checked </c:if> /></p>
<div id="subDiv">
<input type="submit" class="button" value="login up">
<input type="reset" class="button" value="reset">
<a href="register.html">没有账号?点击注册</a>
</div>
</form>
</div>
</body>
</html>
这里又是同样的情况,你需要小心一个坑,就是使用if标签的时候,如果你没有
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
这一句,则不报错,但是页面显示remember所在元素多了一个checkeed />,好像是这样,就感觉好像是标签没有正确闭合一样。
关键字词:if,taglib,input,checked,记住用户
相关文章
- 08-案例-查询所有(当jsp页面没有声明taglib时候JSTL的
- 05-JSTL-if&foreach(解决jsp混写if与foreach循环嵌套
- 10-查询-动态条件查询(if、where、choose、when、othe
- mac连接windows文件共享cifs/smb
- 【Shopify教程合集】180步让全新Shopify从0到暴富 -
- 1期-入门Shopify-1-7步-2020更新
- 前言-2020-9月更新(Shopify)
- 11生命周期函数完整(v-if,数据更新)
- tol24.com11-1(Trouble is part of your life)
- tol24.com08-3(fifteen)