国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

jsp用法和代碼例子,和解析跳轉的過程

2019-11-14 15:30:15
字體:
來源:轉載
供稿:網友


jsp :

     生命周期 :
            1 先執行當前類的構造方法
            2 再執行init()方法
            3 執行service()/doGet()方法
            4 關閉的時候執行destroy()方法

   jsp 是javaServletPage的縮寫
   
   jsp 的本質,是一個Servlet,是個特殊的java文件
   Servlet : 平常的.java類,繼承于HttpServlet類,且,必須覆寫它的service()或doGet()方法
    
   jsp 是在html中寫java語句

   jsp 在tomcat運行時的解析過程 :
    
        **.jsp ---> tomcat 解析掉**.jsp中的<% %>,<%@ %>,<%= %>,<%! %>,并生成java(servlet)文件 --- > **.java ---> javac編譯,生成**.class ---> **.class --->加載到jvm虛擬機,解析出一個虛擬的html表---->瀏覽器顯示虛擬的html表--->當我們提交的時候,是在瀏覽器去找的,加載到jvm虛擬機里面的**.class(servlet文件)--->再執行操作

四種形式 :
        <% %> , <%! %> , <%@ %> , <%= %>
    
    1 <% %> : //里面可以寫任意Java代碼  就是doGet()方法 或Service()方法(一樣這兩個方法) (java代碼要加";"分號,因為是方法體,該怎么寫還怎么寫)   
        里面的內容就是在寫doGet()方法的方法體
        int accessCount=0;//就是局部變量

    2 <%! %> : //類構成元素
        // 這里聲明的變量是成員變量   
        // 聲明的方法是成員方法
        // 相當于servlet類里面的類構成元素
        // 成員變量 , 多個客戶端訪問同一份   每個線程都有一個成員變量的緩存  然后這個緩存 會定期和主線程同步
        // 所以說  盡量不要使用成員變量!!!!
     int accessCount=0;//成員變量

    3 <%@ %> : //用來導包和設置編碼格式
            如 :
                <%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
    
    4 <%= %> : //用來直接輸出,就是out.PRintln();
        里面的內容就是out.println("內容")要輸出內容的字符串,(所以不用加分號---";")
        <%= request.getParameter("name")%>
        ↓↓↓↓↓↓
        <% out.println(   request.getParameter("name")   ); %>


Servlet :    

    Servlet 是 在java中寫html語句

include_file : //靜態包含

        靜態包含 :  jsp編譯器編譯的時候,已經包含好了相應的文件 并且只生成一個java(servlet)文件 -- javac 同一個class文件 在jvm運行的時候 他兩個之間就不能傳參了,他們使用同一個request,reponse(相當于把兩個文件合并為一個文件)

    <%@ include file="文件名.jsp"%>;//在哪里靜態包含,就把指定文件合并到哪里(位置)

errorPage : //網頁錯誤/跳轉文件/跳轉網頁

    錯誤網頁 : 當當前文件出錯的時候,跳轉到指定文件中,但是指定文件的設置(編碼...),必須和當前文件一致,而且必須指明,那就是指定文件
    如 : <%@ page errorPage="文件.jsp"%>//錯誤網頁
    
    被包含文件(被指定文件) : <%@ page isErrorPage="true"%> //指明,我就是指定文件(要跳轉到的文件)IUserService

include_page : //動態加載
    
        注意: 1 jsp標簽需要自己閉合
              2 jsp:include 是動態加載! 在jsp編譯的時候 加載頁面和被加載頁面 會被解析成兩個java(servlet)文件!
              3 javac 編譯器會編譯兩次  生成兩個class文件
                   然后在jvm虛擬機中運行的過程中,這個時候包含甲文件才回去調用乙class文件
                    這就是動態加載
              4 他們不是同一個request對象了!!!!!!!
              5 肯定需要flush
              6 傳值問題

              如 :
        <jsp:include page="_02_date.jsp" flush="true" />//動態加載
        <jsp:param value="<%=value1 %>" name="v1"/>//傳參

sendRedirect :
    
    跳轉
    //使用答應(response)調用的,所以就已經出了jvm虛擬機,再過去指定頁面 地址欄會改變
         不會阻止下面的運行
            就相當于在生成的那個java文件的doget()方法里面寫了
                response.sendRedirect("指定文件.jsp");//使用答應(response)調用的,所以就已經出了jvm虛擬機,再過去指定頁面
            因為他是在瀏覽器周轉了一下  所以  瀏覽器會顯示第二個頁面的 地址
            同樣也說明了 他們肯定不是同一個對象
            他們是不同的request對象

forward :
    
    跳轉
    //使用請求(request)調用的,所以在jvm虛擬機里面,直接把指定頁面拿過來,使用,地址欄不會改變,是動態加載概念
        <jsp:forward/>  
            會阻止下面的運行
            相當于在doget方法里面寫了:
                this.getServletConfig().getServletContext()----這里是通過當前servlet
                獲得了servlet配置屬性 然后獲得servlet上下文
                    .getRequestDispatcher(URL)-- 調用 分發器
                    傳遞到指定的URL路徑去    forward方法才是真正的跳轉
                    攜帶了當前的request  response對象
                    .forward(request, response);
                雖然他們的內存地址不一樣  但是他們的對象里面的屬性是相同的

                他們兩個頁面之間的周轉沒有經過瀏覽器  一直在虛擬機里面
                所以說他是比較快的
                
                用法<forward>
                    <jsp:param 鍵值對>
                    這里相當于在原來的request對象基礎上添加了鍵值對
                    </jsp:forward>  --注意沒有空格  

useBean :

        <jsp:useBean id="變量" class="文件名"></jsp:useBean>
        //這里是獲得Bean的對象的引用  就是new bean.CounterBean
    <jsp:useBean id="cd" class="CounterBean"></jsp:useBean>
    //實例化bean文件夾里面的CounterBean類文件,把對象引用賦值給 變量 cd

 page :
    
    //范圍 page 是當前頁面有效
    <jsp:useBean id="變量" scope="page" class"文件名" />
    <jsp:useBean id="conuterBean" scope="page" class"bean.CounterBean" />
    
 request :

    //范圍 當前request對象有效
    <jsp:useBean id="變量" scope="request" class"文件名" />
    <jsp:useBean id="counterBean" scope="request" class="bean.CounterBean" />

 application :

    //范圍 所有的訪問,都能訪問
     <jsp:useBean id="變量" scope="application" class"文件名" />
    <jsp:useBean id="counterBean" scope="application" class="bean.CounterBean" />

 session :

    //范圍 當前瀏覽器
     <jsp:useBean id="變量" scope="session" class"文件名" />
     <jsp:useBean id="counterBean" scope="session" class="bean.CounterBean" />

setProperty :

    <jsp:setProperty name="變量(以獲取的對象引用)" property="屬性(成員變量)" value="值(要設置的值)" />
    //設置值
    <jsp:setProperty name="cd" property="count" value="23" />
    //給cd這個引用里面的count變量賦值為23  底層調用的setCount()方法(自己寫的),用于讓外界設置私有的成員屬性的值

getProperty :

    //獲得值
    <jsp:getProperty name="變量(以獲取的對象引用)" property="屬性(成員變量)" />
    <jsp:getProperty name="cd" property="count" />
    ///獲取cd這個引用里面的count變量的值, 底層調用的是getCount()方法(自己寫的),用于讓外界獲取私有的成員屬性的值

this_getServletConfig_getServletContext_getRequestDispatcher :

        this.getServletConfig().getServletContext()
                    .getRequestDispatcher("/_12_Servlet_Jsp/_01_ServletUseJsp.jsp")
                    .forward(request, response);
                    //當前類對象(this),調用getServletConfig()先獲得配置,在調用getServletContext()方法獲得上下文,在調用getRequestDispatcher()分發器,分發到指定文件中,在把當前的request和response傳入
 getServletConfig :

    this.getServletConfig();//獲得配置屬性

 getServletContext : 

    this.getServletConfig().getServletContext();//獲得上下文

 getRequestDispatcher :  

    this.getServletConfig().getServletContext()
                    .getRequestDispatcher("/_12_Servlet_Jsp/_01_ServletUseJsp.jsp")
                    .forward(request, response);//分發器,分發到指定位置;


上一篇:jsp基礎大全

下一篇:第一章JSP基礎語法

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 惠来县| 宜兰县| 离岛区| 靖江市| 叙永县| 田阳县| 乌拉特中旗| 新余市| 禄劝| 福贡县| 丹棱县| 博白县| 金川县| 九江市| 小金县| 武邑县| 巩义市| 怀柔区| 炉霍县| 金昌市| 凯里市| 馆陶县| 庆阳市| 罗山县| 河曲县| 大英县| 田林县| 尖扎县| 通州区| 柏乡县| 刚察县| 广宗县| 嘉定区| 太和县| 定兴县| 屏山县| 潞西市| 当涂县| 嘉峪关市| 黄石市| 当涂县|