笔记3详情

# jsp元素 #
## 脚本元素 ##
1.jsp声明

可以用来声明变量或者方法
语法:<%! 声明1;声明2%>

	<%! int flag=1;
	int flag1=2;
	public int getFlag(){
		return 2;
	}
	%>
2.表达式

可以用来访问Java变量或者表达式
语法:<%=表达式 %>

	<%= flag %>
	<%= getFlag() %>
3.脚本片段

插入任意有效的Java程序片段
语法:<% %>

	<% user[] arr=new user[6];
	for(int i=0;i<5;i++){
		user u=new user();
		u.setUsername("u_"+i);
		arr[i]=u;
	}
	request.setAttribute("arr",arr);
	%>
补充:有时候需要导入包
语法:<%@ page import="url">

4.注释

	jsp注释:<%-- --%>
	HTML注释:<!-- -->
## 指令元素 ##
1.page指令

作用于整个页面,定义了与JSP页面相关的属性。
语法:<%@ page 属性1="" 属性2=""%>
	
	<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
2.include指令

经常用于包含页面底部或者首部等不经常变化的部分。
发生在jsp文件被转换成servlet的时候引入文件。
用来包含其它文件,可以是jsp,html或者文本文件。
语法:<%@ include  file="url"%>

	<%@ include file="second.jsp" %>
3.taglib指令

定义一个标签库以及其自定义标签的前缀。指定JSP页面所使用的标签库,通过该指令可以在JSP页面中使用标签库中的标签

	<!-- core:核心库 -->
	<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
	<!-- fmt:格式化库 -->
	<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
补充:需要导入两个架包:jstl-1.2.jar和standard-1.1.2.jar
## 动作元素 ##
1.<jsp:include>
用来包含静态和动态的文件。把指定文件插入正在生成的页面。
发生在页面被请求的时候。

属性:

Page 包含的文件路径

Flush 定义在包含资源前是否刷新缓存区

2.<jsp:userBean>

具体看示例:

	<!-- useBean用法 -->
	<jsp:useBean id="user" class="bean.user"></jsp:useBean>
	<!-- 设置 -->
	<jsp:setProperty property="age" name="user" value="33"/>
	<jsp:setProperty property="username" name="user" value="李四"/>
	<jsp:setProperty property="gender" name="user" value="男"/>
	<!-- 输出 -->
	name:<jsp:getProperty property="username" name="user"/>
	age:<jsp:getProperty property="age" name="user"/>
	gender:<jsp:getProperty property="gender" name="user"/>
补充:property属性的值,与你的Javabean中一致。

3.<jsp:forward>

把请求转到另一个页面。

<jsp:param> 它用来作为forward和include标签传递参数

first.jsp:
	
	<jsp:forward page="third.jsp">
	<jsp:param value="29" name="age"/>
	</jsp:forward>
third.jsp:

	<%= request.getParameter("age") %>

# 内置对象 #
	request

HttpServletRequest 代表客户端的请求信息,主要用于接收通过HTTP协议传送到服务器的数据。(包括头信息,系统信息,请求方式以及请求参数等)
request对象的作用域为一次请求

	response

HttpServletResponse 代表对客户端的响应,将JSP容器处理过的对象传回到客户端。
Reponse的作用域是JSP

	out

Javax.servlet.jsp.jspwriteout 
用于在web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。数据输出完毕以后,要及时关闭输出流。
out对象是一个 输出流,用来想客户端输出数据。

	pagecontext

Javax.servlet.jsp.PageContext
对象的作用是取得任何范围的参数,可以访问page、request、session、application范围的变量。
pageContext对象的创建和初始化都是由容器来完成的。

	session

Javax.servlet.http.HttpSession 
在一个jsp页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。
当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器通过session知道这个客户。
Session对象内部里使用Map类来保存数据。

	application

Javax.servlet.ServletContextApplication
将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。

	config

Javax.servlet.ServletConfigconfig
取得了服务器的配置信息。主要用于获取servlet的初始化参数信息。

	Cookie

Web服务器保存在用户硬盘上的一段文本。Cookie允许一个web站点在用户电脑上保存信息并且随后再取回。

	exception

Java.lang.ThrowableException 用于显示异常信息。

补充:exception使用

用errorPage和isErrorPage设置

first.jsp:
	
	<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="error.jsp" isELIgnored="false"%>
error.jsp:

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

# EL表达式 #
1.EL表达式默认开启,也可以使用isELIgnored设置,true表示关闭,默认是false
	
	<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="error.jsp" isELIgnored="true"%>
2.EL的内置对象

一共11个内置对象,不一一列举。

3.EL表达式读取四大域

${xxxx},全域查找名为xxx属性,查找顺序是page>request>session>application,如果不存在,输出空字符串

	${pageScope.xxx}
	${requestScope.xxx}
	${sessionScope.xxx}
	${applicationScope.xxxx}
4.EL表达式读取javabean

看示例:

	${user.username }
	${work.job }
5.EL表达式读取数组和集合(list,map)

1)访问数组:{数组名[index]}

2)访问list: {list名[index]}

3)访问map:{map对象.key} 

示例:

	<!--数组-->
	<% user[] arr=new user[6];
	for(int i=0;i<5;i++){
		user u=new user();
		u.setUsername("u_"+i);
		arr[i]=u;
	}
	request.setAttribute("arr",arr);
	%>
	<!--list-->
	<% List<user> list=new ArrayList<user>();
	user user1=new user();
	user1.setAge(15);
	user1.setGender("男");
	list.add(user1);
	request.setAttribute("list",list);
	%>

	<!-- 数组和list -->
	${arr[1].username }
	${list[0].age }
	${list[0].gender }

6.其他EL表达式运算

	<!-- empty和条件运算 -->
	empty运算:${empty info }
	条件运算操作:${flag>flag1?"大于":"小于" }

# JSTL #
JSTL四大标签库:

1.core:核心库【重点】

2.fmt:格式化库

3.sql:数据库标签库,过时

4.xml:xml标签库,过时

## core标签库(c库) ##
1.out和set

	<!-- out输出 -->
	<c:out value="username"/>
	<!-- set输入参数 -->
	<c:set var="code" value="xxx" scope="application"></c:set>
	<c:set var="ccc" value="lll" scope="session"></c:set>
	<!-- 根据var属性的值输出-->
	${code }
	${ccc }

2.url
	
	value:指定一个路径,它会在路径前面自动加上项目名
     <c:url value="/index.jsp"
     子标签:<c:param> 用来给url后面添加参数
	name:自动在url中添加参数名
	value:自动在url中添加参数值
     <c:url>
     	<c:param name="username" value="张山"></c:param>
     </c:url>
     var:指定变量名,一旦添加了就不会把url不会输出到页面,而是把生成的url保存到域中。
     scope:它与var一起使用,用来保存url
补充:我也不会ヽ(ー_ー )ノ

3.if

对应Java中的if语句

	<c:if test="布尔类型"></c:if>

if标签的test属性必须是一个boolean类型的值,如果test的值为true,那么执行if标签的内容,否则不执行

choose:对应Java中的if/else if/else 。

when标签的test为true时,会执行这个when的内容,当所有when标签的test都为false时,才会执行otherwise标签的内容

4.forEach

1.用来循环遍历数组,集合。
2.可以用来计算方法方式来循环。

计数方式:

	<c:forEach var="i" begin="1" end="10">${i}</c:forEach>
属性:

	var:循环变量
	begin:设置循环变量从几开始
	end:设置循环变量到几结束
	step:设置步长
用来输出数组,集合:

	<c:forEach items="${strs}" var="str">${str}<br/><c:forEach>
属性:

	items:指定要循环的对象,它可以是一个数组或者一个集合
	var:把数组和集合中的每个元素赋值给var指定的变量

5.其他等等

# ftm标签库 #
直接上示例:

	<!-- 格式化时间 -->
	<c:set var="now" value="<%=new java.util.Date() %>"/>
	时间:<fmt:formatDate value="${now }" pattern="yyyy-MM-dd hh:mm:ss"/><br>
	时间:<fmt:formatDate value="${now }" type="time"/><hr>
	
	<!-- 格式化数字 -->
	<c:set var="n" value="<%=flag%>"></c:set>
	<c:set var="nu" value="<%=num %>"></c:set>
	<c:set var="nu1" value="<%=num1 %>"></c:set>
	<!-- 四舍五入,不足补位 -->
	<fmt:formatNumber value="${n }" pattern="0.00"></fmt:formatNumber>
	<!-- 四舍五入,不足不补位 -->
	<fmt:formatNumber value="${nu }" pattern="#.##"></fmt:formatNumber>
	<fmt:formatNumber value="${nu1 }" pattern="#.##"></fmt:formatNumber>

  

转载于:https://www.cnblogs.com/zlh233/p/11252757.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值