1. 程式人生 > >Java Web學習(19):階段專案之使用JSP+JavaBean完成使用者登入

Java Web學習(19):階段專案之使用JSP+JavaBean完成使用者登入

Model1簡介

       Java Web應用程式的開發總體上來說有兩個模型就是Model1和Model2。Model1模型出現前,整個Web應用

的情況:幾乎全部由JSP頁面組成,JSP頁面接收處理客戶端請求,對請求處理後直接做出響應。這樣的弊端顯露無

疑:在介面層充斥著大量的業務邏輯的程式碼和資料訪問層的程式碼,Web程式的可擴充套件性和可維護性特別差。

       JavaBean的出現可以使JSP頁面中使用JavaBean封裝的資料或者呼叫JavaBean的業務邏輯程式碼,這樣大大提高

了程式的可維護性。

      Model1圖示:

      

      在Model1中,由Jsp頁面去呼叫Javabean。

      Javabean既可以封裝資料同時也可以封裝業務邏輯。

      Javabean一般把屬性設計為私有,使用setter和getter訪問屬性。

      Javabean就是符合某種設計規範的Java類。

專案案例

      使用JSP+JavaBean完成使用者登入功能。相關的程式碼提供出來,還有一部分的JS程式碼和圖片沒有提供。

      整個專案的目錄結構:

      

      JavaBean實體類Users:

<span style="font-size:18px;">package com.entity;

import java.io.UnsupportedEncodingException;

/**
 * 使用者實體類
 * @author Administrator
 * @date 2016年7月11日
 */
public class Users {
	//私有屬性
	private String username;
	private String password;
		
	//無參構造器
	public Users(){
			
	}

	//通過重構得到setter和getter方法
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) throws UnsupportedEncodingException {
		this.username = toUTF8(username);
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
			this.password = password;
	}
	
	private String toUTF8(String str) throws UnsupportedEncodingException {
	      return new String(str.getBytes("iso-8859-1"),"UTF-8");
	}

}</span>

      JavaBean業務邏輯類UsersDAO:

<span style="font-size:18px;">package com.dao;

import com.entity.Users;

/**
 * 使用者的業務邏輯類
 * @author Administrator
 * @date 2016年7月11日
 */
public class UsersDAO {
	
	//使用者登入方法
	public boolean usersLogin(Users u){
		if("admin".equals(u.getUsername())&&"123456".equals(u.getPassword())){
			return true;
		}else{
			return false;
		}
	}
}</span>

      login.jsp頁面原始碼:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <!-- Page title -->
<title>登入介面</title>
<!-- End of Page title -->
<!-- Libraries -->
<link type="text/css" href="css/login.css" rel="stylesheet" />
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/easyTooltip.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.7.2.custom.min.js"></script>
<!-- End of Libraries -->
</head>
<body>
     <div id="container">
          <div class="logo">
                 <a href="#"><img alt="" src="images/logo.png"></a>
          </div>
          <div id="box">
                 <form action="dologin.jsp" method="post">
                         <p class="main">
                                <label>使用者名稱:</label>
                                <input type="text" name="username" value="" />
                                <label>密碼:</label>
                                <input type="password" name="password" value="" />
                         </p>
                         <p class="space">
                                <input type="submit" value="登入" class="login" style="cursor: pointer;"> 
                         </p>
                 </form>
          </div>
     </div>
</body>
</html>

      login.css原始碼:

<span style="font-size:18px;">@import 'css3.css';

* {
	margin:0; padding:0;
}

body {
 position:relative;
 height:100%;
 background:#fff url('../images/loginbg.png') left top repeat-x;
 font-family:Tahoma, Arial, sans-serif;
}

img {
	border:0;
}

#container {
	width:960px;
	margin:0 auto;
}

#container .logo {
	width:230px;
	margin:240px auto 0;
}

#container #box {
 clear:both;
 float:none;
 width:70%;
 margin:50px auto 0;
}

p.main label {
 float:left;
 padding:5px;
 display:inline;
 margin-left:40px;
 font-size:13px;
 color:#000;
 margin-right:10px;
}

#box p {
 clear:both;
 float:none;
 width:100%;
}

p.main INPUT {
 background:url('../images/input.png') 0 0 repeat-x;
 border:1px solid #d3d3d3;
 color:#555;
 padding:5px;
 float:left;
 width:200px;
}

input.login {
 float:right;
 padding:3px 10px 3px 10px;
 color:#fff;
 font-size:12px;
 text-decoration:none;
 border:1px solid #555;
 background:url('../images/rep1.png') 50% 50% repeat-x;
 display:inline;
 margin-right:5px;
}

span {
 font-size:13px;
 color:#666;
}

.space {
 padding-top:15px;
}

span input {
 margin-left:125px;
 margin-right:5px;
 border:1px solid #111;
 background:#444;
 color:#fff;
}</span>

      dologin.jsp頁面原始碼:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>dologin頁面</title>
</head>
<body>
        <jsp:useBean id="loginUser" class="com.entity.Users" scope="page"></jsp:useBean>
        <jsp:useBean id="userDAO " class="com.dao.UsersDAO" scope="page"></jsp:useBean>
        
        <jsp:setProperty property="*" name="loginUser"/>
        
        <%
              //防止中文亂碼
      request.setCharacterEncoding("utf-8");
      
      //如果使用者和密碼都等於admin,則登入成功
      if(userDAO.usersLogin(loginUser)){
      
      //將使用者名稱封裝到session物件中
         session.setAttribute("loginUser", loginUser.getUsername());
         //驗證正確轉發到成功頁面
         request.getRequestDispatcher("login_success.jsp").forward(request, response);
         
      }
      else{
      //請求重定向到失敗頁面
         response.sendRedirect("login_failure.jsp");
      }
        %>
</body>
</html>

      login_success.jsp頁面原始碼:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <!-- Page title -->
<title>login_success頁面</title>
<!-- End of Page title -->
<!-- Libraries -->
<link type="text/css" href="css/login.css" rel="stylesheet" />
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/easyTooltip.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.7.2.custom.min.js"></script>
<!-- End of Libraries -->
</head>
<body>
        <div id="container">
     <div class="logo">
        <a href="#"><img src="images/logo.png" alt="" /></a>
     </div>
     <div id="box">
     <% 
            String loginUser = "";
            //防止使用者名稱為空
            if(session.getAttribute("loginUser")!=null){
                loginUser = session.getAttribute("loginUser").toString();
            }
      %>
      歡迎您<font color="red"><%=loginUser%></font>,登入成功!
     </div>
   </div>
</body>
</html>

      login_failure.jsp頁面原始碼:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <!-- Page title -->
<title>login_failure頁面</title>
<!-- End of Page title -->
<!-- Libraries -->
<link type="text/css" href="css/login.css" rel="stylesheet" />
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/easyTooltip.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.7.2.custom.min.js"></script>
<!-- End of Libraries -->
</head>
<body>
        <div id="container">
     <div class="logo">
        <a href="#"><img src="images/logo.png" alt="" /></a>
     </div>
     <div id="box">
            登入失敗!請檢查使用者或者密碼!<br>
            <a href="login.jsp">返回登入</a>   
     </div>
   </div>
</body>
</html>

      執行結果:

      登入介面:


      輸入admin和123456:


      輸入admin和123: