EL+JSTL--课堂代码笔记

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
						http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
	id="WebApp_ID" version="4.0">
	<!-- xml=可扩展的标记语言 -->
	<!-- ns=namespace命名空间 -->
	<!-- xsd=xml schema definition文档结构描述 -->

<!-- 	<servlet> -->
<!-- 		<servlet-name>Test1Servlet</servlet-name> -->
<!-- 		<servlet-class>test211230.Test1Servlet</servlet-class> -->
<!-- 	</servlet> -->
<!-- 	<servlet-mapping> -->
<!-- 		<servlet-name>Test1Servlet</servlet-name> -->
<!-- 		<url-pattern>/Test1Servlet</url-pattern>    -->
<!-- 	</servlet-mapping> -->
<!-- 		load-on-startup标签作用:tomcat启动时执行该servlet的初始化 -->
<!-- 		当值为负整数或未指定值时,该servlet是在第一次被调用时加载并初始化 -->
<!-- 		当值为0或正整数是,tomcat启动时会加载并初始化,值越小优先级越高 -->
<!-- 		一般会设置上,空间换时间,避免用户在使用是加载等待 -->
	<servlet>
		<servlet-name>Test3Servlet</servlet-name>
		<servlet-class>test211230.Test3Servlet</servlet-class>
		<init-param>
			<param-name>username</param-name>
			<param-value>zhangsan</param-value>
		</init-param>
		<init-param>
			<param-name>password</param-name>
			<param-value>123456</param-value>
		</init-param>		
	</servlet>
	<servlet-mapping>
		<servlet-name>Test3Servlet</servlet-name>
		<url-pattern>/Test3Servlet</url-pattern>   
	</servlet-mapping>
	
<!-- 配置过滤器 -->
	<filter>
		<filter-name>TestFilter</filter-name>
		<filter-class>test220105.TestFilter</filter-class>
		<init-param>
			<param-name>username</param-name>
			<param-value>zhangsan</param-value>
		</init-param>
		<init-param>
			<param-name>password</param-name>
			<param-value>123123</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>TestFilter</filter-name>
		<url-pattern>/test/test220104/TestUpload.jsp</url-pattern>
<!-- 		<dispatcher>REQUEST</dispatcher> -->
<!-- 默认值是request -->
<!-- 		<dispatcher>FORWARD</dispatcher> -->
<!-- 		<dispatcher>INCLUDE</dispatcher> -->
	</filter-mapping>	
	<filter-mapping>
		<filter-name>TestFilter</filter-name>
		<url-pattern>/Test1Servlet</url-pattern>
	</filter-mapping>

<!-- 配置过滤器 -->
	<filter>
		<filter-name>Test2Filter</filter-name>
		<filter-class>test220105.Test2Filter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>Test2Filter</filter-name>
		<url-pattern>/test/test220104/TestUpload.jsp</url-pattern>
	</filter-mapping>	
	<filter-mapping>
		<filter-name>Test2Filter</filter-name>
		<url-pattern>/Test1Servlet</url-pattern>
	</filter-mapping>
	
	
	<listener>
		<listener-class>test220105.TestLinstener</listener-class>
	</listener>
	
<!-- 	配置离线JSTL -->
	<jsp-config>
		<taglib>
			<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
			<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
			<taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
		</taglib>
	</jsp-config>
	

	<display-name>demo211229</display-name>
	<welcome-file-list>
		<!-- 欢迎页 -->
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
</web-app>

PersonModel.java

package test122131;

public class PersonModel {
	
	private int id;
	private String code;
	private String name;
	private int age;
	private String gender;
	
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}

}

text-EL

EL表达式=Expression Language

主要作用
1-获取数据--(主要掌握)
2-执行运算
3-获取web常用对象(EL表示式的内置对象-前四个)
4-调用Java方法(很少用)

1-获取数据
EL表达式主要用于在jsp页面中使用脚本表达式
从各种web域中获得java对象或数据
如:域对象,对象属性,list/map/数组
通俗解释:将java中的东西放在网页中显示出来

语法:${XXXX}

获取规则:分别从pageContext,request,session,application中查找相应的数据
找到则返回,找不到则输出空字符串(PS:不是null)
EL提供的隐式对象:
pagaScope
requestScope
sessionScope
applicationScope

2-执行运算(表达式/运算符)
empty

3-EL提供的隐式对象:
pagaScope
requestScope
sessionScope
applicationScope

el1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"
    import="test122131.PersonModel,java.util.*"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!--     isELIgnored="false" 使网页能解析出EL表达式,有的网页默认有 -->

<!-- http://127.0.0.1:8080:/demo211229/test/test220106/el1.jsp -->

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- http://127.0.0.1:8080/demo211229/test/test220106/el1.jsp -->

<% request.setAttribute("key1", "value1"); %>
<!-- 往域中存一个字符串 -->
<%=request.getAttribute("key1") %><br>
<% out.print(request.getAttribute("key1")); %><br>
${key1}<br>

<hr>
<%
PersonModel p1=new PersonModel();
p1.setAge(20);
p1.setId(1);
p1.setName("lxf");
p1.setGender("female");
request.setAttribute("key2", p1);
// 往域中存一个对象
%>
<!-- 将与域中存入的对象的属性名对应的属性值取出 -->
${key2.id}<br>
${key2.name}<br>
${key2.age}<br>
${key2.code}<br>
<!-- 结合回显功能 -->
<!-- EL表达式可以作为网页标签的一部分来使用 -->
<input type="text" value="${key2.name}"/>
<input type="radio" name="" value=""
	${key2.gender=='female'?"checked":""} /><input type="radio" name="" value=""
	${key2.gender=='male'?"checked":""} /><br>

<!-- jsp执行过程:jsp-(java代码在这个过程执行完)-servlet-html -->

<%
PersonModel p2=new PersonModel();
p2.setAge(20);
p2.setId(2);
p2.setName("lxf");
p2.setGender("female");
PersonModel p3=new PersonModel();
p3.setAge(20);
p3.setId(3);
p3.setName("lxf");
p3.setGender("female");
List<PersonModel> list1=new ArrayList<>();
list1.add(p2);
list1.add(p3);
//往域中存一个集合
request.setAttribute("list", list1);
%>
${list[0].id}
<!-- jstl 遍历 -->
<%-- <c:forEach var="person" items="${list}"> --%>
<%-- 	<p>${person.id}</p> --%>
<%-- </c:forEach> --%>

<hr>
<%
Map<String,String> map1=new HashMap<>();
map1.put("a","aa");
map1.put("b","bb");
map1.put("c","cc");
map1.put("1","11");
request.setAttribute("map", map1);
%>
${map.a}<br>
<!-- map可以让数字作为键值对的键,不能用.的形式得到,只能用标准形式 -->
${map["1"]}<br>
<!-- 遍历map集合 -->
<!-- java代码形式 -->
<!-- for(Entry entry:map.entrySet){ -->
<!-- 	sysout(entry.getKey()+entry.getValue()) -->
<!-- } -->
<!-- jstl形式 -->
<%-- <c:forEach var="entry" items="${map}"> --%>
<%-- 	<p>${entry.key}=${entry.value}</p> --%>
<%-- </c:forEach> --%>

<hr>
<%
// pageContext.setAttribute("key5", "value1");
request.setAttribute("key5", "value2");
session.setAttribute("key5", "value3");
application.setAttribute("key5", "value4");
%>
${key5}
<!-- 从小到大的域依次进行查找 -->
${sessionScope.key5}
<!-- 得到指定域的属性值 -->
<!-- 域中没有的话得到的是空字符串 -->


</body>
</html>

el2.jsp

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- http://127.0.0.1:8080:/demo211229/test/test220106/el2.jsp -->

<!-- 运算符 -->
${16+5}<br>
${16-5}<br>
${16*5}<br>
${16/5}<br>
<%-- ${16 div 5}<br> --%>
${16%5}<br>
${16 mod 5}<br>
<hr>

<!-- 比较 -->
<!-- != ne -->
<!-- < lt -->
<!-- > gt -->
<!-- <= le -->
<!-- >= ge -->
<!-- 有对象 -->
${user == null}
${user eq null}
<!-- 逻辑 -->
<!-- && and -->
<!-- || or -->
<!-- ! not -->
<!-- ?: -->
${user == null? "您没有登录":"登陆了"}
<hr>

<!-- empty -->
<!-- 有对象且对象不为空 -->
<%
List<String> list1=null;
List<String> list2=new ArrayList();
List<String> list3=new ArrayList();
list3.add("aabb");
request.setAttribute("list1", list1);
request.setAttribute("list2", list2);
request.setAttribute("list3", list3);
%>
${empty list1}<br>
${empty list2}<br>
${empty list3}<br>

</body>
</html>

jstl.jsp

<title>JSTL</title>
</head>
<body>
<!-- http://127.0.0.1:8080/demo211229/test/test220106/jstl.jsp -->

<!-- JSTL=java server pages standard tag library = jsp标准标签库 -->
<!-- 分类:核心标签库core+格式化标签库format+sql标签库+xml标签库+函数标签库 -->

<!-- JSTL引入过程 -->
<!-- 1-引入两个jar包:standard+jstl -->
<!-- 2-@taglib=prefix+uri -->
<!-- 3-tld+web.xml(离线方式) -->

<c:out value="${key}" default="默认值"></c:out><br>
<c:out value="&lt;&gt;&nbsp;&amp" escapeXml="false"></c:out><br>
<c:out value="<a href='http://www.baidu.com'>百度</a>" escapeXml="false"></c:out><br>
<hr>

<!-- 往域中存取数据 -->
<c:set var="item1" value="1"></c:set>
${item1}<br>
<!-- 默认存到了最小的pageScope域里,可以人为指定上scope -->
<c:set var="item2" value="2" scope="request"></c:set>
${requestScope.item2}<br>
<c:set var="item3">3</c:set>
${item3}<br>
<!-- 得到对象,将对象赋上属性 -->
<jsp:useBean id="p1" class="test122131.PersonModel"></jsp:useBean>
<c:set target="${p1}" property="name" value="zhangsan"></c:set>
${p1.name}

<!-- 移除属性 -->
<c:remove var="item1"/>
${item1}
<hr>

<!-- 分支流程控制语句---------最重点---------- -->
<c:set var="name" value="zhangsan"></c:set>
${name=='zhangsan'}<br>
<c:if test="${name=='zhangsan'}" var="t1" scope="page">
<p>张三<p>
<!-- 可以放标签,功能更强大,更加推荐使用 -->
</c:if>
<!-- 简化 -->
${name=='zhangsan'?"张三":""}<br>
${t1}<br>
<hr>

<!-- choose分支 -->
<c:set var="score" value="80"></c:set>
<c:choose>
	<c:when test="${score>60}"><p>很好</p></c:when>
	<c:when test="${score==60}"><p>刚好好</p></c:when>
	<c:when test="${score<60}"><p></p></c:when>
	<c:otherwise>没考</c:otherwise>
</c:choose>
<hr>

<!-- 循环指定次数(步长) -->
<c:forEach var="i" varStatus="k" begin="3" end="10" step="3">
	第${k.count}次迭代,索引:${k.index},值是:${i}
	是否是第一次迭代${k.first} ,是否是最后一次迭代${k.last}<br>
</c:forEach>
<hr>

<!-- list集合遍历 -->
<% 
List<String> list=Arrays.asList("a0","a1","a2","a3","a4","a5","a6","a7","a8");
request.setAttribute("list", list);
%>
<c:forEach items="${list}"
	 var="i" varStatus="k" begin="0" end="10" step="3">
<!-- 	 不写上一行,默认值是把集合中的所有元素迭代出来 -->
	第${k.count}次迭代,索引:${k.index},值是:${i}
	是否是第一次迭代${k.first} ,是否是最后一次迭代${k.last}<br>
</c:forEach>
<hr>

<!-- map集合遍历 -->
<%
Map<String,String> map=new HashMap<>();
map.put("key1", "val1");
map.put("key2", "val2");
map.put("key3", "val3");
map.put("key4", "val4");
request.setAttribute("map", map);
%>
<c:forEach items="${map }" var="m">
	key=${m.key },value=${m.value }<br>
</c:forEach>
<hr>

<!-- set集合遍历 -->
<%
Set<String> set=new HashSet<>();
set.add("大");
set.add("坏");
set.add("蛋");
request.setAttribute("set",set);
%>
<c:forEach items="${set }" var="s">
	${s }<br>
</c:forEach>
<hr>

<!-- String[] array="你,是,我,的,小,苹,果".split(","); -->
<c:forTokens items="你,是,我,的,小,苹,果" delims=","
	var="i" varStatus="k">
	${i }
</c:forTokens>

</body>
</html>

jstlfmt.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>格式化--国际化/本地化</title>
</head>
<body>

<!-- 了解即可---网课220106-4 -->

</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值