day06_JSP&EL&JSTL

jsp
什么是jsp:java server Page

从用户角度来说,就是一个网页
从程序员角度来说,是一个java类,因为继承了servlet,所以也可以直接说jsp 就是一个servlet

  • 为什么需要jsp?

html 多数情况用来显示静态内容,一成不变的内容。但是有时候我们需要在网页上显示一些动态的数据,比如: 查询所有的学生信息,根据姓名查询某个具体某个学生。这些动作需要查询数据库然后显示在网页上,html不支持java 代码。jsp 里面可以写java 代码

jsp 的指令

指令写法

 <%@ 指令名字%> 
<%@ page language="java" 
    pageEncoding="UTF-8"%>
  • language 表明jsp 里面可以写java代码
  • contentType 说的是这个文件是什么类型,告诉浏览器是什么内容类型,以及使用的编码形式
contentType="text/html; charset=UTF-8"

text/html 表示这个是一个文本,html 网页
pageEncoding jsp的内容编码

extends 用于指定jsp 翻译成java 文件后继承的父类是什么
import 导包
Session 可选的值又true 和false
用于控制在这个jsp 页面里面,能否直接使用session 对象 在<%%>里面
具体的区别,要看java 源码
如果是true,那么在<%%> 里面可以调用session 的方法

  • errorpage 指的是错误的页面,值需要给错误的页面路径
  • iserrorpage 就是申明某一个页面到底是不是错误的页面

jsp 内置对象

就是我们可以直接在jsp页面中使用这些对象,不用创建

1 pageContext
2 request
3 session
4 application

这四个称之为作用域对象,作用域就是表示这些对象可以存值,他们的取值范围有限定。通过setAttribute 和getAttribute 方法

当jsp iserroepage=“true”时候

<% 
里面有九个内置对象选项,否则将没有exception内置对象
%>
	使用作用域来存储数据
	<br>
	<% 
	pageContext.setAttribute("name", "page");
	request.setAttribute("name", "request");
	session.setAttribute("name", "session");
	application.setAttribute("name", "application");
	
	%>
	取值
	<br>
	<%=pageContext.getAttribute("name")%>
	<%=request.getAttribute("name")%>
	<%=session.getAttribute("name")%>
	<%=application.getAttribute("name")%>

四个作用域的区别:

  • pageContext【PageContext】

pageContext的作用于只能作用于当前页面

  • request【HttpServletRequest】

作用域仅限于一次请求,只要服务器对该请求做出了相应,这个域中存储的就没有了

  • session【HttpSession】

作用于限于一次会话(多次请求和相应)过了就拿不到了

  • application【ServletContext】

整个工程都可以访问,服务器关闭后就不能访问了

6 exception【throwable】
7 page【object】就是这个jsp 翻译成java 类的实例对象
8 config【ServletCongif】

5 out【HttpServletResponse】
9 response【JspWriter】
这两者的区别
在这里插入图片描述
用pageContext 这个对象可以得到其他的八个对象

EL 表达式

出现是为了简化jsp 代码,具体点就是为了简化在jsp 里面的哪些java 代码

  • 写法格式
  • ${表达式}

如何使用

1 取出4个作用域中存放的值

普通手段取值
	<br>
	<%=pageContext.getAttribute("name")%>

	<%=request.getAttribute("name")%>

	<%=session.getAttribute("name")%>

	<%=application.getAttribute("name")%>
	<br>使用EL表达式去除作用域中的值<br>
	${ pageScope.name }
	${ requestScope.name}
	${ sessionScope.name}
	${ applicationScope.name}
	

2 如果域中存的值是数组

	<br>使用EL表达式去除作用域中的值
	<br> ${ pageScope.name } ${ requestScope.name} ${ sessionScope.name}
	${ applicationScope.name} ----------------------------
	<br>
	<%
		String[] a = { "aa", "bb", "cc", "dd" };
		pageContext.setAttribute("array", a);
	%>
	使用el表达式取出作用域数组的值
	<br> ${array[0]},${array[1]},${array[2]},${array[3]},
	-------------------
	<br>
	<%
		List list = new ArrayList();
		list.add("11");
		list.add("22");
		list.add("33");
		list.add("44");
		pageContext.setAttribute("array", list);
	%>
	EL 取出这个集合里面的值<br>
	${array[0]},${array[1]},${array[2]},${array[3]}
	------------------<br>
	<%
		Map map = new HashMap();
	map.put("name", "zhangsan");
	map.put("age",18);
	map.put("address","beijing");
	pageContext.setAttribute("map",map);

	%>
	使用EL 取出Map 里面的值<br>
	${map.name }${map.age}${map.address }

JSTL

全称:jsp Standard Tag Library jsp 标准标签库
简化jsp 的代码编写,替换之间的<%%>的写法,一般同EL 表达式配合

怎么使用

1 导入jar 文件到工程的webContent/web-Inf/lib jstl.jar 和standard.jar
2 在jsp 页面上,使用taglib 指令来引入标签库
3 注意: 如果想支持EL 表达式,那么引入的标签库必须选择1.1版本1.0 版本不支持EL 表达式
<%
List list = new ArrayList();
list.add(new User(“zhangsan”,18));
list.add(new User(“lisi”,28));
list.add(new User(“maliu”,38));
list.add(new User(“qiangqi”,48));
pageContext.setAttribute(“list”, list);
%>
items 表示遍历哪一个对象,注意: 这里必须写EL 表达式
value: 遍历出来的每一个元素用user去接收

<c:forEach var=“user” items="${list }">
u s e r . n a m e − − − {user.name}--- user.name{user.age}
</c:forEach>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值