登陆
login.jsp
两个input标签 一个checkbox选择 一个button提交
<input name> 属性用于对提交到服务器后的表单数据进行标识,只有设置了 name 属性的表单元素才能在提交表单时传递它们的值
- 用户名和密码那里本地cookie的中存储之前的记录 当再次登陆的时候会先去缓存中查看
<% String username = "";
String password = "";
获取当前站点的所有Cookie
Cookie[] cookies = request.getCookies();
for (int i = 0; i < cookies.length; i++) {
对cookies中的数据进行遍历,找到用户名、密码的数据
if ("username".equals(cookies[i].getName())) {
username = cookies[i].getValue();
} else if ("password".equals(cookies[i].getName())) {
password = cookies[i].getValue();
}
}
%>
下面的返回博客—利用href标签跳转会/ index.jsp
对于客户输入的用户名和密码先进行非空判断,然后与controller交互看数据库中是否有这个用户
代码是button的登陆事件的函数,根据表单id
取对应的变量,然后保证非空后,如果输入为空用alert
来提醒,调用ajax
等待返回结果后再操作,是同步的
$("#button").click(
function()
{
var xx=$("#input标签id").val();
if(xx==""){alert("用户名不可为空")}
$.ajax({
async: false,//同步,待请求完毕后再执行后面的代码
type: "POST",
url: '/loginVerify',
contentType: "application/x-www-form-urlencoded; charset=utf-8",
data: $("#loginForm").serialize(),
dataType: "json",
success: function (data) {
if(data.code==0) {
alert(data.msg);
} else {
window.location.href="/admin";
}
},
error: function () {
alert("数据获取失败")
}
})
})
success的fuction(data)里面的形参data作为json对象传给服务器经过controller---/loginVerify
执行后返回 返回的结果有code属性
code属性为0时不是管理员而且会显示msg属性
是管理员就会跳转到/admin
现在来看一下这个loginVerify的控制器方法究竟是如何解析name和pwd?
首先从前端获取信息 request.getParamter("input标签的name是唯一和数据库对应的 这里就写标签的name
");
通过map<String,Object>用来记录登陆情况map<"code",1/0> map<"msg","具体的错误/正确">
最后再将map装入json中返回给前端
1.通过byname查找user如果为空直接map.put<“code”,0> map.put<“msg”,“用户名无效”>
2.查到名字了,通过get user的属性user-pass
如果密码不对map.put<“code”,0> map.put<“msg”,“密码错误”>
3.如果全部都对map.put<“code”,1> map.put<“msg”,"">不用alert任何东西
并且将user放入request.getSession().setAttribute("user", user);
里 选择记住用户的话 还会为密码和用户两个信息都设置cookie
,response.addcookie(),再更新user表的最后登陆时间
request.getSession().setAttribute("user", user);
//添加cookie
if(rememberme!=null) {
//创建两个Cookie对象
Cookie nameCookie = new Cookie("username", username);
//设置Cookie的有效期为3天
nameCookie.setMaxAge(60 * 60 * 24 * 3);
Cookie pwdCookie = new Cookie("password", password);
pwdCookie.setMaxAge(60 * 60 * 24 * 3);
response.addCookie(nameCookie);
response.addCookie(pwdCookie);
}
进入后台首页–index.jsp
后端直接将要显示的东西 以model的形式返给request中 然后前端通过${} 表达式获取后端结果 最终以指定格式显示
学习时间标签的输出格式 限定个数遍历集合的方式
<div id="published-posts" class="activity-block"><h3>最近发布</h3> <br>
<ul>
<c:forEach items="${articleList}" begin="0" end="4" step="1" var="a">
<li>
<span><fmt:formatDate value="${a.articleCreateTime}"
pattern="HH:mm MM月dd日"/>
</span>
<a href="/article/${a.articleId}" target="_blank">${a.articleTitle}
</a>
</li>
</c:forEach>
</ul>
</div>
还有显示最新的5个评论 但是多了< img>标签可以放头像 以及能够对鼠标停留的评论编辑 回复 删除
<c:forEach items="${commentList}" begin="0" end="4" step="1" var="c">
<li class="comment thread-even comment-item approved">
<img alt="" src="${c.commentAuthorAvatar}" class="avatar avatar-50 photo" height="50" width="50">
退出后台 撤销attribute 销毁session
@RequestMapping(value = "/admin/logout")
public String logout(HttpSession session) {
session.removeAttribute("user");
session.invalidate();
return "redirect:/login";
}