答案:新手在写程序时,一定要胆大心细,而且要有耐心,不妥协,不懂就翻书,网上查资料,问朋友,坚决进行到底。最近一直凭着ASP的知识在摸索中前进,一跑坎坷,自不用说了。 言归正传。
建立一个登录系统,要求达到以下目的。
1、用户通过Bean来认证以及得到得到用户信息。
2、记录用户登录信息,如用户登录次数,最后登录时间。
3、记录操作日志。
未解决及疑惑的问题:
1、用户登录后的Session是否可以通过Bean来判断。
2、通过Bean调用ORACLE存储过程,返回select后的记录集。
操作步骤:
1、建立用户验证Bean:
public boolean checkUser() throws Exception {
boolean flag=false;
ResultSet rs=conn.executeQuery(getSql());
if(rs.next()){
userID =rs.getString("userID");
userName =rs.getString("userName");
userPWD =rs.getString("userPWD");
userUnit =rs.getString("userUnit");
userLoadTime =rs.getDate("userLoadTime");
userLoadNumeric=rs.getInt("userLoadNumber");
flag=true;
}
rs.close();
conn.closeConn();
return flag;
}
通过返回的值判定用户是否存在。
2、记录用户登录信息:
public void changeLoginInfo(String userID) throws Exception{
String sql="update SystemUserTable set UserLoadTime=sysdate,UserLoadNumber=UserLoadNumber+1 where userID='"+userID+"'";
conn.executeUpdate(sql);
}3、记录操作日志:
第一步,建立存储过程
create or replace procedure proc_writeNote(
description in varchar2,
wName in varchar2,
wIP in varchar2
)
is
begin
insert into Systemnote (Id,Description,Wname,Wip) values(Autoaddid.Nextval,description,wName,wIP);
commit;
end proc_writeNote;第二步、建立操作存储过程的方法(重写prepareCall()方法)
public CallableStatement prepareCall(String produce){
try {
conn = DriverManager.getConnection(DBUrl, UserID, UserPWD);
cstmt=conn.prepareCall(produce);
}
catch (SQLException ex) {
System.err.print("prepareCall():"+ex.getMessage());
}
return cstmt;
}第三步,执行存储过程
public void writeNote(String description,String wName,String wIP){
String sql="{call proc_writeNote(?,?,?)}";
try {
CallableStatement cstmt=conn.prepareCall(sql);
cstmt.setString(1, description);
cstmt.setString(2,wName);
cstmt.setString(3,wIP);
cstmt.executeUpdate();
}
catch (SQLException ex) {
System.out.print("writeNote():"+ex.getMessage());
}
}