jsp

jsp的概念

概念:java server page 一種運(yùn)行在服務(wù)端的語(yǔ)言

作用:可以寫java代碼,實(shí)現(xiàn)動(dòng)態(tài)頁(yè)面

特點(diǎn):java代碼嵌套在html中,html嵌套在java中,先編譯后執(zhí)行

jsp執(zhí)行順序

用戶第一次訪問(wèn)頁(yè)面的的時(shí)候,服務(wù)器會(huì)將對(duì)應(yīng)的jsp翻譯成java代碼,編譯成class文件,并且放在work目錄下面

jspservice()在用戶每次訪問(wèn)的時(shí)候都會(huì)調(diào)用,在這個(gè)方法里面,通過(guò)out.write()將前面代碼輸出要瀏覽器中。

jsp基本語(yǔ)法

三種語(yǔ)法

1.jsp表達(dá)式

<%=1+1%>
<%=new Date()%>
  • 本質(zhì):out.write(內(nèi)容);

  • 可以寫任何有返回值的語(yǔ)句,但是不能寫";"

  • 相當(dāng)于System.out.println();可以寫什么,這就就可以寫什么

2.jsp腳本片段

<%
    int a=10;
    out.write(a);
%>
  • 本質(zhì):就是將這些java代碼原模原樣的復(fù)制到了_jspservice()里面

  • 可以寫多行java代碼,必須有";"

  • 函數(shù)里面可以寫什么,這里就可以寫什么

3.jsp聲明

<%!
    int a=10;
    public void show(){
        System.out.println("hello jsp");
    }
%>
  • 本質(zhì):就是將這些java代碼原模原樣的復(fù)制到類里面,就是定義了類的成員

  • 可以寫多行java代碼,必須有";"

  • 類中可以寫什么,這里就可以寫什么

注釋

    <%--jsp注釋:不會(huì)輸出到瀏覽器上面--%>
    <!-- 前端的注釋:會(huì)輸出到瀏覽器上面 -->

三大指令

JSP指令是告訴引擎如何處理JSP頁(yè)面中的其余部分

基本語(yǔ)法

<%@ 指令 屬性="屬性值",屬性="屬性值"...%> 例如: <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>

  • page指令

    • import 導(dǎo)包
    • pageEncoding 頁(yè)面編碼
    • contentType 瀏覽器編碼
    • errorPage 錯(cuò)誤頁(yè)面
    • isErrorPage 是否為錯(cuò)誤頁(yè)面
  • include指令

1.png
  • taglib指令 <%@ taglib prefix="前綴" uri="標(biāo)簽庫(kù)地址"%>

九大隱式對(duì)象

1.request請(qǐng)求

  • 獲取請(qǐng)求參數(shù)
    String header=request.getHeader("accept-language");//獲取請(qǐng)求頭
    String uri=request.getRequestURI();//獲取uri
    String method=request.getMethod();//獲取請(qǐng)求方式
  • 保存信息
    request.setAttribute("key",object);
  • 轉(zhuǎn)發(fā)
    request.getRequestDispachter("user.jsp").forward(request,response);
  • 設(shè)置編碼

get請(qǐng)求方式:

    //方式一:
    new String("key".getBytes("iso-8859-1"),"utf-8");//get亂碼問(wèn)題
    //方式二:
    //或者在tomcat的server.xml文件中的Connector標(biāo)簽中添加屬性URIEncoding="utf-8"

post請(qǐng)求方式:

request.setCharacterEncoding("utf-8");//post亂碼問(wèn)題

2.response響應(yīng)

    //1、重定向:告訴瀏覽器重新訪問(wèn)某個(gè)地址

    response.sendRedirect("login.html");
    //2、向?yàn)g覽器寫出數(shù)據(jù)
    response.getWriter().write("登錄失敗");
    response.getWriter().write("<script>alert('登錄失敗');location='login.html'</script>"); 
    //response.getOutputStream().write("hello".getBytes());

    //3、添加響應(yīng)頭
    response.addHeader("Content-Type", "text/html; charset=UTF-8");//添加編碼格式
    response.addHeader("aa", "bb");//添加自定義的響應(yīng)頭信息
    response.addHeader("refresh", "3;url='https://www.baidu.com'");//3秒鐘跳轉(zhuǎn)頁(yè)面

    response.setStatus(302);//通過(guò)狀態(tài)碼實(shí)現(xiàn)重定向
    response.setHeader("location", "https://www.baidu.com");//通過(guò)location告訴瀏覽器重定向的地址

request和response區(qū)別

在頁(yè)面跳轉(zhuǎn) 1、request地址欄不發(fā)生變化 2、response地址欄發(fā)生變化

在保存信息 1、request可以保存信息 2、response不可以保存信息

Cookie(不屬于九大隱式對(duì)象)

2.png

概念:將原本服務(wù)端保存的信息轉(zhuǎn)到客戶端去保存

好處:

  • 降低了服務(wù)器保存用戶信息的壓力。
  • 跟蹤用戶,了解行蹤。

創(chuàng)建

Cookie cookie=new Cookie("key","value");//創(chuàng)建
response.addCookie(cookie);//發(fā)送給客戶端

常用的方法 setMaxAge(秒);

  • 60,cookie保存到硬盤中,在生命時(shí)間內(nèi)都有效
  • =0,刪除指定cookie
  • <0,瀏覽器會(huì)話結(jié)束即失效(默認(rèn))
    -setPath(路徑); - 訪問(wèn)的路徑包含了設(shè)置的路徑,則cookie會(huì)被傳輸會(huì)服務(wù)器。例如:setPath("/Servlet/shop"); - 訪問(wèn)/Servlet/shop/PurchaseServlet,cookie會(huì)被傳輸會(huì)服務(wù)器,訪問(wèn)/Servlet/user/UserServlet,cookie不會(huì)別傳輸會(huì)服務(wù)器。

Cookie的獲取

    Cookie[] cookies=request.getCookies();//獲取所有的cookie
    for(Cookie c:cookies){
        if("name2".equals(c.getName())){
            System.out.println(c.getValue());
        }
    }

3、session(銀行開(kāi)戶獲得銀行卡號(hào))

什么是session

session是保存在客戶端的一個(gè)回話對(duì)象,用來(lái)標(biāo)示一個(gè)唯一用戶

session的原理

3.png

作用:

保存數(shù)據(jù),保存數(shù)據(jù)的范圍是一個(gè)會(huì)話

常用方法:

session.setAttribute("key","value");//保存內(nèi)容
session.getAttribute("key");//獲取內(nèi)容
session.removeAttribute("key");//刪除內(nèi)容

4、application

作用:

保存數(shù)據(jù):保存數(shù)據(jù)的范圍是整個(gè)應(yīng)用

常用方法:

application.setAttribute("key","value");//保存內(nèi)容
application.getAttribute("key");//獲取內(nèi)容
application.removeAttribute("key");//刪除內(nèi)容

5、pageContext

作用: 1、保存數(shù)據(jù) 2、獲取其他域?qū)ο?/p>

常用方法:

    session.setAttribute("age", 20);
    application.setAttribute("age", 21);
    pageContext.setAttribute("age", 18);
    request.setAttribute("age", 19);
    pageContext.findAttribute("age");//按照域?qū)ο髲男〉酱蟮姆秶M(jìn)行查找

jsp動(dòng)作標(biāo)簽

jsp:include標(biāo)簽

4.png

useBean

5.png
<!-- 創(chuàng)建javabean對(duì)象 -->
<jsp:useBean id="book1" class="com.hemi.bean.Book"></jsp:useBean>
<!-- 將表單中的所有name獲取出來(lái),然后自動(dòng)的封裝到對(duì)象的屬性中 -->
<jsp:setProperty name="book1" property="*"></jsp:setProperty>
<!-- 給對(duì)象屬性賦值 -->
<jsp:setProperty name="book" property="bookname"  value="三國(guó)"/>
<!-- 獲取對(duì)象屬性值 -->
<jsp:getProperty property="bookname" name="book"/>

登錄

1、創(chuàng)建User

2、編寫UserDao ,調(diào)用BaseDao

3、編寫UserService,調(diào)用UserDao

4、編寫login.jsp

5、編寫doLogin.jsp - 獲取參數(shù)

  • 調(diào)用userService中的方法

  • 判斷返回的User是否為空

  • 如果為空,跳轉(zhuǎn)login.jsp

  • 如果不為空,保存user對(duì)象到session,并且重定向到user.jsp

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、JSP基礎(chǔ) 1.1什么是JSP JSP(Java ServerPage)是Java服務(wù)器端動(dòng)態(tài)頁(yè)面技術(shù)。是su...
    晨星資源閱讀 1,171評(píng)論 0 6
  • 1.什么是JSP (1)jsp全稱是Java Server Pages,它和Servlet技術(shù)一樣都是sun公司定...
    yjaal閱讀 3,681評(píng)論 5 99
  • 1.學(xué)習(xí)內(nèi)容 JSP技術(shù)入門和常用指令 JSP的內(nèi)置對(duì)象&標(biāo)簽介紹 EL表達(dá)式&EL的內(nèi)置對(duì)象 2.JSP技術(shù)入門...
    WendyVIV閱讀 2,161評(píng)論 1 18
  • 本文目錄: JSP基礎(chǔ) Cookie HttpSession JSP基礎(chǔ) JSP(Java Server Page...
    極客圈閱讀 528評(píng)論 0 3
  • 一、jsp定義及作用 JSP技術(shù)使用Java編程語(yǔ)言編寫類XML的tags和scriptlets,來(lái)封裝產(chǎn)生動(dòng)態(tài)網(wǎng)...
    yzw12138閱讀 1,245評(píng)論 0 0