新手在寫程序時,一定要膽大心細,而且要有耐心,不妥協,不懂就翻書,網上查資料,問朋友,堅決進行到底。
最近一直憑著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());
}
}