package cn.itcast.servlet;
/*
* update 2007.09.23 by lyhapple
* 检查用户登陆
* */
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.itcast.bean.User;
import cn.itcast.dao.UserDAO;
import cn.itcast.factory.DaoImplFactory;
import cn.itcast.util.CookieUtil;
public class CheckLogonServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username").trim();
String password = CookieUtil.getMD5(request.getParameter("password"));
String remeberMe = request.getParameter("remeberMe");
HttpSession session = request.getSession(false);
// 将接收到的用户名传递到UserDao的checkUser方法中,检查用户
// 返回一个User类型的对象
UserDAO ud = DaoImplFactory.getInstance();
User user = ud.selectUserByUsername(username);
if (user == null) {
request.setAttribute("checkUserError","");用户名不存在,请先注册
request.getRequestDispatcher("index.jsp").forward(request, response);
return;
}
if(!password.equals(user.getPassword())){
request.setAttribute("checkPasswordError","");密码输入错误,请重新输入
request.getRequestDispatcher("index.jsp").forward(request, response);
return;
}
//保存Cookie,这里调用了CookieUtil.java中的saveCookie方法,将上面的user对象作为参数传递
if ("on".equals(remeberMe)) {
CookieUtil.saveCookie(user, response);
}
//在Session中保存用户信息,并转向用户的个人信息页面
session.setAttribute("user", user);
request.getRequestDispatcher("User/userInfo.jsp").forward(request,response);
}
}
|
相关推荐
### 教你用Java安全有效地实现两周内自动登录功能 #### 概述 本文将详细介绍如何使用Java技术安全地实现用户两周内的自动登录功能。自动登录功能为用户提供了一种便捷的体验,允许用户在一定时间内无需重复输入...
20. **Excel的自动填充**:序列如“星期一、星期二、星期三”等可以通过自动填充快速输入,而“第一类、第二类、第三类”这种序列则不能直接自动填充,因为它们不是连续的数字或字母序列。 以上内容详细介绍了办公...
最终,当刷新成功后,客户端会得到一个全新的token,这个token再次具有一个小时的有效期,但通过刷新操作可以延长其有效时间至两个星期。这样做的好处是,避免了用户在每次请求都需要重新登录,提高了用户体验。 ...
0206 如何在DBGrid中实现复制、粘贴功能 137 0207 在DBGrid中将选中的多行删除 137 0208 在DataGrid中如何使标题文字居中 138 0209 如何把ListBox中的内容拖曳到另一个ListBox中 139 0210 把DBGrid中的数据...
0206 如何在DBGrid中实现复制、粘贴功能 137 0207 在DBGrid中将选中的多行删除 137 0208 在DataGrid中如何使标题文字居中 138 0209 如何把ListBox中的内容拖曳到另一个ListBox中 139 0210 把DBGrid中的数据...
要实现每两分钟发送一次当前登录用户数量给用户hexy,可以编写如下的`crontab`条目: ``` */2 * * * * root (echo "current date `date`">/tmp/count; echo "the current user count is:`who | wc -l`">>/tmp/count;...
2 <br>0003 设置程序代码行序号 3 <br>0004 开发环境全屏显示 3 <br>0005 设置窗口的自动隐藏功能 3 <br>0006 根据需要创建所需解决方案 4 <br>0007 如何使用“验证的目标架构”功能 4 ...
该参数的值可以是包含在双引号内的任何有效的日期格式掩码。例如: ''MMM/DD/YYYY''。 值范围: 任何有效的日期格式掩码, 但不得超过一个固定长度。 默认值: 派生 nls_timestamp_tz_format: 说明: 与 NLS_TIME_TZ_...
简明批处理教程22009年10月20日 星期二 下午 05:35 最近对于批处理技术的探讨比较热,也有不少好的批处理程序发布,但是如果没有一定的相关知识恐怕不容易看懂和理解这些批处理文件,也就更谈不上自己动手编写了,古...