最近实训写注册登录,但是EL表达式和${session.XXX} jstl都只适用在JSP页面,实训前后端分离有点头痛,前端使用纯HTML页面,在写Session的时候碰墙了...
jsp原型就是servlet,里面有内置session,html里面没这些东西
先贴一下我的登录Controller
写入Session
//登录操作
@RequestMapping("/doLogin")
public void doLogin(HttpServletRequest request,HttpServletResponse response) throws Exception{
//编码规范
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
String number = request.getParameter("loginNumber");
String password = request.getParameter("loginPwd");
int id=0;
if(number.contains("@")){id = userDaoService.loginJudgeEmail(number,password);} //邮箱格式-用邮箱登录
else {id = userDaoService.loginJudgePhone(number,password);}
System.out.println(id);
PrintWriter out = response.getWriter();
if(id>0){
//转Gson
Gson gson=new Gson();
User user = userDaoService.findUserById(id);
String userGson= gson.toJson(user);
//将user存进session
HttpSession session = request.getSession();
session.setAttribute("user",userGson);
//out.write(userGson);
out.print("<script language=\"javascript\">alert('登录成功了');window.location.href='/'</script>");
}else{
out.print("<script language=\"javascript\">alert('账号密码错误');window.location.href='/register'</script>");
}
}
上面操作无论Html、Jsp都是这样写入Session。
获取Session
@RequestMapping("/checkUser")
public void checkUser(HttpServletRequest request,HttpServletResponse response){
//编码规范
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
//获取session值
HttpSession session = request.getSession();
Object user = session.getAttribute("user");
try {
PrintWriter out = response.getWriter();
out.write((String) user);
}catch (Exception e){
System.out.println("Nothing session");
}
}
用AJAX返回session值
$(function(){
$.ajax({
async:true,
dataType:"json",
type:"POST",
url:"/checkUser",
success:function(data){
console.log(data);
}
});
});
结果
最后感谢一下网友Selfisher