摘录(jsp)(dao实现登陆验证)
2012-12-06 11:05 我是流氓兔~~ 阅读(754) 评论(0) 编辑 收藏 举报1.登录文件login.jsp
<%@ pagecontentType="text/html;charset=gb2312"%>
<table>
<form action=login_con.jspmethod=post>
<tr>
<tdcolspan="2">用户登陆</td>
</tr>
<tr>
<td>用户名:</td>
<td><input type="text"name="name"></td>
</tr>
<tr>
<td>密 码:</td>
<td><inputtype="password"name="password"></td>
</tr>
<tr>
<tdcolspan="2">
<inputtype="submit" value="登陆">
<inputtype="reset" value="重置">
</td>
</tr>
</table>
</form>
2.提交登录处理文件login_con.jsp
<%@ pagecontentType="text/html;charset=gb2312"%>
<%@ pageimport="org.test.factory.*"%>
<%
request.setCharacterEncoding("gb2312");
%>
<%//引入javaBean%>
<jsp:useBean id="perv" scope="request"class="org.test.vo.PersonVo"/>
<jsp:setProperty name="perv"property="*"/>
<%if(DAOFactory.getPersonDAOInstance().isLogin(perv))
{//DAOFactory.getPersonDAOInstance()返回了一个personDao的对象
//逻辑判断都在perosonDao里
//合法用户 forward标签形式跳转(服务端跳转,会话在一个请求范围内)
%><jsp:forwardpage="login_success.jsp"/><% else%><jsp:forwardpage="login_failure.jsp"/><%%>
3.登录成功欢迎页面login_success.jsp
<%@ pagecontentType="text/html;charset=gb2312"%>
<%//login.failure能够接收到request范围内的信息,所以这个id为perv的vo对像还是login_con.jsp中生成的那个%>
<jsp:useBean id="perv" scope="request"class="org.test.vo.PersonVo"/>
<h1>登录成功,欢迎<jsp:getPropertyname="perv"property="name"/></h1>
4.登录失败页面login_failure.jsp
<%@pagecontentType="text/html;charset=gb2312"%>
<h1>错误的用户名和密码!!</h1><br><ahref="login.jsp">重新登录</a>
5.库test的preson表结构及数据
CREATE TABLE `person` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(120) NOT NULL,
`password` varchar(120) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
INSERT INTO `person` (`id`, `name`, `password`) VALUES (1, 'york','123456');
6.VO类PersonVo.java
package org.test.vo;
import java.util.*;
public class PersonVo //表中所有字段
private String id;
private String name;
private String password;
//getter and setter
public void setId(Stringid)this.id = id; public String getId()return this.id;
}
public void setName(Stringname)this.name = name; public String getName()return this.name;
}
public voidsetPassword(String password)this.password = password; public StringgetPassword()return this.password;}
7.DO接口 PersonDAO.java
package org.test.dao;
import org.test.vo.*;//包含前面的vo类
public interface PersonDAO //一个验证是否登录的方法
public booleanisLogin(PersonVo pv);
};
8.数据库连接类 DataBaseConnection.java
package org.test.dbc;
import java.sql.*;
public class DataBaseConnection //定义数据库属性
private final StringDBDRIVER = "com.mysql.jdbc.Driver";
private final String DBURL ="jdbc:mysql://localhost/test";
private final String DBUSER ="root";
private final StringDBPASSWORD = "";
private Connection conn =null; //数据库连接对象
//在构造方法中连接数据库
publicDataBaseConnection()try{Class.forName(DBDRIVER);
conn =DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);//创建连接;catch(Exception e)System.out.println(e); }
//返回连接对象
publicConnection getConnection()return this.conn;
}
//关闭数据库连接
public voidclose()try{
conn.close();catch(Exception e)System.out.println(e); }
};
9.DO实现类 PersonDAOImpl.java
package org.test.daoimpl;
import java.sql.*;
import org.test.dao.*;
import org.test.dbc.*;
import org.test.vo.*;
public class PersonDAOImpl implements PersonDAO publicboolean isLogin(PersonVo pv)boolean flag = false;
//声明一个数据库操作对象
PreparedStatement pstmt = null;ResultSet rs = null;String sql = null;
DataBaseConnection dbc = null;//我们的DB连接类的实例
dbc = new DataBaseConnection();
sql= "SELECT name FROM person WHERE name=? and password=?";
try{
pstmt = dbc.getConnection().prepareStatement(sql);
pstmt.setString(1,pv.getName());
pstmt.setString(2,pv.getPassword());
rs = pstmt.executeQuery();//执行查询
if(rs.next())//有数据,则合法用户
flag = true;
pv.setName(rs.getString(1));
//System.out.println("///////////////");
}
//关闭资源
rs.close();
pstmt.close();catch(Exception e)System.out.println(e);finally// 最后一定要保证数据库已被关闭
dbc.close() ;//System.out.println(flag);
return flag;};
10.DAO工厂类 DAOFactory.java
package org.test.factory;
import org.test.dao.*;
import org.test.daoimpl.*;
public class DAOFactory//static方法,通过类名调用
publicstatic PersonDAO getPersonDAOInstance()return new PersonDAOImpl();//用一个接口的实现类生成一个接口的类};