1.实现方法
使用cookie保存用户数据,在登录成功时,后台保存用户数据并生成cookie,在用户访问主页,触发事件,后台查看是否有保存的cookie并返回验证,前台看验证情况分别显示。
2.代码展示
UserLogin.java(用户登录)
package controller;
import bean.User;
import service.impl.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.sql.SQLException;
@WebServlet("/login")
public class UesrLogin extends HttpServlet {
UserService service=new UserService();
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter writer = resp.getWriter();
String username=req.getParameter("username");
String password=req.getParameter("password");
String checkbox=req.getParameter("checkbox");
User user=new User();
user.setUsername(username);
user.setPassword(password);
boolean result=service.Login(user);
if(result){
writer.write("true");
User_cookie(username,resp,req);
}else {
writer.write("false");
}
}
public static void User_cookie(String username,HttpServletResponse resp,HttpServletRequest req){
Cookie coo = new Cookie("username", username);
coo.setMaxAge(60*60*24*7);
resp.addCookie(coo);
// System.out.println(req.getRequestedSessionId());
}
}
UserIndex.java(主页)
package controller;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/index")
public class UserIndex extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie user_cookie[] = req.getCookies();
boolean isLogin=false;
String username=null;
PrintWriter writer=resp.getWriter();
if (user_cookie != null){
for(int i=0;i<user_cookie.length;i++){
if(user_cookie[i].getName().equals("username")){
username=user_cookie[i].getValue();
}
}
}
System.out.println(username);
writer.write(username);
}
}
前端:
<script type="text/javascript">
window.onload = CheckUser;
function CheckUser(){
$.ajax({
type: "get",
url: "/index",
success: function (username) {
if (username !== null || username !== undefined || username !== ''){
$(".login_info").css({"display":"inline"});
document.getElementById("username_login").innerText=username;
$(".login_btn").css({"display":"none"});
}
}
})
}
</script>
<div class="fr">
<div class="login_info fl">
欢迎您:<em id="username_login"></em>
</div>
<div class="login_btn fl" >
<a href="login.html">登录</a>
<span>|</span>
<a href="register.html">注册</a>
</div>
<div class="user_link fl">
<span>|</span>
<a href="user_center_info.html">用户中心</a>
<span>|</span>
<a href="cart.html">我的购物车</a>
<span>|</span>
<a href="user_center_order.html">我的订单</a>
</div>
</div>
</div>
</div>
3.结果展示
当用户未登录进入主页时,显示登录和注册,不显示用户名。

后台显示null

当用户登录后进入主页,不显示登录和注册,显示用户名。

后台可以看到用户数据
