?? 第5章(2).txt
字號:
sql=con.createStatement();
String condition="SELECT * FROM verify WHERE 帳號 = "+"'"+account+"'";
rs =sql.executeQuery(condition);
while(rs.next())
{ String n=rs.getString("帳號");
String s=rs.getString("密碼");
if(account.equals(n)&&secret.equals(s))
{ //將帳號和密碼存入session對象,以備在輸入界面:inputMessage.jsp中使用:
session.setAttribute("account",account);
session.setAttribute("secret",secret);
//為了防止客戶瀏覽器限制了Cooker的使用,需對連接進行重定向處理:
String s1=response.encodeRedirectURL("inputMessage.jsp");
String s2=response.encodeRedirectURL("inputResult.jsp");
//連接到基本信息輸入頁面:
response.sendRedirect(s1);
}
}
if(!(session.isNew()))
{ out.print("<BR>您輸入的帳號或密碼不正確"+account+":"+secret);
}
}
catch(SQLException e1) {}
%>
<BR><A HREF="main.jsp">返回主頁</A>
</FONT>
</BODY>
</HTML>
基本信息輸入頁面(效果如圖5.45所示)
inputMessage.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML>
<BODY bgcolor=pink ><Font size=1>
<P>在該頁面輸入若干個學生的基本信息,<BR>或直接連接到成績輸入頁面。
<%!//處理字符串的一個常用方法:
public String getString(String s)
{ if(s==null) s="";
try {byte a[]=s.getBytes("ISO-8859-1");
s=new String(a);
}
catch(Exception e)
{
}
return s;
}
%>
<% //為了防止客戶瀏覽器限制了Cooker的使用,需對連接進行重定向處理:
String s1=response.encodeRedirectURL("inputMessage.jsp");
String s2=response.encodeRedirectURL("inputResult.jsp");
%>
<% //為了防止客戶直接進入該頁面,首先從session對象獲取密碼和帳號信息:
String account="",secret="";
if(session.isNew())
{//如果直接進入該頁面就再連接到登錄頁面:
response.sendRedirect("login.jsp");
}
else
{ account=(String)session.getAttribute("account");
secret=(String)session.getAttribute("secret");
secret=getString(secret);
account=getString(account);
}
//連接到數據庫驗證帳號和密碼:
Connection con=null;
Statement sql=null;
ResultSet rs=null;
boolean boo=false;
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException event){}
try
{con=DriverManager.getConnection("jdbc:odbc:manage","","");
sql=con.createStatement();
String condition="SELECT * FROM verify WHERE 帳號 = "+"'"+account+"'";
rs =sql.executeQuery(condition);
while(rs.next())
{ String n=rs.getString("帳號");
String s=rs.getString("密碼");
if(account.equals(n)&&secret.equals(s))
{boo=true; break;
}
}
}
catch(SQLException e1) {}
//如果帳號密碼正確,就顯示輸入學生基本信息的表單界面:
if(boo)
{out.print("<FORM action= "+s1+" method=post>");
out.print("<P>輸入學生的基本信息:");
out.print("<BR>學號:");
out.print("<Input type=text name=number1>");
out.print("<BR>姓名:");
out.print("<Input type=text name=name>");
out.print("<BR>專業:");
out.print("<Input type=text name=zhuanye>");
out.print("<BR>年級:");
out.print("<Input type=text name=grade>");
out.print("<BR> <Input type=submit value=提交>");
out.print("</FORM>");
}
else
{response.sendRedirect("login.jsp");
}
%>
<% //獲取基本信息存入數據庫中的"基本信息"表中:
String number1=request.getParameter("number1"),
name =request.getParameter("name"),
zhuanye=request.getParameter("zhuanye"),
grade =request.getParameter("grade");
if(number1==null)
{number1="????????";
}
number1=getString(number1);
number1=number1.trim();
name =getString(name);
zhuanye=getString(zhuanye);
grade =getString(grade);
String basicmessage=
"INSERT INTO 基本信息 VALUES"+"("+"'"+number1+"','"+name+" ',' "+
zhuanye+" ',' "+grade+" ' "+")";
if(!(number1.startsWith("?")))
{ //首先查找基本信息表中是否已存在該學生的信息:
rs=sql.executeQuery("SELECT * FROM 基本信息 WHERE 學號 ="+" '"+number1+"' " );
//如果該學號的學生已經存在,就轉入成績輸入頁面:
boolean line=rs.next();
//通過line判斷結果集是否有記錄
if(line==true)
{ out.print("該考號已經存在,請再錄入其它學生的基本信息");
out.print("<BR>也可以點擊按鈕:進入成績錄入頁面");
//顯示該生的基本信息:
out.print("<BR>學號"+rs.getString(1)) ;
out.print("<BR>姓名"+rs.getString(2)) ;
out.print("<BR>專業"+rs.getString(3)) ;
out.print("<BR>年級"+rs.getString(4)) ;
}
//如果該學號的學生不存在,就將信息寫入基本信息表,再轉入成績輸入頁面:
else
{sql.executeUpdate(basicmessage);
out.print("<BR>該學生的信息已錄入成功,請再錄入其它學生的基本信息");
out.print("<BR>也可以點擊按鈕:進入成績錄入頁面");
}
}
else
{out.print("必須輸入學號,學號不可以用?開頭");
}
con.close();
%>
<FORM action=<%=s2%>>
<P>點擊按鈕連接到學生成績輸入頁面:
<BR><Input type="submit" value="連接到學生成績輸入頁面">
<BR><A HREF="main.jsp">返回主頁</A>
</BODY>
</HTML>
成績錄入頁面(效果如圖5.46所示)
inputResult.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML>
<BODY bgcolor=yellow ><Font size=1>
<%!//處理字符串的一個常用方法:
public String getString(String s)
{ if(s==null) s="";
try {byte a[]=s.getBytes("ISO-8859-1");
s=new String(a);
}
catch(Exception e)
{ }
return s;
}
%>
<% String s1=response.encodeRedirectURL("inputMessage.jsp");
String s2=response.encodeRedirectURL("inputResult.jsp");
%>
<% //為了防止客戶直接進入該頁面,首先從session對象獲取密碼和帳號信息:
String account="",secret="";
if(session.isNew())
{//如果直接進入該頁面就連接到登錄頁面:
response.sendRedirect("login.jsp");
}
else
{ account=(String)session.getAttribute("account");
secret=(String)session.getAttribute("secret");
secret=getString(secret);
account=getString(account);
}
//連接到數據庫驗證帳號和密碼:
Connection con=null;
Statement sql=null;
ResultSet rs=null;
boolean boo=false;
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException event){}
try
{con=DriverManager.getConnection("jdbc:odbc:manage","","");
sql=con.createStatement();
String condition="SELECT * FROM verify WHERE 帳號 = "+"'"+account+"'";
rs =sql.executeQuery(condition);
while(rs.next())
{ String n=rs.getString("帳號");
String s=rs.getString("密碼");
if(account.equals(n)&&secret.equals(s))
{boo=true; break;
}
}
}
catch(SQLException e1) {}
//如果帳號密碼正確,就顯示輸入成績的表單界面:
if(boo)
{out.print("<P>輸入學生的考試科目、成績等信息:");
out.print("<FORM action="+s2+" method=post>");
out.print("<BR>學號:");
out.print("<Input type=text name=number2>");
out.print("<BR>科目:");
out.print("<Input type=text name=subject>");
out.print("<BR>成績:");
out.print("<Input type=text name=result>");
out.print("<BR> <Input type=submit value=提交>");
out.print("</FORM>");
}
else
{response.sendRedirect("login.jsp");
}
%>
<% String number2=request.getParameter("number2"),
subject=request.getParameter("subject"),
result=request.getParameter("result");
if(number2==null)
{number2="########";
}
number2=getString(number2);
subject=getString(subject);
result=getString(result);
number2=number2.trim();
//從"基本信息"表中查找學號是nunumber2的記錄:
String basicmessage=
"SELECT * FROM 基本信息 WHERE 學號 = "+" '"+number2+"'";
try { sql=con.createStatement();
rs=sql.executeQuery(basicmessage);
boolean line=rs.next();
//通過line判斷結果集是否有記錄,
//如果沒有該學生的基本信息就返回提示:
if(line==false)
{out.print("你還沒有輸入成績呢,");
out.print("如果你輸入的學號不在<BR>學生的基本信息表中,");
out.print("請點擊按鈕:連接到學生<BR>基本信息輸入頁面.");
}
else
{ //顯示該生的基本信息:
out.print("<BR>學號"+rs.getString(1)) ;
out.print("<BR>姓名"+rs.getString(2)) ;
out.print("<BR>專業"+rs.getString(3)) ;
out.print("<BR>年級"+rs.getString(4)) ;
String resultmessage=
"INSERT INTO 成績 VALUES"+"("+"'"+number2+"','"+subject+" ','"+result+"' "+")";
sql.executeUpdate(resultmessage);
out.print("<BR>成績已被錄入");
}
}
catch(SQLException e)
{out.print("<BR>"+subject+"該課程的成績已經存在<BR>不允許重復錄入");
}
con.close();
%>
<FORM action=<%=s1%>>
<P>點擊按鈕連接到學生信息輸入頁面:
<BR><Input type="submit" value="連接到學生基本信息輸入頁面">
</FORM>
</BODY>
</HTML>
成績查詢頁面(效果如圖5.47所示)
inquire.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML>
<BODY bgcolor=orange ><Font size=1>
<FORM action="" Method=post>
輸入學生的學號:
<Input type=text name=number>
<Input type=submit name=g vale=提交>
</FORM>
<%! Connection con=null; //聲明一個共享的連接對象
%>
<% //獲取學號:
String studentNumber=request.getParameter("number");
if(studentNumber==null)
{studentNumber="?";
}
byte b[]=studentNumber.getBytes("ISO-8859-1");
studentNumber=new String(b);
Statement sql=null;
ResultSet rs=null;
if(con==null)
{ try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e)
{out.print(e);
}
try {con=DriverManager.getConnection("jdbc:odbc:manage","","");
String condition="SELECT * FROM 成績 WHERE 學號 = "+"'"+studentNumber+"'";
rs =sql.executeQuery(condition);
}
catch(SQLException e)
{out.print(e);
}
}
else
{ synchronized(con)
{ try { sql=con.createStatement();
String condition="SELECT * FROM 成績 WHERE 學號 = "+"'"+studentNumber+"'";
rs =sql.executeQuery(condition);
}
catch(SQLException e)
{out.print(e);
}
}
}
try { out.print("<Table Border>");
out.print("<TR>");
out.print("<TH width=100>"+"學號");
out.print("<TH width=100>"+"課程名稱");
out.print("<TH width=50>"+"成績");
out.print("</TR>");
while(rs.next())
{ out.print("<TR>");
String number=rs.getString(1);
out.print("<TD >"+number+"</TD>");
String subjectName=rs.getString(2);
out.print("<TD >"+subjectName+"</TD>");
String chengji=rs.getString("成績");
out.print("<TD >"+chengji+"</TD>");
out.print("</TR>") ;
}
out.print("</Table>");
}
catch(SQLException e1) {}
%>
<BR><A HREF="main.jsp">返回主頁</A>
</FONT>
</BODY>
</HTML>
修改密碼頁面(效果如圖5.48所示)
modifySecret.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML>
<BODY bgcolor=pink ><Font size=1>
<P>修改密碼,密碼長度不能超過30個字符:
<FORM action="" Method="post">
<BR>輸入您的帳號:
<BR><Input type=text name="account">
<BR>輸入您的密碼:
<BR><Input type=password name="secret">
<BR>輸入您的新的密碼:
<BR><Input type=text name="newSecret1">
<BR>請再輸入一次新密碼:
<BR><Input type=text name="newSecret2">
<BR><Input type=submit name="g" value="提交">
</FORM>
<%!//處理字符串的一個常用方法:
public String getString(String s)
{ if(s==null) s="";
try {byte a[]=s.getBytes("ISO-8859-1");
s=new String(a);
}
catch(Exception e)
{ }
return s;
}
%>
<% //獲取提交的帳號:
String account=request.getParameter("account");
account=getString(account);
//獲取提交的密碼:
String secret=request.getParameter("secret");
secret=getString(secret);
//獲取提交的新密碼:
String newSecret1=request.getParameter("newSecret1");
newSecret1=getString(newSecret1);
//獲取提交的新密碼:
String newSecret2=request.getParameter("newSecret2");
newSecret2=getString(newSecret2);
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException event){}
//查詢數據庫信息,驗證身份:
Connection con=null;
Statement sql=null;
ResultSet rs=null;
boolean modify=false;
boolean ifEquals=false;
ifEquals=(newSecret1.equals(newSecret2))&&(newSecret1.length()<=30);
if(ifEquals==true)
{try
{ con=DriverManager.getConnection("jdbc:odbc:manage","","");
sql=con.createStatement();
String condition="SELECT * FROM verify WHERE 帳號 = "+"'"+account+"'";
rs =sql.executeQuery(condition);
while(rs.next())
{ String n=rs.getString("帳號");
String s=rs.getString("密碼");
if(account.equals(n)&&secret.equals(s))
{ //修改密碼:
modify=true;
out.print("您的密碼已經更新");
String c=
"UPDATE verify SET 密碼 = "+"'"+newSecret1+"'"+" WHERE 帳號 = "+"'"+account+"'";
rs =sql.executeQuery(c);
}
}
}
catch(SQLException e1) {}
}
else
{ out.print("你兩次輸入的密碼不一致或長度過大");
}
if(modify==false&&ifEquals==true)
{ out.print("<BR>您沒有輸入密碼帳號或<BR>您輸入的帳號或密碼不正確"+account+":"+secret);
}
%>
</FONT>
</BODY>
</HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -