java--jsp(Java Server Page)_3

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>JSP開發的幾代技術</title>
  </head>

  <body>
    <h2>JSP開發的幾代技術</h2>
    <a href="jsps/login1.jsp">第一代JSP開發技術1:純JSP技術</a><br/><br/><br/>
    <a href="jsps/login2.jsp">第一代JSP開發技術2(model1):JSP+EJB技術</a>
    <h4>第二代JSP開發技術(model2):MVC框架=JSP+JaveBean+Servlet技術</h4>
    <hr/>
    <h2>以下演示jsp中bean標記的使用</h2>
    1、聲明JavaBean對像-必須使用完整類名<br/>
    <jsp:useBean id="u" class="cn.hncu.ejb.User" scope="session"></jsp:useBean>
    <!-- 以上聲明相當於:
        User u = new User(); 
        session.setAttribute("u",u);
        scope的可選值爲:page|request|session|application
    -->
    <%
        u.setName("jack");
        out.println(u.getName());
     %>
    <br/>
    2、訪問JavaBean的屬性<br/>
    <jsp:getProperty property="name" name="u"/><br/>
    <jsp:setProperty property="age" name="u" value="23"/>
    <jsp:getProperty property="age" name="u"/>
    <h4> 使用"jsp:setProperty"標記爲birthday(複雜類型)設置屬性:</h4>
    <!--注意,如果僅僅只把User中的birthDay變量改爲birth,下面的屬性名不要用"birth",
             因爲底層是根據下面property中的取值生成對應的setter-getter方式名,再到JavaBean中調用對應方式。  
    < jsp:setProperty property="birth" name="u" value="2016-09-26"/>是錯的
     -->
    <jsp:setProperty property="birthDay" name="u" value="2016-09-26"/>
    <jsp:getProperty property="birthDay" name="u"/>
    <%  out.println( u );  %> <br/>

    3、通過param屬性給JavaBean賦值<br/> 
    <jsp:useBean id="u2" class="cn.hncu.ejb.User" scope="session"></jsp:useBean>
    <form action="jsps/a.jsp">
        姓名1:<input type="text" name="nm"/><br/>
        姓名2:<input type="text" name="name"/><br/>
        年齡:<input type="text" name="age"/><!-- 提供字符串到int類型的轉換 --><br/>
        <input type="submit" value="註冊"/>
    </form>
  </body>
</html>

這裏寫圖片描述

使用JSP的原則
在項目的開發中(除非這個公司是個菜鳥公司),JSP只用做展示,所有的用戶操作,都是從JSP頁面將請求發給Servlet處理,Servet在處理完成後,再轉發給其他JSP頁面。這就是基本的MVC設置模式,也即Model1。
在JSP頁面中,一般不會出現<% ..%>這樣的java代碼塊。需要輸出時使用jsp的自定義的標籤來處理,這樣JSP就更像是HTML頁面了。(此技術後面會講)。
第一代JSP開發技術1:純JSP技術

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>

  <body>
  <!-- 處理表單的JSP可以用單獨的JSP來實現 -->
    <!-- 
    <form action="login1.jsp">提交給自己處理
     -->
    <form action="login1Serv.jsp">
        Name:<input type="text" name="name" /><br/>
        <input type="submit" value="登錄">
    </form>
  </body>
</html>

登陸失敗
這裏寫圖片描述

這裏寫圖片描述

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>

  <body>
  <!-- 處理表單的JSP可以用單獨的JSP來實現,可以寫在login1.jsp頁面中 -->
    <%
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("name");
        if(name!=null && name.startsWith("hncu")){//在這裏訪問後臺(用普通類寫或直接在這裏寫訪問後臺的代碼)
            session.setAttribute("user", name);
            response.sendRedirect(request.getContextPath()+"/jsps/suc.jsp");
        }else{
            out.println("登錄失敗!");
        }
    %>

  </body>
</html>

登陸成功
這裏寫圖片描述
這裏寫圖片描述

第一代JSP開發技術2(model1):JSP+EJB技術

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>

  <body>
  <!-- 處理表單的JSP可以用單獨的JSP來實現 -->
    <form action="login2Serv.jsp">
        Name:<input type="text" name="name" /><br/>
        <input type="submit" value="登錄">
    </form>
  </body>
</html>

登陸失敗
這裏寫圖片描述

這裏寫圖片描述

<%@page import="cn.hncu.ejb.User"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>

  <body>
  <!-- 處理表單的JSP可以用單獨的JSP來實現 -->
    <%
        request.setCharacterEncoding("utf-8");
        //EJB = 企業級JavaBean = 包含業務邏輯的JavaBean
        //把用戶提交的登錄參數收集並封裝成JavaBean 
        String name = request.getParameter("name");
        User u = new User();
        u.setName(name);

        //調用EJB中的業務邏輯層代碼
        User user = u.login();
        if(user!=null){//在這裏訪問後臺(用普通類寫或直接在這裏寫訪問後臺的代碼)
            session.setAttribute("user", user);
            response.sendRedirect(request.getContextPath()+"/jsps/suc.jsp");
        }else{
            out.println("登錄失敗!");
        }

    %>

  </body>
</html>

登陸成功

這裏寫圖片描述

這裏寫圖片描述

第二代JSP開發技術(model2):MVC框架=JSP+JaveBean+Servlet技術:http://blog.csdn.net/xanlv/article/details/52822352

jsp中bean標記的使用
JavaBean簡介
JavaBean是一種可重用的軟件組件。
一個JavaBean具有以下標準:
        必須是一個公共的類。
        一個公開的無參的構造。
        getXxx和setXxx方法。
在JSP中訪問JavaBean的語法:
聲明JavaBean對像-必須使用完整類名
        < jsp:useBean id=”u” class=”cn.hncu.ejb.User” scope=”session”>< /jsp:useBean>
注:一般情況下,我們保留< jsp:useBean/>的body部分爲空,如果不爲空,則只有初始化此Bean時執行,如:
        < jsp:useBean id=”u” class=”cn.hncu.ejb.User” scope=”session”>
                這是body部分,只會在初始化時執行一次
        < /jsp:useBean>
訪問JavaBean的屬性
        < jsp:setProperty property=”age” name=”u” value=”23”/>
        < jsp:getProperty property=”age” name=”u”/>
        也可以在頁面上使用Java代碼直接訪問它的屬性和其他方法。
JavaBean的範圍
JavaBean的scope屬性決定的Bean的範圍,默認爲page範圍。
當聲明瞭一個Bean並將它放到某個範疇之後,在同一個範圍內再次使用< jsp:useBean../>將不再創建。而是直接給你返回已經創建過的Bean的實例。此過程可以通過查看容器翻譯的源代碼得知。
通過param屬性給JavaBean賦值:
JavaBean可以接收用戶通過參數提交的數值,並直接封裝到JavaBean中。
以下JavaBean的屬性全部爲String類型。
以下接收用戶的三個參數直接賦值:注意保持與參數指定的名相同
< jsp:setProperty property=”name” name=”u” param=”nm”/>
一次設置全部屬性:
< jsp:setProperty name=”u2” property=”*”/>注意不能使用param
注意:一次設置全部的參數,其內部通過反射加以實現,所以,
在你向Bean傳遞參數時,必須與JavaBean的屬性名高度一致。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>設置bean中的屬性</title>
  </head>

  <body>
    <h2>演示jsp中bean標記的使用</h2>
    <h4> 利用請求表單上傳的參數來設置bean中的屬性 </h4>
    <jsp:setProperty property="name" name="u" param="nm"/>
    u:${u}<br/><br/>
    <h4>自動裝配bean: 把表單參數名與bean中屬性名一一對應地進行讀參且設置屬性</h4>
    <jsp:setProperty name="u2" property="*"/>
    u2:${u2}
  </body>
</html>

這裏寫圖片描述

這裏寫圖片描述

調用JavaBean的其他方法
在JavaBean中除了可以通過標籤調用它的的屬性之外,還可以直接在scriptlet直接調用它的其他方法。
這種方式比較適合較小的項目。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>

  <body>
    歡迎你,<%=session.getAttribute("user")%> <br/>
    <h2>以下是用戶相應的操作界面</h2>
    <h2>以下是用戶相應的操作界面</h2>

  </body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章