JavaWebday05

JSP

  1. 指令
    作用:用于配置JSP頁面,導入資源文件
    格式:<%@ 指令名稱 屬性名1=屬性值1 屬性名2=屬性值2 ... %>
    分類:

page相關

  • page: 配置JSP頁面的, *contentType:等同于response.setContentType();1. 設置響應體的mime類型以及字符集, 2. 設置當前jsp頁面的編碼(只能是高級的IDE才能生效,如果使用低級工具,則需要設置pageEncoding屬性設置當前頁面的字符集)
  • import:導包
  • errorPage:當前頁面發(fā)生異常后,會自動跳轉到指定的錯誤頁面
  • isErrorPage:標識當前也是是否是錯誤頁面。true:是,可以使用內置對象exception, * false:否。默認值。不可以使用內置對象exception

include

include : 頁面包含的。導入頁面的資源文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@include file="top.jsp"%>

top.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>這是頭部</h1>
</body>
</html>

taglib 導入資源

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> prefix:前綴,自定義的
注釋:
1. html注釋:
:只能注釋html代碼片段
2. jsp注釋:推薦使用
<%-- --%>:可以注釋所有

內置對象: 在jsp頁面中不需要創(chuàng)建,直接使用的對象

一共有9個:

變量名                 真實類型                        作用
pageContext             PageContext                 當前頁面共享數(shù)據(jù),還可以獲取其他八個內置對象
request                 HttpServletRequest          一次請求訪問的多個資源(轉發(fā))
session                 HttpSession                 一次會話的多個請求間
application             ServletContext              所有用戶間共享數(shù)據(jù)
response                    HttpServletResponse         響應對象
page                        Object                      當前頁面(Servlet)的對象  this
out                     JspWriter                   輸出對象,數(shù)據(jù)輸出到頁面上
config                  ServletConfig               Servlet的配置對象
exception                   Throwable                   異常對象

EL表達式

  1. 概念:Expression Language 表達式語言
  2. 作用:替換和簡化jsp頁面中java代碼的編寫、
  3. 語法:${表達式}
  4. 注意:
    jsp默認支持el表達式的。如果要忽略el表達式
    設置jsp中page指令中:isELIgnored="true" 忽略當前jsp頁面中所有的el表達式
    ${表達式} :忽略當前這個el表達式
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %><%--
  Created by IntelliJ IDEA.
  User: Eric
  Date: 2020/8/31
  Time: 08:50
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java"  %>
<%--<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="true" %>--%>
<html>
<head>
    <title>Title</title>
</head>
<body>
${3>4}
<br>
\${3>4}
<br>
<h3>算術運算符</h3>
${3+4}
${3*4}
${3/4}
${3%4}
${3 mod 4}
<h3>比較運算符</h3>
${3==4}
<h3>邏輯運算符</h3>
${3>4 && 3<4}
${3>4 and 3<4}
<h3>empty運算符</h3>
<%
    String str = "";
    request.setAttribute("str", str);
    List<String> list = new ArrayList<>();
    list.add("haha");
    request.setAttribute("list", list);
%>
<%--${empty }--%>
${empty str}
${empty list}
${not empty str}
${not empty list}


</body>
</html>

獲取值

  1. el表達式只能從域對象中獲取值
  2. 語法:
    1. ${域名稱.鍵名}:從指定域中獲取指定鍵的值
    • 域名稱:
      1. pageScope --> pageContext
      2. requestScope --> request
      3. sessionScope --> session
      4. applicationScope --> application(ServletContext)
<%--
  Created by IntelliJ IDEA.
  User: Eric
  Date: 2020/8/31
  Time: 09:31
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
// 在域中存儲數(shù)據(jù)
    session.setAttribute("name", "李四");
    request.setAttribute("name", "張三");
    session.setAttribute("age", "23");
    request.setAttribute("str", "");
%>
<h3>el獲取值</h3>
${requestScope.name}
${sessionScope.name}
${sessionScope.age}
${name}
</body>
</html>

  1. ${鍵名}:表示依次從最小的域中查找是否有該鍵對應的值,直到找到為止。

  2. 獲取對象、List集合、Map集合的值

    1. 對象:${域名稱.鍵名.屬性名}

      • 本質上會去調用對象的getter方法
        · 2. List集合:${域名稱.鍵名[索引]}
    2. Map集合:
      {域名稱.鍵名.key名稱}{域名稱.鍵名["key名稱"]}

<%@ page import="neusoft.el.User" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.HashMap" %><%--
  Created by IntelliJ IDEA.
  User: Eric
  Date: 2020/8/31
  Time: 09:35
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        User user = new User();
        user.setName("小桌子");
        user.setAge(23);
        user.setBirthday(new Date());
        request.setAttribute("u", user);

        List<Object> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add(user);
        request.setAttribute("list", list);

        HashMap<String, Object> map = new HashMap<>();
        map.put("sname", "趙四");
        map.put("gender", "男");
        map.put("user", user);
        request.setAttribute("map", map);



    %>

<h1>el獲取對象中的值</h1>
${requestScope.u}
<%--    對象屬性獲取
       setter 或者 getter方法  去掉 set和get
        將剩余部分首字母變?yōu)樾?        getName() ---> Name ----> name
--%>
${requestScope.u.name}<br>
${u.age} <br>
${u.birthday}<br>

<h3>獲取list值</h3>
    ${requestScope.list}
    ${list}
    ${list[0]}
    ${list[2]}
    ${list[2].name}
    <h5>list[10]</h5>
    ${list[10]}
<h3>獲取map值</h3>
    ${requestScope.map}
    ${map}
    ${map.gender}
    ${map["gender"]}
    ${map.user.name}


</body>
</html>

JSTL

概念:JavaServer Pages Tag Library JSP標準標簽庫,是由Apache組織提供的開源的免費的jsp標簽<標簽>。 作用:用于簡化和替換jsp頁面上的java代碼

使用步驟:

  1. 導入jstl相關jar包
  2. 引入標簽庫:taglib指令: <%@ taglib %>
  3. 使用標簽
  4. 常用的JSTL標簽
1. if:相當于java代碼的if語句
  1. 屬性:
  • test 必須屬性,接受boolean表達式
  • 如果表達式為true,則顯示if標簽體內容,如果為false,則不顯示標簽體內容
  • 一般情況下,test屬性值會結合el表達式一起使用
  1. 注意:
  • c:if標簽沒有else情況,想要else情況,則可以在定義一個c:if標簽
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head>
    <title>if標簽</title>
</head>
<body>
<%--c:if
  1、 屬性 test 必須屬性, 接受的是boolean表達式
    一般 test配合 el表達式一起使用
    2、 沒有else部分, 想要的話需要在定義一個 c:if
--%>
<c:if test="fasle">
    <h1>還有一個月就過節(jié)了</h1>
</c:if>
<%
    List<Object> list = new ArrayList<>();
    list.add("aaaa");
    request.setAttribute("list", list);
    request.setAttribute("number", 6);
%>
<c:if test="${not empty requestScope.list}">
    <h2>遍歷集合</h2>
</c:if>
<br>
<c:if test="${number % 2 != 0}">
    <h2>${number}為奇數(shù)</h2>
</c:if>
<c:if test="${number % 2 == 0}">
    <h2>${number}為偶數(shù)</h2>
</c:if>

</body>
</html>

2. choose:相當于java代碼的switch語句
  1. 使用choose標簽聲明 相當于switch聲明
  2. 使用when標簽做判斷 相當于case
  3. 使用otherwise標簽做其他情況的聲明 相當于default
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="d" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head>
    <title>choose標簽</title>
</head>
<body>
<%
    request.setAttribute("number", 7);
%>
<d:choose>
    <d:when test="${number == 1}">星期一</d:when>
    <d:when test="${number == 2}">星期二</d:when>
    <d:when test="${number == 3}">星期三</d:when>
    <d:when test="${number == 4}">星期四</d:when>
    <d:when test="${number == 5}">星期五</d:when>
    <d:when test="${number == 6}">星期六</d:when>
    <d:when test="${number == 7}">星期天</d:when>

    <d:otherwise >過年</d:otherwise>

</d:choose>


</body>
</html>

3. foreach:相當于java代碼的for語句

<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head>
    <title>forEach標簽</title>
</head>
<body>
<!--
   begin 開始
   end 結束
   var 臨時變量
   step 步長
   varStatus :循環(huán)狀態(tài)對象
      index : 容器中元素的索引
      count : 循環(huán)次數(shù) (從開始)
      items : 容器對象
 -->
<c:forEach begin="0" end="10" var="i"  step="2" varStatus="s">
    ${i}
    <h3>index ${s.index}</h3>
    <h4>count ${s.count}</h4>
</c:forEach>
<hr>
<%
    List<String> list = new ArrayList<>();
    list.add("小魯班");
    list.add("妲己");
    list.add("后羿");
    request.setAttribute("list", list);
//    for (String str:
//         list) {
//
//    }

%>

<c:forEach items="${list}" var="str" varStatus="s">
    ${s.index} ---- ${s.count} ${str}<br>
</c:forEach>








</body>
</html>

Spring JDBC JdbcTemplate

Spring框架對JDBC的簡單封裝。提供了一個JDBCTemplate對象簡化JDBC的開發(fā)

  1. 導入jar包
  2. 創(chuàng)建JdbcTemplate對象。依賴于數(shù)據(jù)源DataSource, JdbcTemplate template = new JdbcTemplate(ds);
  3. 調用JdbcTemplate的方法來完成CRUD的操作
* update():執(zhí)行DML語句。增、刪、改語句
* queryForMap():查詢結果將結果集封裝為map集合,將列名作為key,將值作為value 將這條記錄封裝為一個map集合
* 注意:這個方法查詢的結果集長度只能是1
* queryForList():查詢結果將結果集封裝為list集合
* 注意:將每一條記錄封裝為一個Map集合,再將Map集合裝載到List集合中
* query():查詢結果,將結果封裝為JavaBean對象 * query的參數(shù):RowMapper
* 一般我們使用BeanPropertyRowMapper實現(xiàn)類??梢酝瓿蓴?shù)據(jù)到JavaBean的自動封裝  new BeanPropertyRowMapper<類型>(類型.class)
* queryForObject:查詢結果,將結果封裝為對象
* 一般用于聚合函數(shù)的查詢
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容