用户登录退出实现

  • 步骤分析
  • 实现登录
  • 实现退出

1)步骤分析

1、在index.jsp上点击登录跳转到login.jsp

  • 可以在UserServlet中进行请求转发

2、修改页面上的form表单 method 每个标签添加name属性

  • action:/store/user/login

3、 登录操作:

  • 获取用户名和密码
  • 调用service根据用户名和密码获取一个user
    • 判断用户是否为空
      若为空:则账号或密码错误
      若不为空:继续判断是否激活,只有激活的时候才把用户放入到session中

4、页面重定向到首页上
展示:用户名/退出 我的订单

5、点击退出

  • url:/store/user/logout
  • 干掉session
  • 页面重定向

2)登录实现

① 点击登录到登录界面

修改index.jsp上的登录按钮的跳转地址:

<li><a href="${path}/user/toLogin">登录</a></li>

在UserServlet中添加对路径的处理:

else if(uri.endsWith("/toLogin")) {toLogin(request,response);
}

toLogin方法请求转发到登录界面

/*** 请求转发到登录界面*/
private void toLogin(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.getRequestDispatcher("/jsp/login.jsp").forward(request, response);
}

② 修改login.jsp

③ Servlet实现登录

  1. 定义一个Constant常量接口,定义一个常量代表激活状态

    /*** 常量接口*/
    public interface Constant {/*** 用户激活状态*/int USER_IS_ACTIVE=1;
    }
    
  2. 处理/login路径,添加login方法

    else if(uri.endsWith("/login")) {login(request,response);
    }
    
  3. 获取用户名和密码

  4. 调用service完成登录操作,返回user

  5. 判断用户

  6. 将user放入到session中 重定向

    /*** 实现登录* @param request* @param response* @throws IOException * @throws ServletException */
    private void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1、获取用户名和密码String username=request.getParameter("username");String password=request.getParameter("password");//密码加密password=MD5Utils.md5(password);//2、调用service完成登录操作 返回userUser user=userService.login(username,password);//3、判断用户if(user==null) {//用户名密码不匹配request.setAttribute("msg", "用户名或密码错误");//请求转发会login.jsprequest.getRequestDispatcher("/jsp/login.jsp").forward(request, response);return;}else {//继续判断用户状态是否激活if(Constant.USER_IS_ACTIVE!=user.getState()) {//没有激活request.setAttribute("msg", "用户未激活");request.getRequestDispatcher("/jsp/login.jsp").forward(request, response);return;}}//4、将user放入到session中,重定向到首页request.getSession().setAttribute("user", "user");response.sendRedirect(request.getContextPath()+"/");
    }
    

④ 实现service

UserService接口:

/*** 用户登录* @param username* @param password* @return*/
User login(String username, String password) throws Exception;

UserServiceImpl实现类:

@Override
public User login(String username, String password) throws Exception {return userDao.getUserByUsernameAndPwd(username,password);
}

⑤ 实现dao

UserDao接口:

/*** 根据用户名和密码进行登录* @param username* @param password* @return*/
User getUserByUsernameAndPwd(String username, String password) throws SQLException;

UserDaoImpl实现类:

/*** 根据用户名和密码进行登录*/
@Override
public User getUserByUsernameAndPwd(String username, String password) throws SQLException {String sql="select * from `user` where username=? and password=? limit 1";return qr.query(sql, new BeanHandler<User>(User.class),username,password);
}

⑥ 更改登录之后的显示

登录成功,更改index.xml中的登录状态显示:

...
<div class="col-md-3" style="padding-top:20px"><ol class="list-inline"><c:if test="${empty user }"><li><a href="${path}/user/toLogin">登录</a></li><li><a href="${path}/user/toRegister">注册</a></li></c:if><c:if test="${not empty user }">${user.username }:您好<li><a href="${path}/user/">退出</a></li><li><a href="${path}/user/">我的订单</a></li></c:if><li><a href="cart.htm">购物车</a></li></ol>
</div>
...

登录失败,显示msg:

...
<font>会员登录</font> ${msg }
...

⑦ 登录测试

新注册账号zs,密码123,登录:

去激活之后登录:

如果账号或密码错误:


3)退出实现

① 更改退出的链接地址

<li><a href="${path}/user/logout">退出</a></li>

② 在UserServlet中干掉session对象,重定向到首页

private void logout(HttpServletRequest request, HttpServletResponse response) throws IOException {//1、干掉sessionrequest.getSession().invalidate();//2、页面重定向response.sendRedirect(request.getContextPath()+"/");
}

③ 测试退出

09_用户登录退出实现相关推荐

  1. linux下怎么查看ssh的用户登录日志

    linux下登录日志在下面的目录里:  cd /var/log  查看ssh用户的登录日志:  less secure  linux日志管理: 1. 日志简介 日志对于安全来说,非常重要,他记录了系统 ...

  2. Qt编写物联网管理平台30-用户登录退出

    一.前言 一个用户登录界面,是一个完整的应用系统,尤其是客户端系统必备的一个功能模块,传统的登录处理一般都是和本地的用户信息进行比对,而现代的登录系统一般是发送请求到服务器进行验证,无论何种方式,都是 ...

  3. Linux系统中管理用户登录及登录信息的处理

    用户登录或者访问记录 在Linux系统中,有三个主要的日志子系统: 连接时间日志–由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和 u ...

  4. jsp用session判断输入框_[实战小剧场servletamp;jsp] 用户登录及退出功能实现

    项目使用技术:servlet+jsp+mybatis 用户登录: 根据用户名和密码查询用户信息.查到则登录成功,查不到则登录失败. 用户退出: 销毁session 登录思路: 浏览器在登录页面发起登录 ...

  5. html退出登录_[实战小剧场servletamp;jsp] 用户登录及退出功能实现

    项目使用技术:servlet+jsp+mybatis 用户登录: 根据用户名和密码查询用户信息.查到则登录成功,查不到则登录失败. 用户退出: 销毁session 登录思路: 浏览器在登录页面发起登录 ...

  6. PHP+jQuery+Ajax实现用户登录与退出

    用户登录与退出功能应用在很多地方,而在有些项目中,我们需要使用Ajax方式进行登录,登录成功后只刷新页面局部,从而提升了用户体验度.本文将使用PHP和jQuery来实现登录和退出功能. 查看演示 下载 ...

  7. linux配置服务器超时退出,Linux下实现不活动用户登录超时后自动登出

    摘要: 方法一:通过修改.bashrc或.bash_profile文件来实现通过修改home目录下的.bashrc或.bash_profile文件... 方法一:通过修改.bashrc或.bash_p ...

  8. php mysql ajax登录界面_PHP+jQuery+Ajax实现用户登录与退出

    本文使用Ajax无刷新登录和退出,从而提升了用户体验. 若用户为登录状态,则显示用户相关登录信息,否则显示登录表单. 用户登录与退出功能应用在很多地方,而在有些项目中,我们需要使用Ajax方式进行登录 ...

  9. 怎么退出用户登录linux,怎样登录和退出Linux系统

    1.启动和登录系统超级用户的用户名为root,密码在安装系统时已设定,系统启动成功后屏幕显示下面的提示:localhostlogin:这时输入超级用户名"root",然后键入回车键 ...

  10. 使用超级用户登录系统linux,登录和退出Linux系统

    1. 启动和登录系统 超级用户的用户名为 root ,密码在安装系统时已设定.系统启动成功后输入超级用户名"root" 然后键入回车键,此时输入口令,输入口令时,口令不会在屏幕上显 ...

最新文章

  1. [转]Git远程操作详解
  2. cache-control_网站 cache control 最佳实践
  3. matPlotLib绘制决策树
  4. python杂记-读取png图像文件头数据
  5. Flask开发微电影网站(二)
  6. linux基础-第十六单元 yum管理RPM包
  7. 诗歌rails之获取本地ip地址
  8. 4g网络切换软件_5G 网络NSA与SA模式 互操作策略研究
  9. iOS-----线程同步与线程通信
  10. 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(一)转载自码农网
  11. 前期交互流程(PTES的第一步)
  12. 记一次联想Y7000P安装黑apple系统地经历
  13. 从新华字典释义的角度理解springboot中controller、service、dao各自的职责
  14. Java设计模式学习笔记
  15. docxtpl 学习笔记
  16. 用matlab写的视频截取图像桢,基于MATLAB的储粮害虫图像处理方法
  17. 4.R语言【dplyr包】使用方法
  18. 跳槽字节跳动,十年开发经验Android架构师,灵魂拷问
  19. java实验5_java实验5
  20. [ vulhub漏洞复现篇 ] Apereo-cas 4.1 反序列化远程代码执行漏洞

热门文章

  1. java类路径定制_设置Java类路径的注意事项
  2. 学校为什么要单位接收函_学校让我签三方,居然是因为···
  3. 简单的maven自定义webapp目录
  4. java jpa 教程 查询_Spring Boot JPA 使用教程
  5. 浅谈Java两种并发类型——计算密集型与IO密集型
  6. 数据分析第二章确定分析思路
  7. [Linux_Ubuntu13] 声音很小前台无法调节的处理方法
  8. xStream 的简单使用 xml to bean
  9. Eclipse切换IDE界面语言
  10. wait()、notify()、notifyAll()原理用法详解sleep()与wait()区别