实现简单登陆 session绑定控制
2016-12-08 20:44
465 查看
实现登陆
先创建一个存储用户的表mysql> create table user( -> id int primary key auto_increment, -> username varchar(50) unique, -> pwd varchar(30), -> name varchar(250), -> gender char(1) -> ); Query OK, 0 rows affected (0.17 sec)
注意:unique 唯一性约束,让用户名唯一。
增加用户
insert into user(username,pwd,name,gender) values(‘Recar’,’123456’,’Recar’,’m’);
写一个登陆.jsp 和登陆成功.jsp
要做错误判断。最后做session验证。
在登陆成功后,在session上绑定个user。然后在success.jsp页面进行判断是否有这个绑定的,有就继续执行。没有则跳转到登陆界面。并且方法返回。不在继续执行。
实现:
先输入logon.do或者logon.jsp
然后进行登陆。post将数据提交给控制器 ActionServlet。进行判断。是否有这个用户。然后在判断密码是否正确。通过DAO来操作数据库。存在并且密码正确进入success.jsp页面。不成功则重定向到登陆界面。在success.jsp页面也进行判断。是否有session,并且这个session绑定有user。有就可以进入这个页面。没有则跳转到登陆界面。返回方法。
UserDao.java
package dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import entity.User; import util.DBUtil; public class UserDao { public User findByUsername(String username) throws Exception{ User user =null; Connection conn =null; PreparedStatement prep = null; ResultSet rst = null; try{ conn = DBUtil.getConnection(); prep = conn.prepareStatement("select * from user where username=?"); prep.setString(1, username); rst = prep.executeQuery(); if(rst.next()){ user = new User(); user.setId(rst.getInt("id")); user.setUsername(username); user.setPwd(rst.getString("pwd")); user.setName(rst.getString("name")); user.setGender(rst.getString("gender")); } }catch(Exception e){ e.printStackTrace(); throw e; }finally{ DBUtil.close(conn); } return user; } public static void main (String[] args) throws Exception{ UserDao ud = new UserDao(); User user =ud.findByUsername("ddd"); System.out.println(user); } }
User.java
package entity; /** * 实体类 * @author Administrator * */ public class User { private int id; private String username; private String pwd; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } private String gender; @Override public String toString() { return id+""+username+""+pwd+""+name+""+gender; } }
DBUtil.java
package util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; /** * JDBC工具类: * 提供了获得连接,关闭连接的相关的方法。 * @author Administrator * */ public class DBUtil { //获得连接 public static Connection getConnection(){ Connection conn =null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsd1507db", "root", "root"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); try { //将异常抛出!是分层的,本层不解决也不直接去显示,而是抛给他的下一层 throw e; } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } return conn; } //关闭连接 public static void close(Connection conn){ if(conn!=null){ } try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //写个主方法,可以检测是否成功拿到conn public static void main(String[] args){ Connection conn = getConnection(); System.out.println(conn); } }
ActionServlet.java
package web; import java.io.IOException; import java.io.PrintWriter; 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 dao.UserDao; import entity.User; public class ActionServlet extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); //分享请求资源路径 String uri = request.getRequestURI(); String action = uri.substring(uri.lastIndexOf("/"),uri.lastIndexOf(".")); System.out.println("URI!!!"+action); if("/logon".equals(action)){ //读取用户名和密码 String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println(username); //根据用户名和密码查询数据库中是否有这个用户 UserDao ud = new UserDao(); try { User user = ud.findByUsername(username); if(user!=null&& password.equals(user.getPwd())){ //用户有,并且密码对了。登陆成功! HttpSession session = request.getSession(); session.setAttribute("user", username); response.sendRedirect("success.jsp"); }else{ out.print("用户名或者密码错误"); response.sendRedirect("logon.jsp"); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); throw new ServletException(e); } } out.close(); } }
logon.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>用户登陆检测</title> <style type="text/css"> body { background-image: url(ruidian_sidegeermo_fengjing.jpg); background-attachment: fixed; background-repeat: no-repeat; background-size: 100% 100%; color: #FFF; font-family: "微软雅黑"; font-size: 1.6em; } #div1 { margin: 120px; margin-left: 530px; text-align: center; width: 200px; height: 200px; } #div2 { background-image: url(1.png); background-repeat: no-repeat; height: 100px; margin-top: 120px; margin-left: 580px; width: 200px; } span { font-size: 9px; } #b1 { } </style> </head> <body> <div id="div2"></div> <div id="div1"> <form action="logon.do" method="post"> <p> <label for="username">用户名</label> <input type="text" name="username" /> </p> <p> <label for="password">密码</label> <input type="password" name="password"/> </p> <input type="submit" value="登陆" /> <p> <span id="span"></span> </p> </form> </div> </body> </html>
success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <% Object obj = session.getAttribute("user"); if(obj==null){ response.sendRedirect("logon.do"); //但是后面的java代码还会执行。。。。于是 return ; } %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Recar的网址导航~</title> <style type="text/css"> body{ background-image:url(ruidian_sidegeermo_fengjing.jpg);background-attachment:fixed;background-repeat:no-repeat; background-size:100%;font-family:'微软雅黑';color:#FFF; } a{color:#FFF;text-decoration:none;margin:50px; } div{width:100%;height:200px; border:1px solid #000;} table{margin-left:150px;} div p{font-size:20px;} #myblog a{color:#FFF;text-decoration:none;text-align:center;} </style> </head> <body> <br/> <div > <p >安全:</p> <table> <tr> <td><a href="http://www.wooyun.org/" target="_blank">乌云</a></td> <td><a href="http://butian.360.cn/" target="_blank">补天</a></td> <td><a href="https://www.vulbox.com/" target="_blank">漏洞盒子</a></td> <td><a href="http://bobao.360.cn/index/index"target="_blank">安全客</a></td> <td><a href="https://www.91ri.org/" target="_blank">91安全指南</a></td> <td><a href="http://www.52pojie.cn/" target="_blank">吾爱破解</a></td> </tr> <tr> <td><a href="http://bbs.sssie.com/forum.php" target="_blank">SSS</a></td> <td><a href="http://www.bugscan.net/combbs/template/node/#/3">BugScan</a></td> <td><a href="https://www.secpulse.com/" target="_blank">安全脉搏</a></td> <td><a href="http://www.bugbank.cn/pwn/" target="_blank">漏洞银行</a></td> <td><a href="http://www.freebuf.com/" target="_blank">Freebuf</a></td> <td><a href="http://www.moonsafe.com/forum.php" target="_blank">暗月论坛</a></td> </tr> <tr> <td><a href="https://www.sec-wiki.com/skill/2" target="_blank">技能表</a></td> <td><a href="http://www.evil0x.com/">邪恶十六进制</a></td> <td><a href="http://www.52bug.cn/" target="_blank">吾爱漏洞</a></td> <td><a href="http://www.pkav.net/#" target="_blank">PKAV</a></td> <td><a href="http://www.shgcx.org/" target="_blank">社工论坛</a></td> <td><a href="http://bbs.pediy.com/" target="_blank">看雪</a></td> </tr> </table> </div> <div > <p >python</p > <table> <tr> <td><a href="https://github.com/Yixiaohan/show-me-the-code" target="_blank">Python小题目</a></td> <td><a href="http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000" target="_blank">廖雪峰的Python</a></td> <td><a href="https://www.vulbox.com/" target="_blank">漏洞盒子</a></td> <td><a href="http://bobao.360.cn/index/index" target="_blank">安全客</a></td> <td><a href="https://www.91ri.org/" target="_blank">91安全指南</a></td> </tr> <tr> <td><a href="">1</a></td> <td><a href="">1</a></td> <td><a href="">1</a></td> <td><a href="">1</a></td> <td><a href="">1</a></td> </tr> </table> </div> <div > <p> java</p> <table> <tr> <td><a href="http://edu.51cto.com/roadmap/view/id-86.html" target="_blank">java学习路线</a></td> <td><a href="http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000" target="_blank">廖雪峰的Python</a></td> <td><a href="https://www.vulbox.com/" target="_blank">漏洞盒子</a></td> <td><a href="http://bobao.360.cn/index/index" target="_blank">安全客</a></td> <td><a href="https://www.91ri.org/" target="_blank">91安全指南</a></td> </tr> <tr> <td><a href="">1</a></td> <td><a href="">1</a></td> <td><a href="">1</a></td> <td><a href="">1</a></td> <td><a href="">1</a></td> </tr> </table> </div> <div id="myblog"> <a href="http://blog.csdn.net/qq_28295425" target="_blank">我的CSDN</a></div> </body> </html>
效果:
登陆:登陆成功!
没有进行登陆的话就不能获取绑定user的session。就不能进入success.jsp
相关文章推荐
- django开发项目实例3--用session是实现简单的登陆、验证登陆和注销功能
- angularjs中$http、$location、$watch及双向数据绑定学习实现简单登陆验证
- 利用cookie, session 和Filter实现简单的自动登陆
- angularjs中$http、$location、$watch及双向数据绑定学习实现简单登陆验证
- 一个简单实现登陆控制的struts2框架
- 实现session登陆时间的验证,验证用户登录页面的一个监听器
- 实现session登陆时间的验证,验证用户登录页面的一个监听器
- 使用无刷新技术,去请求该失效Session的页面,实现跳转到重新登陆页面。
- 用session实现頁麵访问权限控制
- (转贴)实现带有数据绑定的客户端脚本控制的二级联动菜单
- PHP,操作多个用户,多个线程的session,实现用户登陆状态session值的自动更新
- 用jsp实现session登陆时间的验证.相当与一个监听器
- 简单的实现了将Session的数据存储在Access中
- Apache 2.0.4 + Tomcat 5.5负载均衡及Session绑定的实现
- asp.net基业控制登录简单实现
- js实现DIV的一些简单控制
- Apache + Tomcat 负载均衡及Session绑定的实现
- 实现带有数据绑定的客户端脚本控制的二级联动菜单[zz]
- TreeView加载不同sitemap文件实现简单权限控制
- Apache 2.0.4 + Tomcat 5.5负载均衡及Session绑定的实现