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

来源:互联网 发布:淘宝一块钱包邮的东西 编辑:程序博客网 时间:2024/06/05 03:48

一.写一个登陆页面:

<%@ 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),主键外键哪个是哪个我也忘记了,但是应该不影响使用。

1 0
原创粉丝点击