logIn.jsp 负责输入表格,然后提交到连接数据库检查的页面
logOut.jsp 负责注销(登出)操作
checkLogIn.jsp 负责连接JDBC, 检查login_index.jsp提交来的值,是否在数据库中
welcome.jsp 负责输出成功登录或登录失败的信息
一:SQL脚本:
DROP TABLE userlogin;
CREATE TABLE userlogin
(
userid VARCHAR2(30),
name VARCHAR2(30) NOT NULL,
password VARCHAR2(32) NOT NULL,
CONSTRAINT userlogin_userid_pk PRIMARY KEY(userid)
);
INSERT INTO userlogin(userid,name,password) VALUES('admin','adminstrator','admin');
commit;
二: logIn.jsp:接收用户输入信息
<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head>
<title> session-login </title>
</head>
<body>
<%
if(session.isNew())//判断是否已分配session
{
%>
<h2>欢迎新用户访问!</h2>
<%
}
else
{
%>
<h2>您是老用户,请登录</h2>
<h4>(您已经在本站点停留了<%=(session.getLastAccessedTime()-session.getCreationTime())/1000 %>秒)</h4> <!--计算session创建时间-->
<%
}
%>
<form action="checkLogIn.jsp" method="post">
<table border="1" width="50%">
<tr>
<td colspan="2">
用户登录
<td>
<tr>
<tr>
<td>用户名</td>
<td><input type="text" name="user"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="提交">
<input type="reset" value="重置">
<td>
<tr>
</table>
</form>
</body>
</html>
三: checkLogIn.jsp:连接数据库后,检查输入的登录信息是否正确
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title> checkLogIn </title>
</head>
<body>
<%!
private static final String DBDriver = "oracle.jdbc.driver.OracleDriver";//驱动
private static final String DBURL = "jdbc:oracle:thin:@localhost:1521:ORCL";//URL命名规则:jdbc:oracle:thin:@IP地址:端口号:数据库实例名
private static final String DBUser = "scott";
private static final String DBPassWord = "890307";
%>
<%
Connection con = null; //数据库连接状态
Statement st = null; //数据库容器
ResultSet res = null; //查询结果
boolean flag = false ; //通过数据库匹配标识
String name_checked = null; //检查通过的用户名
String u = ""; //从登陆页面获得的“用户名”
String p = ""; //从登陆页面获得的“密码”
%>
<%
try {
//连接
Class.forName(DBDriver);//加载数据库驱动
con = DriverManager.getConnection(DBURL, DBUser, DBPassWord);//连接
%>
<!-- 测试数据库连接 <h2>Debug_已连接 <%=con%></h2> -->
<%
st = con.createStatement(); //实例化
u = request.getParameter("user"); //从上级页面获得的用户名
p = request.getParameter("password"); //从上级页面获得的密码
String sql = "SELECT name FROM userlogin WHERE userid IN ('"+ u + "')" + " AND password IN ('"+p+"')";//组装SQL语句
System.out.println(sql);//执行上述设置的sql查询语句
res = st.executeQuery(sql);
if(true == res.next())//只有查询得到结果才能进入循环
{
flag = true;
name_checked = res.getString(1); //获得查询出的name
%>
<h3>Debug_数据库查询结果 <%=name_checked%> </h3>
<%
}
} catch (Exception e) {
System.out.println(e);
}finally{
//关闭连接
try{
res.close();//依次关闭
st.close();
con.close();
}catch(Exception e)
{
}
}
%>
<%
if(true == flag)
{
session.setAttribute("uname",u);
%>
<h2>登陆成功, 3秒内若没有跳转,<a href="welcome.jsp">请点击此处</a></h2>
<%
response.setHeader("refresh","3;URL=welcome.jsp");
}
else
{
%>
<h2>登录失败 <a href="logIn.jsp">点此处重新登录</a></h2>
<%
}
%>
</body>
</html>
四:welcome.jsp 显示登陆成功或失败
<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head>
<title> welcome </title>
</head>
<body>
<%
String sa = (String)session.getAttribute("uname");
if(null != sa && !sa.equals("") ) //null是防止NullPointer,如果session设置成功,就不是空值
{
%>
<h2> 登录成功 ,欢迎 <%=sa%> 使用 </h2>
<br>
<h2> <a href="logOut.jsp">注销按钮</a> </h2>
<%
}
else
{
%>
<h2>还未登录 <a href="logIn.jsp">点此处登录</a></h2>
<%
}
%>
</body>
</html>
五:logOut.jsp 注销(登出)
<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head>
<title> logOut </title>
</head>
<body>
<br><br>
<%
session.invalidate();
response.setHeader("refresh","3;URL=logIn.jsp");
%>
<h2>已经注销成功, 3秒内若没有跳转,<a href="logIn.jsp">请点击此处</a></h2>
</body>
</html>