您的位置:首页 > 数据库

【JSP页面】利用数据库中的表格中的数据实现验证用户名和密码

2017-05-02 15:54 731 查看
一.写一个登陆页面:

<%@ 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 HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

   

    <title>My JSP 'login.jsp' starting page</title>

   

 <meta http-equiv="pragma" content="no-cache">

 <meta http-equiv="cache-control" content="no-cache">

 <meta http-equiv="expires" content="0">   

 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

 <meta http-equiv="description" content="This is my page">

 <!--

 <link rel="stylesheet" type="text/css" href="styles.css">

 -->

  </head>

 

 <body>

   <form action="denglu/yanzheng.jsp" method="post">//action里是你获取数据也就是判断页面的地址

   <table>

   <tr>

     <td>用户名:</td>

     <td> <input type="text" name="loginname"> </td>

//这个可以在写完判断页面后再添加,下同

     <td><%=request.getAttribute("nameerror")==null?"":

     request.getAttribute("nameerror") %></td>

   </tr>

  <tr>

   <td>密码</td>

   <td><input type="password" name="loginpass"></td>

   <td><%=request.getAttribute("pwderror")==null?"":

   request.getAttribute("pwderror") %></td>

   

  </tr> 

   <tr>

   <td><input type="submit" value="提交"></td>

   </tr>

   </table>

   </form>

  </body>

</html>

非常简单的页面,大概2分钟就可以写完

二.

编写java文件,具体如下:

第一个loginface:这是一个接口

package com.ccec.denglu;

import com.ccec.jdbc.user;

public interface loginface {

 int login(user user);

 //接口

 

}

第二个,这是一个实现接口界面:

package com.ccec.denglu;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import com.ccec.jdbc.connectionUtil;

import com.ccec.jdbc.user;

public class loginsqlvx implements loginface{//实现接口

 Connection conn=null;

 PreparedStatement prsm=null;

 public int login(user user) {

  conn=connectionUtil.conn();

  ResultSet rs=null;

  int flag=0;//这是重点,使用这个变量来做判断

  String sql="select username,usernum from user_01 where username=?";//sql语句用来查询出用户名对应的密码

  try {

   prsm=conn.prepareStatement(sql);

   prsm.setString(1, user.getUsername());//得到用户输入的用户名

   rs=prsm.executeQuery();//用用户名查询

   while(rs.next()){//得到查询结果

    String unum=rs.getString("usernum");

    if(unum.equals(user.getUsernum())){//判断密码是否相同

//都相同

     flag=2;

     

    }else{

//密码不同

     flag=1;

      

     }

   }

  } catch (SQLException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }finally{

   connectionUtil.close(rs, prsm, conn);

  }

  return flag;//如果返回值为0则在数据库表中查询不到用户名,也就是用户名错误

 }

 

}

另外,其中的connectionutil是我以前创建的通用的数据库调用的,这样就可以省很多时间不用每次都重新写,具体如下:

package com.ccec.jdbc;

import java.sql.PreparedStatement;

import java.sql.Statement;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

public class connectionUtil {

 

 public static Connection conn(){

  Connection conn=null;

  try {

   Class.forName("oracle.jdbc.driver.OracleDriver");

   try {

    conn= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:inspur","scott","tiger");

    

   } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

   }

  } catch (ClassNotFoundException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }

  

  

  return conn;

  

  

  

 }

 public static void close(ResultSet rs,Statement st,Connection conn){

  try {

   if(rs!=null){

   rs.close();}

   if(st!=null){st.close();}

   if(conn!=null){conn.close();}

  } catch (SQLException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }}

 public static void close(Statement st,Connection conn){

  try {

   

   if(st!=null){st.close();}

   if(conn!=null){conn.close();}

  } catch (SQLException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }}

 }

 再向下就是写JSP判断页面了:

我只摘取了其中的java代码部分

   <%

   String loginname=request.getParameter("loginname");//获取用户名

   String loginpass=request.getParameter("loginpass");

   user user=new user();//调用user类

   user.setUsername(loginname);//使用user类中的set方法将用户输入的用户名和密码传入

   user.setUsernum(loginpass);

   loginface loginface=new loginsqlvx();

   int flag=loginface.login(user);//user中有数据,将数据传入loginface类并获取其返回值

   if(flag==2){//判断

   session.setAttribute("loginname", loginname);//将loginname封装入session中,等待后面页面调用

    response.sendRedirect(request.getContextPath()+"/index.jsp");//跳转页面,没啥好说

   

   }else{ if(flag==1){

   request.setAttribute("pwderror", "密码错误");

   }else if(flag==0){

   request.setAttribute("nameerror", "用户名错误");

   }

   request.getRequestDispatcher("login.jsp").forward(request, response);

   }

    %>

 就这么多了,其实总体来说就是利用request和user将数据导入好能查询完成,如果查询完成就进行判断另一项是否相同,如果不能查询则直接就是用户名不匹配,直接可以判断用户名不正确,数据库中的user_01是我随便建的,大体就是creat table user_01(username varchar2(5),usernum number),主键外键哪个是哪个我也忘记了,但是应该不影响使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐