JSP

本文深入解析了JSP指令、动作标签、内置对象及EL表达式的使用,包括page、include、taglib指令,作用域对象如pageContext、request、session、application,以及EL表达式在不同数据类型中的应用案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSP指令

page
  • language:表明所用的语言
  • contentType:具体请求媒体类型
  • pageEncoding:页面编码
  • isErrorpage:该页面是否是错误跳转页面
  • session:该页面是否可以用session
include

file:表明包含了哪个页面
但是这个指令是把另外一个页面的所有内容拿到这个页面后再一起来执行

taglib

prefix(标签库别名) uri(标签库路径)
需要导入标签的jar,一般采用1.1版本的,因为1.1支持EL表达式,1.0不支持EL

JSP动作标签

  • include:把另外一个页面包含进来,但是是先把另外一个页面执行再把结果放到这个页面中
  • forward:请求转发,等同于 request.getRequestDispatcher(“xxx.jsp”).forward(request,response)
  • param:在跳转到另一个页面的时候,加入参数时用到

JSP内置对象(9个)

作用域对象
  • pageContext:作用域只在当前页面
  • request:限于一次请求(重定向——两次请求取不到值)
  • session:限于一次对话(在新的的对话中取不到值)
  • application:整个项目内可以取到(application就是servletContext对象)
普通对象
  • out:JspWriter
  • exception:只有错误页面中存在
  • page:该JSP翻译成的实例对象
  • config:ServletConfig
  • response:response

EL表达式

隐式对象(11个)

作用域对象
  • pageScop
  • requestScop
  • sessionScop
  • applicationScop
头相关对象
  • header
  • headerValues
参数相关对象
  • param
  • paramValues
cookie相关对象
  • cookie
全局化参数相关对象
  • initParam
当前页面的处理
  • pageContext

EL应用实例

	----------存的是单个的字符----------
	<%
		pageContext.setAttribute("name", "pageContext");
		request.setAttribute("name","request");
		application.setAttribute("name","application");
		session.setAttribute("name","session");
	%>
	使用EL表达式取出作用域的值
	${ pageScope.name }
	${ requestScope.name }
	${ applicationScope.name }
	${ sessionScope.name }	
	
	----------存的是数组----------
	<%
		String[] arr01 = {"request01","request02","request03"};
		application.setAttribute("array", arr01);
		String[] arr = {"pageContext01","pageContext02","pageContext03"};	    
	    request.setAttribute("array", arr);
	%>
	使用EL表达式取出作用域的数组的值
	${ array[0] }
	${ array[1] }
	${ array[2] }
	
	(上面名字相同时,取值是按照四个作用域的先后来的  pageContext > request > session > application)
	
	----------存的是集合----------
	<%
		List<String> list = new ArrayList<String>();
		list.add("Collection01");
		list.add("Collection02");
		list.add("Collection03");
		pageContext.setAttribute("collection",list);
	%>
	使用EL表达式取出作用域中的集合的值<br>
	${ collection[0] }
	${ collection[1] }
	${ collection[2] }
	
	----------Map数据----------
	<%
		Map<String,String> map = new HashMap<String,String>();
		map.put("name","jack");
		map.put("sex","man");
		map.put("age","20");
		map.put("address","china");
		map.put("address.house","ctgu");
		pageContext.setAttribute("map",map);
	%>
	使用EL表达式取出作用域中的map的值
	${ map.name }
	${ map.sex }
	${ map.age }
	${ map.address }
	${ map["address.house"] }
	
## JSTL
	/* String name = jack 存在域中,可以用el表达式取出 (默认存到page里边) */
	<c:set var="name" value="jack" scope="session"></c:set>
	${sessionScop.name }
	
	<c:set var="age" value="18"></c:set>
	<c:if test="${age > 16}">
		age大于16岁..........
	</c:if>
	<c:if test="${age <= 16}">
		age小于等于16岁........
	</c:if>
	
	/* 从1遍历到10,得到的结果赋值给i,并且存在page域中,step表示增幅为2 */
	<c:forEach begin="1" end="10" var="i" step="2">
		${i }
	</c:forEach>

	<%
		List<User> list = new ArrayList<User>();
		list.add(new User("jack",18));
		list.add(new User("merry",28));
		list.add(new User("mark",38));
		list.add(new User("json",48));
		
		pageContext.setAttribute("list",list);
	%>
	${list[0] },${list[1] },${list[2] },${list[3] }
	
	/* var表示遍历的每一个对象用var的名称来接受,items表示遍历哪一个集合,里边只能用el表达式来写 */
	<c:forEach var="user" items="${list }">
		${user.name } --------- ${user.age }
	</c:forEach>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值