jsp

jsp技術(本質是一個servlet)html

jsp腳本和註釋java

jsp腳本:一、<%java代碼%>:翻譯到service方法內部web

               二、<%=java變量和表達式%>:翻譯到service方法內部out.print()數據庫

              三、<%!java代碼%>:翻譯成service的成員內容設計模式

<%
    int i=0;
     System.out.println(i);
     %>
     <%=i %>
     <%!
       String str ="nihao China";
     %>
     <%=str %>

 

jsp註釋:一、html註釋:<!--註釋內容--> ,可見範圍 jsp源碼、翻譯後的servlet、頁面 顯示html源碼服務器

               二、java註釋://單行註釋  /*多行註釋*/ ,可見範圍 jsp源碼 翻譯後的servletcookie

               三、jsp註釋:<%--註釋內容--%> ----- 可見範圍 jsp源碼可見session

註釋通常是給開發人員本身看的,因此選用可見範圍最少的註釋方法,用jsp註釋架構

jsp運行原理:jsp本質就是一個servletmvc

運行過程:jsp在第一次被訪問時會被Web容器翻譯成servlet,第一次訪問---->helloServlet.jsp---->helloServlet_jsp.java---->編譯運行

被翻譯後的servlet在Tomcat的work目錄中能夠找到

 jsp指令:page指令(通常系統本身寫好),errorPage和isErrorPage指令,錯誤調轉

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="/error.jsp"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true"%>

include指令:靜態包含(直接把網頁內容複製到本頁)

<%@ include file="/header.jsp" %>

taglib指令:標籤庫指令

jsp9大內置對象

out   request   response   config   page   pagecontext   application   session   exception

out:輸出流類型,有out緩衝區(默認8kb),裏面的東西再存到response緩衝區

aaaaaaaaaaaa
    <div>nihao</div>
    out.write("bbbbbbb");
    <%out.write("bbbbbbb");
    response.getWriter().write("cccccc");
    %>
    <%="dddddddd" %>

輸出順序爲 c a b d

pageContext:jsp頁面的上下文對象,一個域對象,能夠向指定的其餘域中存取數據

<%
     request.setAttribute("name", "zhangsan");
     pageContext.setAttribute("name", "lisi",pageContext.REQUEST_SCOPE);
     pageContext.setAttribute("name", "wangwu",pageContext.SESSION_SCOPE);
     pageContext.setAttribute("name", "wangrongchen",pageContext.APPLICATION_SCOPE);
    %>
    <%=request.getAttribute("name") %>
    <%=pageContext.getAttribute("name",pageContext.SESSION_SCOPE) %>
    <!-- findAttribute()若是域中有同名的key,會從小到大搜索域中的值 -->
    <%=pageContext.findAttribute("name") %>

四大域的做用範圍:

pageContext:當前jsp頁面

request域:一次請求

session域:一次會話

application域:整個web應用

jsp標籤:

動態包含(本質是跳轉)

<jsp:include page="/header.jsp"></jsp:include>

請求轉發

<jsp:forward page="/demo05.jsp"></jsp:forward>

EL技術:寫jsp頁面內部,減小jsp腳本的編寫

做用:從四大域中取出數據

<%
         pageContext.setAttribute("name", "張銳");
         request.setAttribute("name", "王榮成");
         session.setAttribute("name", "董斌");
         application.setAttribute("name", "韓凱");
        
     %>
     ${pageScope.name }
     ${requestScope.name }
     ${sessionScope.name }
     ${applicationScope.name }
     ${name }
<%
     request.setAttribute("name", "王榮臣");
     Student stu = new Student();
     stu.setId(1);
     stu.setName("王榮臣");
     stu.setFace(true);
     session.setAttribute("Student1", stu);
     Student stu2 = new Student();
     stu2.setId(2);
     stu2.setName("韓凱");
     stu2.setFace(true);
     Student stu3 = new Student();
     stu3.setId(3);
     stu3.setName("董斌");
     stu3.setFace(false);
     ArrayList<Student> studentlist = new ArrayList<Student>();
     studentlist.add(stu2);
     studentlist.add(stu3);
     application.setAttribute("StudentList", studentlist);
      %>
      ${name }
      ${Student1.name }
      ${StudentList[1].name }

EL11大內置對象(瞭解)

<%request.setCharacterEncoding("utf-8"); %>
     ${param.username }......${param.pwd }
     ${header['User-Agent'] }
<%
        Cookie cookie = new Cookie("name","aaa");
        response.addCookie(cookie);
     %>
     ${cookie.name.value }
<%
     Student s1 = new Student();
     s1.setName("小豬佩奇");
     session.setAttribute("s1", s1);
%>
     ${1+2 }
     <!-- empty判斷的是域中是否有該對象,若是有,返回false,若是沒有,返回true -->
     ${!empty s1 }
     ${s1==null?true:false }

JSTL技術:jsp標準標籤庫,業務邏輯功能(if和for),通常使用核心庫就能夠

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!-- test後面必須接true或false -->
    <c:if test="${1==1 }">
    xxxxxxxx
    </c:if>  
    <!-- 普通for循環 -->
    <c:forEach begin ="0" end="5" var="i">
        ${i }
    </c:forEach>
    <!-- 加強for -->
    <c:forEach items="${StudentList }" var="stu">
           ${stu.name }......${stu.face }
    </c:forEach>
    <%
    Student stu2 = new Student();
    stu2.setId(2);
    stu2.setName("韓凱");
    stu2.setFace(true);
    HashMap<String,Student> map= new HashMap<String,Student>();
       map.put("name", stu2);
       map.put("age", stu2);
       session.setAttribute("xiaonaigou", map);
       Map<Student,Map<String,Student>> m = new HashMap<Student,Map<String,Student>>();
       m.put(stu2,map);
       session.setAttribute("m", m);
    %>
    <!-- 加強for遍歷map集合 -->
    <c:forEach items="${xiaonaigou }" var="entry">
         ${entry.key }
         ${entry.value }
    </c:forEach>
    <!-- 加強for遍歷map中套用的map的集合 -->
    <c:forEach items="${m }" var="entry">
    ${entry.key}
         <c:forEach items="${entry.value }" var="entry1">
         ${entry1.key }
         ${entry1.value }
         </c:forEach>
    </c:forEach>

 

開發模式:開發過程當中總結出的「套路」,約定俗成的設計模式

web開發的設計模式:mvc

model:模型   javabean實體類   封裝數據

view:視圖   jsp   頁面顯示

controller:控制器   servlet   獲取數據---對數據進行封裝---傳遞數據--- 指派顯示的jsp頁面

javaEE的三層架構:服務器開發

web層:與客戶端交互

service層:業務處理

dao層:與數據庫進行交互

相關文章
相關標籤/搜索