JSP
2020-12-07 00:20
在html中嵌入大量java代码同样页面很难看,不易于维护。为了解决这问题,SUN开发了标签技术,开发标签去替代JSP页面中的源代码。
1.JSP标签
标签:实现页面包含。
标签:实现页面转发。
2.EL标签
一种表达式,可以在JSP中使用,实现如下四个功能 ${...}。
1. 获取数据
获取常量:字符串,数字,布尔常量。
获取变量:在四大作用域中搜寻指定名称变量,如果没有找到则什么也不输出。
注意:
el获取的变量必须在域中才可以获取。
[]与.的区别: 使用[]的地方都可以换成. 但是[]中有特殊字符时除外。
el表达式只能获取值,不能设置值,也不能遍历数据。
如果需要在JSP中写web应用名称,不要写死,也不要写java代码
${pageContext.request.contextPath}
@ page language="java" import="java.util.*" pageEncoding="utf-8"%> @page import="com.itcast.domain.Person"%> DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> html> head> head> body> h1>EL获JavaBean的属性h1> Person p = new Person(); p.setName("金毛狮王"); p.setAge(200); pageContext.setAttribute("p",p); %> ${p.name } ${p.name } ${p.age } a href="${pageContext.request.contextPath }/index.jsp">xxa> h1>EL获Map中的数据h1> Map map = new HashMap(); map.put("name","张无忌"); map.put("age",19); map.put("wugong","乾坤大挪移"); map.put("wugong.2","九阳神功"); pageContext.setAttribute("wugong","age"); pageContext.setAttribute("map",map); %> ${map["wugong"] } xxx ${map[wugong] }xxx ${map["wugong.2"] } h1>EL获集合中的数据h1> List list = new ArrayList(); list.add("张翠山"); list.add("殷素素"); list.add("无忌孩儿"); list.add("赵敏"); request.setAttribute("list",list); %> ${list[3] } h1>EL获取数组中的数据h1> String [] addrs = {"武昌","汉口","汉阳"}; pageContext.setAttribute("ads",addrs); %> ${ads[1] } h1>EL获取变量h1> request.setAttribute("name","zhang"); %> ${name } h1>EL支持的常量:字符串 数字 布尔h1> ${"abc" } ${123.234} ${false } body> html>
2. 执行运算
在el表达式中如果遇到非数字运算,会试图自动转换成数字,如果转换失败则报错。
@ page language="java" import="java.util.*" pageEncoding="utf-8"%> DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> html> head> head> body> h1>三元运算符h1>hr> ${3>2 ? "yes":"no" } h1>empty运算符h1>hr> List list = new ArrayList(); list.add("aaa"); pageContext.setAttribute("list",list); String str = "sdf"; pageContext.setAttribute("str",str); %> ${empty list} ${empty str } h1>el支持逻辑运算符h1>hr> && and || or ! not ${!(3>2 && 31)}
>el支持比较运算h1>hr> > gt >= ge lt = le == eq != ne ${3>2 }${53 }${3 ne 2 } ${3 eq 2 }
>el支持算数运算h1>hr> ${3+2 } ${3*2 } ${3+"5"} body> html>
3. 获取常用开发对象
el内置了11个对象,可以不存入域中就直接使用。
pageContext : 可以作为入口通过el获取八大隐式对象。
pageScope
requestScope
sessionScope
appcationScope
四大域中所有域属性组成的Map.
注意:这是Map,而不是四大作用域对象本身。
param Map
paramValues Map
代表当前请求中,所有请求参数组成的Map。
header Map
headerValues Map
代表请求头组成的Map。
cookie Map
cookie信息组成的Map
initParam Map
web初始化信息组成的Map
4. 调用java方法,限于调静态的共有方法
写一个类包含要被调用的静态共有方法
写一个tld描述文件,描述一下要被调用的方法 -- tld文件必须放置在WEB-INF目录下非classes和lib目录中
再在jsp页面中使用taglib指令引入tld描述文件,从而在jsp页面中调用函数3.JSTL标签库
标签:用于输出一段文本内容到pageContext对象当前保存的out对象中。
标签:把某个对象存在指定域的范围内。或者设置web域中的java.util.Map类型的属性对象或javaBean类型的属性对象的属性。
标签:用于删除web域中的属性。
标签:用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:
nested actions
标签:可以构造“if-then”简单的判断表达式。
标签:用于指定多个条件选择的组合边界,它必须与 和 标签一起使用。 使用
, 和 三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。
标签:用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容。
标签:用来浏览一字符串中所有的成员,其成员是由定义符号所分隔的
URL重写就是将会话标识号以参数形式附加在URL地址后面
标签用于实现请求重定向 4.自定义标签