JSP.EL.JSTl基础知识

0.JSP:Java Server Pages 可写html又可写Java,本质是Servlet

1.原理:.jsp -> .java -> .class -> 由class字节码文件提供访问 本质是Servlet

.jsp可写入代码查:
	<%= request.getServletContext().getRealPath(".") %>
得:
	D:\Java\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\WebServlet
而.jsp在:
	D:\Java\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\work
		\Catalina\localhost\WebServlet\org\apache\jsp

2.代码位置:

1.<% 将被包含于servlet接口中的实现的service方法,页面请求,无论是GET或是POSTMethod %>

	包含于 public void _jspService(){...}
	
2.<%! 成为该类的成员变量 %>
	
3.<%= 打算输出的内容,也将被包含于servlet接口中的实现的service方法中,使用out.write() %>

3.包导入

格式:

	<%@page import="java.net.URLDecoder"%>
	<%@page import="java.net.URLEncoder"%>

简单方法:在缺失包的类上, alt+/ ,可完成包的导入

4.内置对象

4个域对象:共享数据 Attribute(get,set,remove)
域范围从小到大:
javax.servlet.jsp.PageContext 	pageContext 当前页面,可获得其余对象
javax.servlet.http.HttpServletRequest 	request	一次请求多个资源(转发)
javax.servlet.http.HttpSession 	session	    一次会话多个请求(重定向)
javax.servlet.ServletContext 	application 所有用户间共享数据



javax.servlet.ServletConfig 			config  servlet的配置对象
javax.servlet.jsp.JspWriter 			out 	输出对象
java.lang.Object		 				page  	 当前servlet
javax.servlet.http.HttpServletResponse 	response 响应对象
java.lang.Throwable 					excepiton 异常对象

5.指令:配置jsp,导入资源文件

分类:
	page:	ContentType,
			pageEncoding 当前页面编码,
			language,
			buffer 缓冲区大小,
			import 导入包..一行一个
			errorPage 发生错误去其他页面,
			isError	标识是否为错误配置,true可以使用excepiton内置对象
	include:
			<%@include file="...."%> 导入文件:并显示

	
	taglib:导入标签库
			<%@taglib prefix="xx" uri="标签库position"%>

6.注释:

<!-- -->  	html特有的,浏览器接收,不显示
<%-- -->	jsp特有的,浏览器不接收,不显示

7.EL,JSTL 用于替换java脚本代码<%.%!.%=.%>

EL Expression Language 表达式语言
JSTL Java Server Pages Tag Library JSP标准标签库

8.EL:

1.使用
2.忽略EL
3.用途

1.使用:

${表达式}:结果会输出,若为空则,显示空字符串

2.忽略EL:

在当前表达式前\$:会忽略当前EL 
在page指令中: isELIgnored="true" :忽略所有EL

3.用途:

1.运算
	运算符:+-*/% == <= && || ! empty:(Str,List,Map)null或是长度为0

2.获取值(只能从域对象中获取“属性”值)
	1.${域名称.键名}:从指定域名称的域对象获取指定键名的值
	2.${键名}:从域范围最小的开始找出值		
	3.${域名称.键名(对应value:JavaBean实体类对象).JavaBean实体类对象的属性} 
			:自动调用get方法,并将get的结果返回出来

	4个域对象:共享数据 Attribute(get,set,remove)
	域范围从小到大:
	javax.servlet.jsp.PageContext 	pageContext 当前页面,可获得其余对象
	javax.servlet.http.HttpServletRequest 	request	一次请求多个资源(转发)
    javax.servlet.http.HttpSession 	session	    一次会话多个请求(重定向)
    javax.servlet.ServletContext 	application 所有用户间共享数据
	
		
	对应的域名称:
		1.pageScope
		2.requestScope
		3.responseScope
		4.applicationScope
	
	方式:
		list[index]
		map["key"]
		map.keyName

举例:

ELDemo.jsp

<% 
	User user = new User();
	user.setName("李白");
	user.setPassword("123456");
	user.setLoginTime(new Date());
	session.setAttribute("us", user);
%>	

<%
Map map = new HashMap();
map.put("name", "李太白");
map.put("age", 19);
session.setAttribute("mip",map);
%>

what time is?<br/>
${sessionScope.us.logTimeStr} 
<br/>
${sessionScope.ls[0]}
<br/>
${sessionScope.mip["name"]}
<br/>
${sessionScope.mip.name}

User.java

public Date getLoginTime() {
	return loginTime;
}

public void setLoginTime(Date loginTime) {
	this.loginTime = loginTime;
}

public String getLogTimeStr() {
	SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
	return simpleDateFormat.format(loginTime);
}
...

9.JSTL:

1.使用步骤
2.常用标签if choose foreach

1.使用步骤:

1.导入jstl相关jar包:
	jstl-impl-1.2.jar
	javax.servlet.jsp.jstl-api-1.2.2.jar
2.引入标签库taglib
	<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
3.使用标签

2.常用标签if,choose,foreach 标签的属性都使用""包裹

1.if  test布尔表达式,可以是EL表达式,
	若test结果为true,输出标签体内容,否则不显示

<c:if test="${1>=1}"><h1>he1o</h1> </c:if>
<c:if test="true">he13o</c:if>
<c:if test="${not empty sessionScope.ls}">hwj1o</c:if>
<c:if test="${3 mod 2 !=1}"><h1>h1eo</h1> </c:if>

2.choose choose标签内嵌套when,otherwise标签 
				形成 switch-case-default结构

<c:choose>
<c:when test="${sessionScope.number == 4}"> it is 4</c:when>
<c:when test="${sessionScope.number == 3}"> it is 3</c:when>
<c:when test="${sessionScope.number == 6}"> it is 6</c:when>
<c:when test="${sessionScope.number == 7}"> it is 7</c:when>
<c:otherwise> it is sb</c:otherwise>
</c:choose>

3.foreach 迭代容器或是重复执行
	begin: 起始下标
	end: 终止下标(包含该下标)
	step:步长
	items:引用容器 使用EL获取值"${}"
	var:变量名称
	varStatus:->index,count
				获取循环体的当前下标,循环次数	

ELDemo.jsp:

<%  List list = new  ArrayList();
	list.add("abc");
	list.add("aec");
	list.add("avc");
	list.add("aec");
	session.setAttribute("ls", list);
%>

1.例子1

<c:forEach var="i" step="1" begin="0" end="10" varStatus="s">
${i}
${s.index}
${s.count}
<br/>
</c:forEach>

2.例子2

<c:forEach items="${sessionScope.ls}" var ="ls" varStatus="les" begin="1" end="2" step="1">
${ls}
</c:forEach>

3.例子3

<table align = "center" border="1px solid black">
<tr>
<th>编号</th>
<th>名称</th>
</tr>

<c:forEach items="${sessionScope.list}" varStatus="ls">
<c:if test="${ls.count % 2 == 1}">
<tr bgcolor = "pink">
<td>${ls.count}</td>
<td>${list[ls.index]}</td>
</tr>
</c:if>

<c:if test="${ls.count % 2 != 1}">
<tr bgcolor="blue">
<td>${ls.count}</td>
<td>${list[ls.index]}</td>
</tr>
</c:if>

</c:forEach>

</table>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值