当前位置:编程学习 > JSP >>

jsp+servlet+oracle 实现用户登陆功能

求教:、 目前我做了一个登陆界面,现在的问题是如何连接数据库,并判断输入的用户名密码是否跟数据库的用户名密码符合。servlet里该怎么写呢,
答案:servlet里面  String username=request.getParameter("username");
String password=request.getParameter("password");
//参数名根据实际jsp页面的输入框名称对应
boolean right=new DBOperator().MyQuery(username,password);
DBOperator为自定义类名MyQuery()为这个类里面的用来连接数据库和校验用户名和密码的方法
在DBOperator里面定义MyQuery()方法如下
public boolean MyQuery(String username,String password){
        Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
        String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
        Connection con = DriverManager.getConnection(url, username, password);
        PreparedStatement ps;
        ResultSet rs;
        String sql="select count(*) from tablename where username='"+username+"' and password='"+password+"'";
        rs = ps.executeQuery(sql);
        if(rs.getInt(0)<=0){
                return false
        }
        return true;
}
其他:输入的用户名用request.getParameter()获取
用JDBC连ORACLE就可以了
条件查询得到比较结果。 - -。 你是初学java把? 连接数据库是最基础的。。 
 Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
  //orcl是我的oracle数据库sid
  String conn_url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
  String conn_uid = "scott";//用户名
  String conn_pwd = "tiger";//密码
  Connection con = DriverManager.getConnection(conn_url, conn_uid, conn_pwd);
 Statement stmt;
  ResultSet rst;
//userid传过来的用户名,password 密码
String sql="select count(*) from xxxtable where userid="+userid+" and password="+password;
stmt = con.createStatement();
  rst = stmt.executeQuery(sql);
先写到这吧。有事 先忙了 
如果需要,可以提供更详细的 首先 你得写一个DB类  就是一个JDBC驱动 (当然你也可以用Oracle)
我给你一个DB类

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBBase {

	private static final String DRIVER = "";
	private static final String UID = "";
	private static final String PWD = "";
	private static final String URL = "";

	private Connection conn = null;
	private PreparedStatement ps = null;
	private ResultSet rs = null;

	private void setConnection() {
		try {
			Class.forName(DRIVER);
			conn = DriverManager.getConnection(URL,UID,PWD);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public ResultSet executeQuery(String sql, String[] param) {
		this.setConnection();
		try {
			ps = conn.prepareStatement(sql);
			if (ps != null) {
				for (int i = 0; i < param.length && param != null; i++) {
					ps.setString(i + 1, param[i]);
				}
			}
			rs = ps.executeQuery();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return rs;
	}

	public ResultSet executeQuery(String sql) {
		this.setConnection();
		try {
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return rs;
	}

	public int executeUpdate(String sql, String[] param) {
		int a = -1;
		this.setConnection();
		try {
			ps = conn.prepareStatement(sql);
			if (ps != null) {
				for (int i = 0; i < param.length && param != null; i++) {
					ps.setString(i + 1, param[i]);
				}
				a = ps.executeUpdate();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return a;
	}

	public int executeUpdate(String sql) {
		int a = -1;
		this.setConnection();
		try {
			ps = conn.prepareStatement(sql);
			a = ps.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return a;
	}
	public void close(){
		if(rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(ps!=null){
			try {
				ps.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(conn!=null){
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
驱动和用户密码这些你自己填

然后创建一个Servlet在post或是get方法里面写业务逻辑 调用我给你的DB类 网上这类的东西很多,
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@ page import="java.util.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>登录页面</title>
</head>
<body>
  <form name="loginForm" method="post" action="judgeUser.jsp">
    <table>
      <tr>
        <td>用户名:<input type="text" name="userName" id="userName"></td>
      </tr>
      <tr>
        <td>密码:<input type="password" name="password" id="password"></td>
      </tr>
      <tr>
        <td><input type="submit" value="登录" style="background-color:pink">  <input type="reset" value="重置" style="background-color:red"></td>     
      </tr>
    </table>
  </form>
</body>
</html>

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@ page import="java.util.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>身份验证</title>
</head>
<body>
  <%
    request.setCharacterEncoding("GB18030");
    String name = request.getParameter("userName");
    String password = request.getParameter("password");
    if(name.equals("abc")&& password.equals("123")) {
      
  %>
  <jsp:forward page="afterLogin.jsp">
     <jsp:param name="userName" value="<%=name%>"/>
  </jsp:forward>
  <%
   }
   else {
  %>
  <jsp:forward page="login.jsp"/>
  <%
   }
  %>
</body>
</html> 

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
 <title>登录成功</title>
</head>
<body>
  <%
   request.setCharacterEncoding("GB18030");
   String name = request.getParameter("userName");
   out.println("欢迎你:" + name);
  %>
</body>
</html> 

总共3个jsp文件,第一个是login.jsp,第2个是judge.jsp,第3个是afterLogin.jsp
 

上一个:JSP中如何在ifame点击button后提交的action出现在新的窗口中
下一个:谁有jsp做的图书馆管理系统数据库表啊

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,