一、编写登录页面login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>电子书城</title><link rel="stylesheet" href="${pageContext.request.contextPath }/client/css/main.css" type="text/css" />
</head>
<body class="main"><jsp:include page="head.jsp" /><jsp:include page="menu_search.jsp" /><div id="divcontent"><form action="${pageContext.request.contextPath}/login" method="post"><table width="900px" border="0" cellspacing="0"><tr><td style="padding:30px"><div style="height:470px"><b>&nbsp;&nbsp;首页&nbsp;&raquo;&nbsp;个人用户登录</b><div><table width="85%" border="0" cellspacing="0"><tr><td><div id="logindiv"><table width="100%" border="0" cellspacing="0"><tr><td style="text-align:center; padding-top:20px"><img src="${pageContext.request.contextPath }/client/images/logintitle.gif" width="150" height="30" /></td></tr><tr><td style="text-align:center;padding-top:20px;"><fontcolor="#ff0000">${requestScope["register_message"]}</font></td></tr><tr><td style="text-align:center"><table width="80%" border="0" cellspacing="0"style="margin-top:15px ;margin-left:auto; margin-right:auto"><tr><tdstyle="text-align:right; padding-top:5px; width:25%">用户名:</td><td style="text-align:left"><input name="username"type="text" class="textinput" /></td></tr><tr><td style="text-align:right; padding-top:5px">密&nbsp;&nbsp;&nbsp;&nbsp;码:</td><td style="text-align:left"><input name="password"type="password" class="textinput" /></td></tr><tr><td colspan="2" style="text-align:center"><input type="checkbox" name="checkbox" value="checkbox01" />记住用户名&nbsp;&nbsp; <input type="checkbox" name="checkbox" value="checkbox02" /> 自动登录</td></tr><tr><td colspan="2"style="padding-top:10px; text-align:center"><input name="image" type="image" onclick="return formcheck()"src="${pageContext.request.contextPath }/client/images/loginbutton.gif" width="90" height="30" /></td></tr><tr><td colspan="2" style="padding-top:10px"><img src="${pageContext.request.contextPath }/client/images/loginline.gif" width="241" height="10" /></td></tr><!-- <tr><td colspan="2"style="padding-top:10px; text-align:center"><ahref="register.jsp"><img name="image"src="data:images/signupbutton.gif" width="135" height="33" /></a></td></tr> --></table></td></tr></table></div></td><td style="text-align:left; padding-top:30px; width:60%"><h1>您还没有注册?</h1><p>注册新用户,享受更优惠价格!</p><p>千种图书,供你挑选!注册即享受丰富折扣和优惠,便宜有好货!超过万本图书任您选。</p><p>超人气社区!精彩活动每一天。买卖更安心!支付宝交易超安全。</p><p style="text-align:left"><a href="${pageContext.request.contextPath }/client/register.jsp"><img src="${pageContext.request.contextPath }/client/images/signupbutton.gif" width="135" height="33" /></a></p></td></tr></table></div></div></td></tr></table></form></div><jsp:include page="foot.jsp" />
</body>
</html>

二、创建LoginServlet

public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 1.获取登录页面输入的用户名与密码String username = request.getParameter("username");String password = request.getParameter("password");// 2.调用service完成登录操作。UserService service = new UserService();try {User user = service.login(username, password);// 3.登录成功,将用户存储到session中.request.getSession().setAttribute("user", user);// 获取用户的角色,其中用户的角色分普通用户和超级用户两种String role = user.getRole();// 如果是超级用户,就进入到网上书城的后台管理系统;否则进入我的账户页面if ("超级用户".equals(role)) {response.sendRedirect(request.getContextPath() + "/admin/login/home.jsp");return;} else {response.sendRedirect(request.getContextPath() + "/client/myAccount.jsp");return;}} catch (LoginException e) {// 如果出现问题,将错误信息存储到request范围,并跳转回登录页面显示错误信息e.printStackTrace();request.setAttribute("register_message", e.getMessage());request.getRequestDispatcher("/client/login.jsp").forward(request, response);return;}}
}

三、UserService中添加登录方法

// 登录操作public User login(String username, String password) throws LoginException {try {//根据登录时表单输入的用户名和密码,查找用户User user = dao.findUserByUsernameAndPassword(username, password);//如果找到,还需要确定用户是否为激活用户if (user != null) {// 只有是激活才能登录成功,否则提示“用户未激活”if (user.getState() == 1) {return user;}throw new LoginException("用户未激活");}throw new LoginException("用户名或密码错误");} catch (SQLException e) {e.printStackTrace();throw new LoginException("登录失败");}}

四、创建DAO

public class UserDao {// 添加用户public void addUser(User user) throws SQLException {String sql = "insert into user(username,password,gender,email,telephone,introduce,activecode) values(?,?,?,?,?,?,?)";QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());int row = runner.update(sql, user.getUsername(), user.getPassword(),user.getGender(), user.getEmail(), user.getTelephone(),user.getIntroduce(), user.getActiveCode());if (row == 0) {throw new RuntimeException();}}// 根据激活码查找用户public User findUserByActiveCode(String activeCode) throws SQLException {String sql = "select * from user where activecode=?";QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());return runner.query(sql, new BeanHandler<User>(User.class), activeCode);}// 激活用戶public void activeUser(String activeCode) throws SQLException {String sql = "update user set state=? where activecode=?";QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());runner.update(sql, 1, activeCode);}//根据用户名与密码查找用户public User findUserByUsernameAndPassword(String username, String password) throws SQLException {String sql="select * from user where username=? and password=?";QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());return runner.query(sql, new BeanHandler<User>(User.class),username,password);}}

案例:实现用户登录功能相关推荐

  1. xpath技术解析xml以及案例模拟用户登录效果

    问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!! xpath就在此情况下产生了--主要是用于快速获取所需的[节点对象]. 在dom4j中如何使用xPath技术 1) ...

  2. Flask学习笔记02:实现用户登录功能

    文章目录 一.功能示意图 二.案例演示--用户登录login01 1.创建Python项目login01

  3. php mysql用户登录_php mysql实现用户登录功能的代码示例

    接着上次的php mysql添加用户的功能代码,今天来学习下php实现用户登录与注销的功能,通过跟踪session会话来保存用户的登陆状态. 1,登录页面 login.php 用户登录_www.# 用 ...

  4. Apache Shiro实现用户登录功能

    apache shiro实现用户登录功能 配置shiro的Filter实现URL级别权限控制 配置web.xml <!-- shiro的过滤器 --> <filter>< ...

  5. PHP用户登录功能实现

    PHP用户登录功能实现 设计数据库连接,简单查询,表单提交,直接上代码,大家很容易明白. 我建了一个很简单的数据库,表单包括用户名,ID,密码. 用户登录界面 <html><head ...

  6. 如何设计安全的用户登录功能

    用户登录功能是Web应用系统具备的最基本的功能,关系到用户数据和应用系统数据的安全,设计一个安全的用户登录功能,涉及到以下几个方面的内容. (一) 老生常谈--口令 1. 口令长度与复杂度限制 限制用 ...

  7. 案例:用户登录(html--servlet--mysql)

    案例:用户登录(html–servlet–mysql) 需要用到的内容:HTML+CSS,Tomcat,Servlet,DBUtils,c3p0,MySQL 1.创建web项目student_mana ...

  8. Vue + Spring Boot 学习笔记02:引入数据库实现用户登录功能

    Vue + Spring Boot 学习笔记02:引入数据库实现用户登录功能 在学习笔记01里,我们利用跨域打通了前端的Vue与后端的Spring Boot,实现了用户登录功能,但是后台的登录控制器在 ...

  9. Vue + Spring Boot 学习笔记01:实现用户登录功能

    Vue + Spring Boot 学习笔记01:实现用户登录功能 一.创建后端Spring Boot项目Book Management 二.创建前端Vue项目bm-vue 三.修改后端项目Book ...

  10. mysql flask-login_Flask框架通过Flask_login实现用户登录功能示例

    本文实例讲述了Flask框架通过Flask_login实现用户登录功能.分享给大家供大家参考,具体如下: 通过Flask_Login实现用户验证登录,并通过login_required装饰器来判断用户 ...

最新文章

  1. ScratchCardView:刮刮卡视图组件
  2. 栈和队列应用之数制转换
  3. ecplice中class.forname一直报错_Python怎么把文件内容读取出来,怎么把内容写入文件中
  4. python打印数组中期望元素的位置
  5. 进程调度:优先数法与轮转法的实现
  6. 初创公司MindMaze研发情绪反应VR,让VR关怀你的喜怒哀乐
  7. PHP方法的重载主要格式,PHP函数重载方法及技巧
  8. 中控考勤机官方开发包java,zkteco iface702 中控考勤机java开发步骤一---连接考勤机...
  9. win10环境redis集群搭建(非主从模式)
  10. 腾讯云数据库CDB介绍及数据库与应用数据库分析
  11. java数据类型ppt,Java语言基础01数据类型02.ppt
  12. 什么是机器学习里的优化?
  13. Java小农养成记第一天
  14. IntelliJ IDEA的数据库管理工具实在太方便了
  15. Java File文件流读取文件夹内的文件并替换文件内容
  16. Schema being registered is incompatible with an earlier schema
  17. Elsevier论文草稿在排版时如何添加行号?(单栏排版,双栏排版)
  18. 桌面打不开计算机控制面板,电脑控制面板打不开怎么办?两种解决方法
  19. ant-design-vue+vite主题切换详细步骤(简单案例)
  20. 第十八届全国大学智能汽车竞赛报名信息统计:华南赛区报名队伍

热门文章

  1. 关于近段时间不更新博客的借口
  2. 消息中间件之ActiveMQ入门
  3. iis8.5限速没有效果怎么回事_电梯为何会发生坠梯?没有安全措施吗?能在井道底安装大弹簧吗?...
  4. python cmdb_Django之入门 CMDB系统 (一) 基础环境
  5. 【clickhouse】clickhouse Uint64 不是64位 超限不报错
  6. 【Elasticsearch】腾讯万亿级 Elasticsearch 内存效率提升解密 源码级别 性能优化
  7. 【Flink】ClassCastException 以及自定义序列化
  8. 【Elasticsearch】Limit of total fields [1000] in index [xxxxxx_index] has been exceeded
  9. 【Elasticsearch】Request cannot be executed;I/O reactor status :STOPPED.
  10. Windows : Win 7 FT服务器 配置