Java Web程序 Cookie 登陆验证
一个简单的登陆界面,源代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1 style="text-align: center;">用户登陆</h1> <center> <form action="/StuDormManager2/LoginServlet" method="post"> 用户名: <input type="text" name="username"/><br/> 密 码: <input type="password" name="password"/><br/> <input type="submit" value="登陆" /> <br/> </form> </center> </body> </html>
处理登录验证的服务器端核心代码如下:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8;pageEncoding=UTF-8"); response.setCharacterEncoding("UTF-8"); DormManager dm=new DormManager(); String username=ParamUtil.getParameter(request,"username"); String password=ParamUtil.getParameter(request,"password"); dm.setName(username); dm.setPassword(password); System.out.println("Name = "+dm.getName()); System.out.println("Pass = "+dm.getPassword()); if(DBManagerDormManager.checkDormManager(dm)){ Cookie username_cookie=new Cookie("username", username); username_cookie.setMaxAge(600); response.addCookie(username_cookie); response.sendRedirect("welcome.jsp"); }else{ response.sendRedirect("index.jsp"); } }
该服务器端代码的功能是:当登录界面的客户端发来登录请求的时候,获得客户端发送过来的用户名和密码并在后台数据库里面进行验证,如果用户名和密码正确,则将其存到cookie中,并跳转到欢迎界面;否则重定向到登录界面
验证用户名和密码是否正确的代码如下:
public static boolean checkDormManager(DormManager dm){ Connection con=null; PreparedStatement ps=null; ResultSet rs=null; boolean flag=false; try { con=DataBase.getInstance().getConnection(); String sql="select m_password from dorm_manager where m_id=?"; ps=con.prepareStatement(sql); ps.setString(1, dm.getName()); rs=ps.executeQuery(); while(rs.next()){ if(rs.getString(1).equals(dm.getPassword())){ flag=true; } } } catch (Exception e) { e.printStackTrace(); }finally{ DataBase.releaseConnection(con); } return flag; }在验证用户名和密码的时候连接了MySQL数据库,其代码我也贴出来一下:
package cn.suishou.util; import java.sql.*; public class DataBase { Connection connect; static DataBase instance = new DataBase();; public static DataBase getInstance() { if (instance == null) instance = new DataBase(); return instance; } public Connection getConnection(){ Connection trueConn = null; try { Class.forName("com.mysql.jdbc.Driver"); trueConn = DriverManager.getConnection(Config.MysqlUrl, Config.MysqlUser, Config.MysqlPassword); } catch (Exception ex) { ex.printStackTrace(); } return trueConn; } public static void releaseConnection(Connection con){ try { con.close(); } catch (Exception e) { e.printStackTrace(); } } }上面代码中的三个参数Config.MysqlUrl, Config.MysqlUser, Config.MysqlPassword分别表示要连接的数据库地址,登录所需的用户名,以及密码,我写在我的配置文件Config里面,大家如果要用的时候填写上自己的相关信息即可。
做完上面的几个步骤后,剩下了的就只有跳转到的页面需要进行cookie的验证了。
在所有需要登陆后才能显示的页面的最前面加上对cookie的验证,下面是我的代码:
<% CheckLogin cl=new CheckLogin(); String name=cl.hasCheckIn(request); System.out.println("name="+name); if(name!=null){ %> 你好,<%=name %>! <form action="/StuDormManager2/OperateServlet" method="post"> <input type="submit" value="退出 " name="exit"/><br/> </form> <% }else{ response.sendRedirect("index.jsp"); } %>这段代码的功能是:在显示页面之前,先对cookie进行验证,如果存在相应的cookie信息,表示用户已经登录过,那么就显示该页面;否则表示用户没有登陆过,需要重定向到登陆界面.
上面的代码里面有一个CheckLogin ,是用来验证cookie信息的,代码我照样贴出来:
package cn.suishou.util; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; public class CheckLogin { public static String hasCheckIn(HttpServletRequest request){ boolean flag=false; Cookie myCookie[]=request.getCookies();//创建一个Cookie对象数组 String name=null; DBManagerDormManager dd=new DBManagerDormManager(); for(int n=0;n<myCookie.length;n++){ Cookie newCookie= myCookie[n]; if(newCookie.getName().equals("username")){ flag=true; name=dd.getManagerById(newCookie.getValue()); } } return name; } }上面代码的一句:name=dd.getManagerById(newCookie.getValue());是我要通过用户名得到一些信息并返回,这个大家可不必理会,按照各自的实际需要来写即可。
至此,所有的过程就都完成了,希望能对大家有所帮助
转载请注明出处:http://blog.csdn.net/hufan11100914/article/details/39545837
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: php安装mcrypt模块
- 下一篇: windows 下php5.x mcrypt 开启