20120711 J2EE 程式設計九

1.登入
使用 jsp 來建立登入的網頁,並做簡單的驗證。
login/index.html

<html>
  <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body bgcolor='skyblue'>
    <a href='../index.html'> 回上一頁 </a><hr>
    登入
    <form name='f1' method='post' action='check.jsp'>

      帳號: <input type='text' name='act'> </br>
      密碼: <input type='password' name='pwd'> </br></br>

      <input type='reset' value='全部清空'>
      <input type='submit' value='確認送出'> <br>
    </form>
  </body>
</html>

login/check.jsp

<%
  String act = request.getParameter("act");
  String pwd = request.getParameter("pwd");
   if ( act.equalsIgnoreCase("test") && pwd.equals("1234"))
{
response.sendRedirect("wellcome.html");
}else{
response.sendRedirect("error.html");
}
%>


2.登出
利用session來控制登出登入
a.登入畫面
b.按確認送出後,會傳資料到check.jsp來驗證帳號密碼。
c.確認帳密正確後,會導到 wellcome.jsp。可按超連結登出按鈕登出回到登入畫面。

wellcome.jsp
<%
   if (session.getAttribute("uid") == null){
      response.sendRedirect("error.html");
   }
%>
//先印出帳號,然後加上字串" 你好!歡迎光臨"
<%= session.getAttribute("uid")%> 你好!歡迎光臨</br></br>
<a href='./logout.jsp'>登出</a><br>
<form name='logout' method='post' action='logout.jsp'>
<input type='submit' value='登出'>
</form>


d.若輸入錯誤會導到 error.html。按重新輸入會在回到登入畫面。
error.html
帳號或密碼錯誤
<a href='index.html'>重新輸入</a>


3.用檔案的方式來驗證帳號密碼
a.先建立一個包含帳號密碼的 txt 檔案,帳密用逗號分隔,一個帳密一行。
b.先讀到檔案後,列印在螢幕上做測試
check.jsp 測試版
//這裡必須先匯入 java.io.*

<%@ page contentType="text/html; charset=UTF-8" import="java.io.*" %>
<%
   String act = request.getParameter("act");
   String pwd = request.getParameter("pwd");
//檔案必須為絕對路徑,否則讀不到。必須在\後面再加一個\,因為\在 Java是跳脫字元。
   File f = new File(
"C:\\Program Files\\Apache Software Foundation\\Tomcat 7.0\\webapps\\jamespcschool\\login_session_io\\employee.txt");
   FileReader fr = new FileReader(f);
   BufferedReader br = new BufferedReader(fr);
//這裡先讀一行,因為第一航有時會被windows加入3個字元造成亂碼。所以可以利用第一 來當註解,這裡先讀掉第一行,後面才開始進入迴圈。
   String s = br.readLine();
   String[] input = null;
   boolean isFound=false;
   while ( (s=br.readLine()) != null){
//下面一行是作為測試是否可以讀到檔案然後顯示在楊牧上。
out.print(s + "<br>");
   }
測試結果
c.加入迴圈及判斷式來驗證號密碼
check.jsp 完整版
<%@ page contentType="text/html; charset=UTF-8" import="java.io.*" %>
<%
   String act = request.getParameter("act");
   String pwd = request.getParameter("pwd");
   File f = new File("C:\\Program Files\\Apache Software Foundation\\Tomcat 7.0\\webapps\\jamespcschool\\login_session_io\\employee.txt");
   FileReader fr = new FileReader(f);
   BufferedReader br = new BufferedReader(fr);
   String s = br.readLine();
   String[] input = null;
   boolean isFound=false;
   while ( (s=br.readLine()) != null){
// out.print(s + "<br>");   //上面作測試的 mark掉
//這裡是用將逗號作為分隔點,然後將帳號及密碼分別放入陣列 input[0] & input[1]。
input =s.split(",");
//     out.print(input[0] + "_" +input[1]);
   if ( act.equalsIgnoreCase(input[0]) && pwd.equals(input[1]))
{
session.setAttribute("uid",act);
//用布林值來控制下面的 if  是要進入 wellcome  還是 error。
isFound = true;
}//if
   }//while
// 這裡的  if (isFound) 就是 if ( isFound = true )。因為 if ( ) 裡面的條件是要成立,就是 true的意思。
      if (isFound){
response.sendRedirect("wellcome.jsp");
}else{
response.sendRedirect("error.html");
   }//if
%>

No comments: