08_jsp01

1 概念

jsp:java server page java服务器端页面动态资源:请求jsp时 需要应用服务器把jsp解析为静态资源 任何才能响应javaweb的十三种技术规范之一:实现动态页面原理:每个jsp对应一个servlet 通过servlet的response的输出流 拼凑一个与jsp相同效果的静态页面html

2 案例

2.1 统一设置jsp的编码集

在这里插入图片描述

2.2 案例1

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>




第一个jsp

jsp组成2:html代码

1+1=2
1+1=<%=1+1%><%-- jsp注释:--%>

jsp中java片段的格式1:<% %>在定义servlet的service方法体

<% //java代码:写java语句int a=1;int b=3;System.out.println(a+"+"+b+"="+(a+b));//控制台输出//通过rssponse的输出流往页面打印out.println(a+"+"+b+"="+(a+b)+"
");//页面输出out.println(hehe());//调用成员方法out.println(this.aa+"+"+this.bb+"="+(this.aa+this.bb)+"
");//调用成员变量System.out.println(application.getRealPath("/"));%>

jsp中java片段的格式2:<%! %> 在定义servlet的成员

<%!//java代码:写类的成员{System.out.println("构造代码块");}static{System.out.println("静态构造代码块");}int aa=11;//成员变量int bb=22;//成员变量public String hehe(){return this.aa+"+"+this.bb+"==="+(this.aa+this.bb)+"
";}%>

jsp中java片段的格式3:<%=1%> 页面输出:完全等价于out.println(1);

2*3=<%=2*3%>
2*3=<% out.println(2*3);%>

2.3 案例2:深入理解jsp其实是一个servlet这句话

  • 定义一个简单的jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>




Insert title here

<%--jsp注释 --%><%   //java片段1:定义service的方法体int a=1,b=2;out.println(a+"+"+b+"="+(a+b)+"
");%><%! //java片段2:定义servlet类的成员int c=2,d=3;public int add(){return c+d;}%>c+d=<%=c+d%>
  • 获取其对应的servlet
        System.out.println(application.getRealPath("/"));

在这里插入图片描述

  • 拿此jsp和servlet做比较
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3 jsp的指令标签

<%--jsp指令标签:格式:<%@ xxx 属性名=属性值 %>
jsp指令标签:设置整个页面的相关信息
jsp指令标签:<%@ page %>   设置页面常见属性
jsp指令标签:<%@ taglib %> 设置页面要引入的第三方标签库
jsp指令标签:<%@ include %> 静态包含:把两个页面合并
--%>

3.1 page指令标签

<%--jsp指令标签:<%@ page %>   设置页面常见属性
一个页面中可以有多个相同的执行标签
--%>
<%@ page autoFlush="true" %>                      
<%@ page buffer="8kb" %>                          
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page errorPage="error.jsp"  %>                
<%@ page isErrorPage="false" %>                   
<%@ page extends="" %>                            
<%@page import="java.util.Date"%>                 
<%@ page info="" %>                               
<%@ page isELIgnored="false" %>                   
<%@ page isThreadSafe="true" %>                   
<%@ page language="java" %>                       
<%@ page pageEncoding="UTF-8"  %>                 
<%@ page session="true" %>                        
<%@ page trimDirectiveWhitespaces="false" %>      

3.2 include指令标签

include指令标签

<%--include指令标签:用于静态包含:把指定的页面的代码合并到当前页面中--%> <% int a=11,b=13; out.println(a+"+"+b+"="+(a+b)+"
"); %> <%@ include file="test.txt" %>
  • test.txt

test.txt

<% out.println(a+"-"+b+"="+(a-b)+"
"); %>

3.3 taglib指令标签

taglib指令标签

<%--taglib指令标签:用于引入第三方标签库 --%> <%--<%@ taglib prefix="" uri="" %> prefix指定标签的前缀 uri指定标签库的路径--%>

4 jsp的动作标签

动作标签:jsp页面执行的某些操作

4.1 forward动作标签

jsp动作标签1:forward:请求转发

<%--jsp动作标签格式: --%> <% //完全等价于: //request.getRequestDispatcher("/jsp/test1.jsp").forward(request, response); %>

4.2 include动作标签

jsp动作标签2:include:请求包含--动态包含

<% //请求包含:当前资源和被包含的资源 共同来处理请求 //完全等价于: //request.getRequestDispatcher("/jsp/test1.jsp").include(request, response); %>

4.3 静态包含和动态包含的区别

1:使用的标签不同:静态包含使用的是jsp的include指令标签:<%@ include file="test01.jsp" %>动态包含使用的是jsp的include动作标签:
2: 被包含的资源是否会被解析静态包含text1.jsp时  只是把text1.jsp的代码合并到当前jsp  不会对text1.jsp进行解析为servlet:动态包含text1.jsp时  当前jsp和text1.jsp都会被解析为servlet 两个servlet对应两个输出流 共同来响应一个页面
3:包含的文件格式不同静态包含的文件格式 可以任意动态包含的文件格式必须是jsp/servlet

4.4 useBean动作标签

jsp动作标签3:useBean:指定的域对象中设置域属性

<% //完全等价于 request.setAttribute("s2", new Student()); %> <%=request.getAttribute("s1") %>
<%=request.getAttribute("s2") %>
<%=request.getAttribute("s1") %>
<% //完全等价于 ((Student)request.getAttribute("s1")).setSid(12); %> <%=request.getAttribute("s1") %>



<% //完全等价于 out.println(((Student)request.getAttribute("s1")).getSid()); %>

注意

所有的jsp动作标签:都是在用标签来替代java片段::目的 降低jsp的学习成本  消除jsp页面中的java代码 提高jsp的可读性和开发效率

5 jsp学习重点

  • jsp组成:java片段三种形式的作用
  • jsp的原理:每个jsp都被解析为一个servlet 提高servlet的输出流拼凑一个和jsp页面效果完全相同的html页面
  • jsp标签:jsp的指令标签和动作标签
  • jsp四大域对象:在指定范围内实现数据共享
  • jsp的九大内置对象
  • el表达式
  • el的十一大内置对象
  • jstl标签库

6 jsp的四大域对象

明确1:域对象:在指定范围内实现数据共享
明确2:域对象都有四个方法:setAttribute getAttribute removeAttribute getAttributeNames
明确3:servlet有三大域:request请求对象---在同一个请求链(请求转发和请求包含的资源)之间实现数据共享session回话对象---在同一个回话(同一个浏览器发出的几个连续的请求)的所有请求之间实现数据共享servletContext上下文域对象---同一个项目的所有请求之间实现数据共享jsp的四大域:     pageContext页面对象-----在当前页面和引入的标签库之间实现数据共享request请求对象---在同一个请求链(请求转发和请求包含的资源)之间实现数据共享session回话对象---在同一个回话(同一个浏览器发出的几个连续的请求)的所有请求之间实现数据共享application上下文域对象---同一个项目的所有请求之间实现数据共享     

jsp的域对象

<% //servlet的三大域对象 request.setAttribute("aa1", "aa_request11"); session.setAttribute("bb1", "bb_session11"); request.getServletContext().setAttribute("cc1", "cc_servletContext11");//jsp的四大域对象:上面的三个域+pageContext pageContext.setAttribute("dd1", "dd_pageContext11");//在当前页面之间实现数据共享 %>
  • test2.jsp

获取servlet域属性

aa1=<%=request.getAttribute("aa1") %>
bb1=<%=session.getAttribute("bb1") %>
cc1=<%=request.getServletContext().getAttribute("cc1") %>
dd1=<%=pageContext.getAttribute("dd1") %>
<% //jsp的四大域对象: pageContext.setAttribute("dd1", "dd_pageContext11_new"); %> dd1=<%=pageContext.getAttribute("dd1") %>

7 jsp的九大内置对象

7.1 概念

jsp被解析成一个servlet:
jsp的九大内置对象 就是对应的servlet的service方法中可以直接使用的九个对象--不用创建即可使用
在jsp对应的servlet中即可找到

7.2 九大内置对象功能描述

    jsp被解析成一个servlet:jsp的九大内置对象 就是对应的servlet的service方法中可以直接使用的九个对象--不用创建即可使用在jsp对应的servlet中即可找到request:HttpServletRequest 请求对象作用:1 获取请求参数 2获取请求头 3 请求转发+请求包含 4 作为域对象 5 其他功能response:HttpServletResponse 响应对象作用:1 设置响应头 2 设置响应体 3 重定向 4 其他功能session:HttpSession 回话对象作用:session域对象:在同一个回话中实现数据共享 application:ServletContext 上下文对象作用:1ServletContext域对象  2 其他功能           config:ServletConfig 配置对象作用:  获取当前资源在web.xml中的配置信息out:PrintWrite  响应对象对象的字符输出流作用:拼凑页面page: Object    当前jsp页面 /thisexception:Exception  异常对象::注意 只有设置isErrorPage=true的页面才有此对象pageContext:PageContext pageContext对象作用 1 作为page域对象  2 代理其他域对象 3 全域查找  4 获取其他八个内置对象

7.3 九大内置对象测试代码:前八个

  <h1>内置对象1:request对象</h1>获取请求参数parameter aa=<%=request.getParameter("aa") %><br/>获取请求头header User-Agent=<%=request.getHeader("User-Agent") %><br/><%//请求转发+请求包含//request.getRequestDispatcher("/jsp/test2.jsp").forward(request, response);//request.getRequestDispatcher("/jsp/test2.jsp").include(request, response);//作为域对象request.setAttribute("attr1", "attr1_request");%>获取request域属性attribute  attr1=<%=request.getAttribute("attr1") %><br/>获取session:  <%=session==request.getSession() %>    <br/><h1>内置对象2:resposne对象</h1><%//设置响应头response.setHeader("cc", "cc_header");//设置响应体response.getWriter().print("ehehh11111
"
);//重定向//response.sendRedirect("/java43_01_web/jsp/test2.jsp");//其他功能response.addCookie(new Cookie("c1","c111"));%><h1>内置对象3:out对象:响应的字符输出流</h1><%response.getWriter().print("ehehh2222
"
);out.print("ehehh3333
"
);%><%="ehehh4444444
"
%><h1>内置对象4:session对象:回话对象</h1>获取sesdionid=<%=session.getId() %><br/><%session.setAttribute("s1", "s1_value");%>获取session域属性s1=<%=session.getAttribute("s1") %><br/><h1>内置对象5:application对象:上下文对象</h1> <%application.setAttribute("a1", "a1_value");%>获取application域属性a1=<%=application.getAttribute("a1") %><br/>其他功能:获取项目路径 <%=application.getContextPath() %><br/>其他功能:获取资源的真实路径 <%=application.getRealPath("/1.html") %><br/> <h1>内置对象6:config对象:配置对象</h1>获取当前servlet的配置信息: servlet-name=<%=config.getServletName() %><br/><h1>内置对象7:page对象:当前页面</h1>this==page:<%=this==page %><br/><h1>内置对象8:error对象:异常 注意 只有设置isErrorPage的页面才有此对象</h1>

7.4 九大内置对象:PageContext

    

内置对象9:pageContext对象:

作为pageContext域对象在 当前页面和标签之间实现数据共享:
<% pageContext.setAttribute("p1", "p1_value"); %> 获取 pageContext域属性 p1=<%=pageContext.getAttribute("p1") %>
<%//pageContext.setAttribute("a1", "a1_value_pageContext");//session.setAttribute("a1", "a1_value_session");//request.setAttribute("a1", "a1_value_request");application.setAttribute("a1", "a1_value_application");pageContext.setAttribute("a11", "a11_value_pageContext");request.setAttribute("a12", "a12_value_request");session.setAttribute("a13", "a13_value_session");application.setAttribute("a14", "a14_value_application");%> 全域查找:a11=<%=pageContext.findAttribute("a11") %>
全域查找:a12=<%=pageContext.findAttribute("a12") %>
全域查找:a13=<%=pageContext.findAttribute("a13") %>
全域查找:a14=<%=pageContext.findAttribute("a14") %>
全域查找:从小到大找::a1=<%=pageContext.findAttribute("a1") %>
代理其他域:
<%pageContext.setAttribute("a111", "a111_request", PageContext.REQUEST_SCOPE);%>获取request域属性a111=<%=request.getAttribute("a111") %>
获取request域属性a111=<%=pageContext.getAttribute("a111", PageContext.REQUEST_SCOPE)%>
获取其他八个内置对象:<%=request==pageContext.getRequest() %>
获取其他八个内置对象:<%=response==pageContext.getResponse() %>
获取其他八个内置对象:<%=out==pageContext.getOut() %>
获取其他八个内置对象:<%=session==pageContext.getSession() %>
获取其他八个内置对象:<%=application==pageContext.getServletContext() %>
获取其他八个内置对象:<%=config==pageContext.getServletConfig() %>
获取其他八个内置对象:<%=page==pageContext.getPage() %>

7.5 jsp和servlet的分工

jsp一般用于获取数据+数据展示
servlet一般用于业务逻辑的处理

7.6 九九乘法表

拼凑99乘法表

<% out.print(""); for(int i=1;i<=9;i++){out.print("");for(int j=1;j<=i;j++){out.print("");}out.print(""); } out.print("
"+i+"*"+j+"="+(i*j)+"
"); %>

拼凑99乘法表

<%for(int i=1;i<=9;i++){%><% for(int j=1;j<=i;j++){%><%}%><% }%>
<%=i+"*"+j+"="+(i*j)%>

8 el表达式

8.1 概念

el:Expression Language 表达式语言
格式:${式子}  等价于 <%=式子 %> 在页面输出数据

8.2 基本操作

<%--el:Expression Language 表达式语言格式:${式子}  等价于 <%=式子 %> 在页面输出数据目的:替换     <%=式子 %>java片段  注意:el表达式操作的变量只能是域属性               
--%>
<%
request.setAttribute("a", "a_request");
session.setAttribute("a", "a_session");
pageContext.setAttribute("a", "a_pageContext");
application.setAttribute("a", "a_application");
request.setAttribute("a1", "a1_request");
session.setAttribute("a2", "a2_session");
pageContext.setAttribute("a3", "a3_pageContext");
application.setAttribute("a4", "a4_application");
%>

获取域属性:通过内置对象out

request域属性a=<%out.println(request.getAttribute("a"));%>
session域属性a=<%out.println(session.getAttribute("a"));%>
application域属性a=<%out.println(application.getAttribute("a"));%>
pageContext域属性a=<%out.println(pageContext.getAttribute("a"));%>

获取域属性:通过java片段<%=1 %>

request域属性a=<%=request.getAttribute("a")%>
session域属性a=<%=session.getAttribute("a")%>
application域属性a=<%=application.getAttribute("a")%>
pageContext域属性a=<%=pageContext.getAttribute("a")%>

获取域属性:通过el表达式

request域属性a=${requestScope.a}
session域属性a=${sessionScope.a}
application域属性a=${applicationScope.a}
pageContext域属性a=${pageScope.a}
<% int aa=1; %> aa=<%=aa %>
aa=<%out.println(aa); %>
aa=${aa}

8.3 el作用

<%
int aa=1;
%>
aa=<%=aa %>
aa=<%out.println(aa); %>
aa=${aa}

el的作用

作用1:获取域属性

作用2: 运算

1+1=${1+1}
5/2=${5/2}

作用3: 对象导航ognl

<% Student stu2=new Student(); stu2.setSid(22);stu2.setSname("憨憨");stu2.setSex("男");stu2.setScore(14f); pageContext.setAttribute("stu2", stu2); %> <%--Object Graph Navigation Language:ognl操作对象时:obj.xxx 在对象obj的getXxx方法--%> 获取学生stu1:${pageScope.stu1}
获取学生stu2:${pageScope.stu2}
获取学生的详细详细:sid=${pageScope.stu1.sid} | sname=${pageScope.stu1.sname} | sex=${pageScope.stu1.sex} | score=${pageScope.stu1.score}
获取学生的详细详细: score=${pageScope.stu1.score}
获取学生的详细详细: show=${pageScope.stu1.show}

作用4: 全域查找:从小到大找

获取学生stu1:${stu1}
a=${a}
a=<%=pageContext.findAttribute("a") %>

作用5: 操作集合和数组

<% pageContext.setAttribute("array", new int[]{1,3,4,5,6,7,8,9,2}); List list=new ArrayList(); list.add("abc1");list.add("abc2");list.add("abc3"); pageContext.setAttribute("list",list); Set set=new HashSet(); set.add("a11");set.add("a12");set.add("a13");set.add("a14"); pageContext.setAttribute("set", set); Map map=new HashMap(); map.put("key1", "dd11");map.put("key2", "dd12");map.put("key-3", "dd13");map.put("key-4", "dd14"); pageContext.setAttribute("map", map); %> array=${array}
array[0]=${array[0]} array[1]=${array[1]} array[2]=${array[2]}
list=${list}
list.get(0)=${list[0]} list.get(1)=${list[1]} list.get(2)=${list[2]}
set=${set}
set第1个元素=${set.toArray()[0]} set第2个元素=${set.toArray()[1]} set第3个元素=${set.toArray()[2]}
map=${map}
key1=${map.key1} key2=${map.key2} key-3=${map['key-3']} key-4=${map['key-4']}
注意1:操作map时:如果键中含有特殊字符:写法应该为map['key']
注意2:el表达式客户体验性很好 不报错
date=<%=(Date)request.getAttribute("date") %>
<%-- date=<%=((Date)request.getAttribute("date")).getYear()%>:::空指针异常
--%> date=${date }
date.year=${date.year}
1/0=${1/0}

8.4 el的使用场景

<%request.setAttribute("a", 12);request.setAttribute("b", 13);request.setAttribute("stu", new Student());session.setAttribute("c", 12);request.setAttribute("d", 0);
%>

el表达式的使用场景:

使用场景1:html中

${a}+${b}=${a+b}

使用场景2:jsp标签中

stu=${stu }

使用场景3:js代码中

8.5 el中数学运算可以使用的运算符

<%request.setAttribute("a", 12);request.setAttribute("b", 13);request.setAttribute("d", 0);
%>

el表达式数学运算可以使用的运算符:

<%--算数运算符: + - * / % div等价于/ mod 等价于%比较运算符: gt表示> ge表示>= lt表示< le表示<= eq表示==ne表示!=逻辑运算符: and 表示&&or 表示 || 非空判断: empty 判断域属性是否不存在not empty 判断域属性是否存在 三元表达式: boolean?值1:值2 --%> a+b=${a+b}
a-b=${a-b}
a*b=${a*b}
a/b=${a/b},a/b=${a div b }
a%b=${a%b},a/b=${a mod b }
a > b?${a>b},a > b?${a gt b}
a < b?${a a >= b?${a >= b},a >= b?${a ge b}
a <= b?${a <= b},a <= b?${a le b}
a == b?${a == b},a == b?${a eq b}
a != b?${a != b},a != b?${a ne b}
1 > 2 && 1 <0 ? ${1 gt -1 && 1 lt 2 }
1 > 2 && 1 <0 ? ${1 gt -1 and 1 lt 2 }
1 > 2 || 1 <0 ? ${1 gt -1 || 1 lt 2 }
1 > 2 || 1 <0 ? ${1 gt -1 or 1 lt 2 }
${d}=0? ${empty d}
域属性中不存在e? ${empty e}
域属性中不存在a? ${empty a}
域属性中存在a? ${not empty a}
域属性中存在e? ${not empty e}
1>2就显示3 否则显示4:::::${1>2?3:4}

8.6 el表达式的11大内置对象

jsp的九大内置对象:jsp被解析为servlet后 service方法中已经定义好的九个可以直接使用的对象request response outpageContext page session applicationservletConfigexceptionel的十一大内置对象:el表达式中可以直接使用的十一个对象:用于获取当前页面的所有信息

el十一大内置对象:1-2:::与请求参数parameter相关:::param+paramValues

获取单值请求参数param: age=${param.age }
获取单值请求参数paramValues: enjoy=${paramValues.enjoy }

el十一大内置对象:3-4:::与请求头header相关:::header+headerValues

获取单值请求头header: Host=${header.Host}
获取单值请求头headerValues: Accept-Language=${header['Accept-Language']}
获取单值请求头headerValues: User-Agent=${header['User-Agent']}

el十一大内置对象:5:::与项目的初始化参数:::initParam

获取web.xml中配置的项目的初始化参数:myEncoding=${initParam.myEncoding}
获取web.xml中配置的项目的初始化参数:myEncoding=<%=application.getInitParameter("myEncoding") %>

el十一大内置对象:6-9:::jsp的四大域对象:::xxxScope

<% request.setAttribute("a", "a_request"); session.setAttribute("a", "a_session"); pageContext.setAttribute("a", "a_pageContext"); application.setAttribute("a", "a_application"); response.addCookie(new Cookie("c1","c11_value")); response.addCookie(new Cookie("c2","c12_value")); response.addCookie(new Cookie("c3","c13_value"));%> 获取pageContext域属性:pageScope:::a=${pageScope.a}
获取request域属性:requestScope:::a=${requestScope.a}
获取session域属性:sessionScope:::a=${sessionScope.a}
获取application域属性:applicationScope:::a=${applicationScope.a}

el十一大内置对象:10:::获取cookie:::cookie

获取cookie对象:cookie::::c1=${cookie.c1}
获取cookie对象:cookie::::c2=${cookie.c2}
获取cookie对象:cookie::::c3=${cookie.c3}
获取cookie:cookie::::${cookie.c1.name }=${cookie.c1.value }
获取cookie:cookie::::${cookie.c2.name }=${cookie.c2.value }
获取cookie:cookie::::${cookie.c3.name }=${cookie.c3.value }

el十一大内置对象:11:::pageContext:::就完全等价于jsp中的pageContext

获取session::${pageContext.session }
获取session::<%=pageContext.getSession() %>
获取sessionid::${pageContext.session.id}
获取sessionid::<%=pageContext.getSession().getId() %>
获取项目路径:: <%=pageContext.getServletContext().getContextPath() %>
获取项目路径:: ${pageContext.servletContext.contextPath }
获取请求方式:: <%=((HttpServletRequest)pageContext.getRequest()).getMethod()%>
获取项目路径:: ${pageContext.request.method }

9 jstl标签库

9.1 jstl概念

<%-- jstl:Java server pages standarded tag library  jsp标准标签库jsp=html+jsp标签+java片段:::可读性差+可维护性差+学习成本高使用jstl中的标签把java片段替换el表达式只能替换<%= %>jstl其实是对el的扩展 加强 ::只是el是jsp内部的 而 jstl需要jsp引入        
--%>

9.2 jstl的使用步骤

使用jstl的步骤

<%--第一步:项目导入jstl依赖的jar:standard-1.1.2.jar+jstl-1.2.jar第二步:使用jsp的taglib指令标签引入需要的标签:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 第三步:把 c.tld+ fmt.tld+ fn.tld添加到WEB-INF下 第四步: 通过<前缀:标签名 >来使用对应的标签 --%>

9.3 jstl的分类

jstl标签库的分类

<%--1:http://java.sun.com/jsp/jstl/core 核心标签库::提供流程控制::最重要的2:http://java.sun.com/jsp/jstl/fmt 格式化标签库::提供对字符串数字日期格式化的标签::有用3:http://java.sun.com/jsp/jstl/functions 字符串方法标签::提供字符串转换操作的标签::有用4:http://java.sun.com/jsp/jstl/sql sql标签::提供可以发送sql语句的标签:::废弃5:http://java.sun.com/jsp/jstl/xml xml标签::提供解析xml的标签:::废弃 --%>

9.4 fmt格式化标签库

jstl标签库:fmt标签库

<%pageContext.setAttribute("d1", new Date());pageContext.setAttribute("n1", 1234567.1234);pageContext.setAttribute("s1", "1234-12-13");pageContext.setAttribute("s2", "123,456,789.12"); %> 日期格式化:
数字格式化:
日期解析:::展示数据
日期解析:::数据存入域中
获取d2=${pageScope.d2}
数字解析:::展示数据
数字解析:::数据存入域中
获取n2=${pageScope.n2}

9.5 functions字符串概念标签库

jstl标签库:functions标签库

<%pageContext.setAttribute("s1", "abc123abc321bca110ABC");pageContext.setAttribute("arr", new int[]{1,3,5,7,8,9,0,4}); %> ${s1}是否包含abc::${fn:contains(s1,'abc')}
${s1}中第一次出现123的位置::${fn:indexOf(s1,'123')}
${s1}是否包含abc不区分大小写::${fn:containsIgnoreCase(s1,'ABc') }
${s1}是否以110结尾::${fn:endsWith(s1,'110') }
${s1}数字元素拼接字符串::${fn:join(arr,'-') }
${s1}获取字符串长度::${fn:length(s1) }
${s1}替换使用的a为-::${fn:replace(s1,'a','-') }
${s1}切割使用a字符::${fn:split(s1,'a')}
${s1}是否以110开头::${fn:startsWith(s1,'110') }
${s1}截取子串::${fn:substring(s1,2,4)}
${s1}转化为小写::${fn:toLowerCase(s1) }
${s1}转化为大写::${fn:toUpperCase(s1) }

9.6 core核心标签库

jstl标签库:core标签库:核心标签库

url标签

获取项目路径:
获取aa.do的路径:
请求day03_03el.jsp
请求day03_03el.jsp
jsp/day03_03el.jsp">请求day03_03el.jsp
">请求day03_03el.jsp
u1=${pageScope.u1 }
u2=${requestScope.u2 }

set/out标签:添加和获取域属性

v1=${requestScope.v1}
完全等价于: ${requestScope.v1}


<%--
--%>

remove标签:删除域属性

page中的a:${pageScope.a}
request中的a:${requestScope.a}
session中的a:${sessionScope.a}
application中的a:${applicationScope.a}

if/when/choose标签:选择结构

你是${sex}生:帅哥一个!
你是${sex}生:美女一个!
你是${sex}生:帅哥一个!!!!
你是${sex}生:美女一个!!!!!
score=${score} 级别是:不及格!
score=${score} 级别是:及格!
score=${score} 级别是:良好!
score=${score} 级别是:优秀!

foreach标签:循环结构

<% pageContext.setAttribute("arr", new int[]{1,4,6,7,9,0,3}); pageContext.setAttribute("list", Arrays.asList(new Integer[]{1,4,6,7,9,0,3})); %> arr=${arr}
list=${list }

foreach的使用方式1:

<%--items:指定要遍历的集合/数组 var::定义变量记录其中的元素varStatus::记录遍历的状态:::其index属性记录的是元素的下标--%> ${item}:::${vs.index}:::${arr[vs.index]}
${li}:::${vs.index}:::::::${list[vs.index]}

foreach的使用方式2:

<%--定义一个变量i从1跑到20 步长默认是1 --%> i=${i}
i====${i}

打印九九乘法表:

${i}*${j}=${i*j}

${i}*${(10-j)}=${i*(10-j)}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部