当前位置: 首页 > 编程笔记 >

一个处理用户登陆的servlet简单实例

谭献
2023-03-14
本文向大家介绍一个处理用户登陆的servlet简单实例,包括了一个处理用户登陆的servlet简单实例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了一个处理用户登陆的servlet实现方法。分享给大家供大家参考。具体分析如下:

Login.java代码如下:


package com.bai;

import javax.servlet.http.*;

import java.io.*;

public class Login extends HttpServlet{     public void doGet(HttpServletRequest req,HttpServletResponse res){         try{req.setCharacterEncoding("gb2312");         res.setContentType("text/html;charset=gb2312");             PrintWriter pw=res.getWriter();             pw.println("<html>");             pw.println("<body>");             pw.println("<h1>登陆界面</h1>");             pw.println("<form action=logincl method=post>");             pw.println("用户名:<input type=text name=username><br>");             pw.println("密码:<input type=password name=passwd><br>");             pw.println("<input type=submit value=login><br>");             pw.println("</form>");             pw.println("</body>");             pw.println("</html>");         }         catch(Exception e){             e.printStackTrace();         }     }         public void doPost(HttpServletRequest req,HttpServletResponse res){         this.doGet(req,res);     } }

LoginCl.java代码如下:


package com.bai;

import javax.servlet.http.*;

import java.io.*; import java.sql.*;

public class LoginCl extends HttpServlet{     public void doGet(HttpServletRequest req,HttpServletResponse res){                 Connection conn=null;         Statement stmt=null;         ResultSet rs=null;         String sql = "select username,passwd from users where username = ? and passwd = ?";         try{//req.setCharacterEncoding("gb2312");             String user=req.getParameter("username");             String password=req.getParameter("passwd");                         Class.forName("com.mysql.jdbc.Driver");             conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sqdb","root","root"); //            stmt=conn.createStatement();             PreparedStatement pstmt = conn.prepareStatement(sql);             pstmt.setString(1, user);             pstmt.setString(2, password);             rs = pstmt.executeQuery(); //            rs=stmt.executeQuery("select top 1 * from users where username='"+user //                +"' and passwd='"+password+"'");             if(rs.next())             {                 HttpSession hs=req.getSession(true);                 hs.setMaxInactiveInterval(60);                 hs.setAttribute("name",user);                 res.sendRedirect("welcome?&uname="+user+"&upass="+password);             }             else{                 res.sendRedirect("login"); //url             }                     }         catch(Exception e){             e.printStackTrace();         }finally{             try{                 if(rs!=null){                 rs.close();                 }                 if(stmt!=null){                     stmt.close();                 }                 if(conn!=null){                     conn.close();                 }                }catch(Exception e){                 e.printStackTrace();             }                }     }         public void doPost(HttpServletRequest req,HttpServletResponse res){         this.doGet(req,res);     } }

其实上面这个处理用户名密码带有明显注入漏洞,可以根据用户名从数据库取密码,用取出的密码和用户输入的密码比较


sql=select passwd from users where username = ?  limit 1

if(rs.next()) {     String passwd=rs.getString(1);     if(passwd.equals(password))             //密码正确     else //密码错误 }

Welcome.java代码如下:


package com.bai;

import javax.servlet.http.*;

import java.io.*;

public class Welcome extends HttpServlet{     public void doGet(HttpServletRequest req,HttpServletResponse res){                 HttpSession hs=req.getSession();         String val=(String)hs.getAttribute("pass");                 if(val==null){             try{                 System.out.print(1);                 res.sendRedirect("login");             }catch(Exception e){                 e.printStackTrace();             }                     }                            String u=req.getParameter("uname");         String p=req.getParameter("upass");                 try{//req.setCharacterEncoding("gb2312");             PrintWriter pw=res.getWriter();             pw.println("welcome! "+u+"&pass="+p);         }         catch(Exception e){             e.printStackTrace();         }     }         public void doPost(HttpServletRequest req,HttpServletResponse res){         this.doGet(req,res);     } }

希望本文所述对大家的Java程序设计有所帮助。

 类似资料:
  • 本文向大家介绍php实现用户登陆简单实例,包括了php实现用户登陆简单实例的使用技巧和注意事项,需要的朋友参考一下 php实现用户登陆简单实例 前言: 最近要完成的最后一个部分,就是对用户提交的数据进行管理,至于管理,那肯定就是管理员的事了,那一定涉及登陆,验证账号权限,账号是否过期等等问题。 所需知识 session,确实是很重要的东西。并且我遇到session不能跨页,修改PHP.ini的se

  • 本文向大家介绍ThinkPHP实现简单登陆功能,包括了ThinkPHP实现简单登陆功能的使用技巧和注意事项,需要的朋友参考一下 思路:前台输入账号密码,后台自定义一个函数checkNamePwd()用于验证账号密码正确与否,在控制器里调用,其中,checkNamePwd()方法验证账号密码正确性是首先通过账号查找密码,然后把查找出来的密码和用户输入的密码比较,相同则登陆成功,否则登录失败! 首先在

  • 本文向大家介绍php实现的简单检验登陆类,包括了php实现的简单检验登陆类的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现的简单检验登陆类。分享给大家供大家参考。具体如下: 希望本文所述对大家的php程序设计有所帮助。

  • 本文向大家介绍利用PHP实现一个简单的用户登记表示例,包括了利用PHP实现一个简单的用户登记表示例的使用技巧和注意事项,需要的朋友参考一下 一、展示单行的用户信息表 首先我们需要创建两个文件,一个为html文件,一个为php文件。 这里博主就创建了form.html和formHandle.php两个文件。 下面展示一下两个文件的内容: form.html的文件内容: 效果展示: 这里要注意的是:类

  • 本文向大家介绍用AJAX实现页面登陆以及注册用户名验证的简单实例,包括了用AJAX实现页面登陆以及注册用户名验证的简单实例的使用技巧和注意事项,需要的朋友参考一下 AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。 AJAX 是一种用于创建快速动态网页的技术。其核心是 JavaScript 对

  • 本文向大家介绍Ajax+asp.net实现用户登陆,包括了Ajax+asp.net实现用户登陆的使用技巧和注意事项,需要的朋友参考一下 以用户登录为例练习ajax的使用方法 login.html DAL.cs BLL.cs Server.aspx.cs  Server.aspx   以上所述就是本文的全部内容了,希望大家能够喜欢。