用session保存登录状态
博主最近在做课设,所以用到了对登录状态的判断,顺路写下这一篇博客:
在用户登录后,后台根据用户的用户名在服务器为用户添加session,servlet文件代码如下
protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException,IOException {
request.setCharacterEncoding("utf-8");
//处理响应乱码
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
customer user = new customer();
//从前端获取用户名,处理中文乱码
user.setUsername(new String(request.getParameter("username").getBytes("iso-8859-1"),"utf-8"));
//将用户名保存在session中
request.getSession().setAttribute("user",user.getUsername());
//跳转前端页面
response.sendRedirect(request.getContextPath()+"/index.jsp");
}
将用户名添加进session下面就是前端jsp文件的操作:
<!-- 判断user是否存在 -->
<% String user=(String)session.getAttribute("user") ;
if(user==null||"".equals(user))
{
%>
<!-- 不存在显示用户名为游客 -->
<div style="height: 40%;">
<div style="margin: 10px 0; padding-left: 1ch; background-color: whitesmoke;">
<p style="color: black">
用户名:游客
</p>
</div>
</div>
<div style="height: 60%;">
<button type="button" class="btn-info" style="width: 45%; float: left" onClick="window.location.href='Brothers/logon/login.jsp'">
<a >登录</a>
</button>
<button type="button" class="btn-info" style="width: 45%; float: right;" onClick="window.location.href='Brothers/logon/logon.jsp'">
<a >注册</a>
</button>
</div>
<!-- 存在则显示用户名 -->
<% }
else {
%>
<div style="height: 40%;">
<div style="margin: 10px 0; padding-left: 1ch;background-color: #FFE3C4;">
<p>
用户名:<%= user %>
<!--注销进行的后台操作-->
<a href="${pageContext.request.contextPath}/User?method=Cancellation">注销</a>
</p>
</div>
</div>
<% }%>
上面是用户的登录界面,现在我们实现用户的注销功能,注销和登录一样很简单,就是对session的杀死,下面是注销的后台代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//判断session是否存在,如果存在,则将其杀死
if(request.getSession(false)!=null&&request.getSession().getAttribute("user")!=null)
{
request.getSession().invalidate();
}
//重定向到主页
response.sendRedirect(request.getContextPath()+"/index.jsp");
}
以上就是登录状态与注销的基本实现
这是未登录的状态
这是登陆的状态