JSP
- 指令
- 作用:用于配置JSP页面,导入资源文件
- 格式:<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 …>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
- 分类:
- page:配置JSP页面的
- contentType:相当于response.setContentType()
1.设置响应体的mime类型和字符集
2.设置jsp的页面编码(只有高级的IDE才可以生效,如果使用低级的IDE需要使用pageEncoding属性来
设置当前页面的字符集pageEncoding=“GBK”) - import:导包
最好就这样写类似java的导包
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
- errorpage:当前页面发生异常后会自动跳转到errorpage的页面上
使用方式:
<%@ page contentType="text/html;charset=UTF-8" errorPage="errorpage.jsp" language="java" %>
- isErrorPage:标识当前页面是否是错误页面,有两个值一个true一个是false,如果值为true则可以
调用内置对象exception,来抛出异常,如果是false(默认值),则不可以使用内置对象
使用方式:
<%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" language="java" %>
- contentType:相当于response.setContentType()
- include:页面包含的,导入页面的资源文件.主要是用来设置不经常变得资源,比如说页眉上的学校或者什么
使用方式:<%@include file=“top.jsp”%> - taglib:导入资源
- 使用方式:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
prefix后的c是自定义的 - 要想使用这些,需要先导入
javax.servlet.jsp.jstl-1.2.4.jar
jsp-api-2.1.jar
jstl-api-1.2.jar
servlet-api-2.5.jar。。这几个包
- 使用方式:
- 内置对象
- 在jsp页面中不需要创建,直接使用的对象
- 一共有9个:
变量名-------------------- 真实类型------------------------作用
pageContext-------------PageContext---------------当前页面共享数据,还可以获取其他八个内置对象
request---------------HttpServletRequest-----------一次请求访问的多个资源(转发)
session---------------------HttpSession---------------一次会话的多个请求间
application---------------ServletContext-------------所有用户间共享数据
response------------HttpServletResponse---------响应对象
page---------------------------Object-------------------当前页面(Servlet)的对象 this
out---------------------------JspWriter------------------输出对象,数据输出到页面上
config---------------------ServletConfig---------------Servlet的配置对象
exception-------------------Throwable----------------异常对象
- 一共有9个:
- 在jsp页面中不需要创建,直接使用的对象
- page:配置JSP页面的
El表达式
- 作用:用来简化和替换jsp页面中java代码的编写
- 语法:${表达式}
- 注意:jsp默认是支持el表达式的。如果要忽略el表达式
1. 设置jsp中的page指令,添加isELIgnored="true"
忽略当前jsp中所有的el表达式
2. ${表达式}:忽略当前的el表达式 - 使用
- 运算:
- 算数运算符:+ - * /(div) %(mod)
- 比较运算符: > < >= <= == !=
- 逻辑运算符: &&(and) ||(or) !(not)
- 空运算符: empty:== 用来判断字符串、集合、数组对象是否为null或者长度是否为0==
- 获取值
- el表达式只能从域对象中获取值
- 语法:
- ${域名城.键名}:从指定域中获取指定键的值
- 域名城:
- pageScope --> pageContext
- requestScope --> request
- sessionScope --> session
- applicationScope --> application(ServletContext)
- 在request域中存储了name=“张三”,获取为${requestScope.name}
- 域名城:
- ${键名}:就是不用加那个域名称了。表示依次从最小的域中查找是否有该键对应的值,直到找到为止
- 获取类对象、List集合、Map集合的值
- 对象:${域名城.键名.属性名}本质上是来调用对象的getter方法的
- List集合:${域名称.键名[索引]}
- Map集合:
** ${域名称.键名.key名称}
** ${域名称.键名[“key名称”]}
- ${域名城.键名}:从指定域中获取指定键的值
- 隐式对象:
- el表达式中有11个隐式对象
- pageContext:
- 获取jsp其他八个内置对象
- ${pageContext.request.contextPath}:动态获取虚拟目录
- 获取jsp其他八个内置对象
- 运算:
JSTL
-
概念:JavaServer Pages Tag Library JSP标准标签库
* 是由Apache组织提供的开源的免费的jsp标签 <标签> -
作用:用于简化和替换jsp页面上的java代码
-
使用步骤:
- 导入jstl相关jar包
- 引入标签库:taglib指令: <%@ taglib %>
- 使用标签
-
常用的JSTL标签
-
if:相当于java代码的if语句
- 属性:
- test 必须属性,接受boolean表达式
- 如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容
- 一般情况下,test属性值会结合el表达式一起使用
- 注意:
- c:if标签没有else情况,想要else情况,则可以在定义一个c:if标签
- test 必须属性,接受boolean表达式
- 属性:
-
choose:相当于java代码的switch语句
- 使用choose标签声明 相当于switch声明
2. 使用when标签做判断 相当于case
3. 使用otherwise标签做其他情况的声明 相当于default
- 使用choose标签声明 相当于switch声明
-
foreach:相当于java代码的for语句
-
<%@ page import="com.lzm.domain.User" %>
<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
request.setAttribute("name","zhangsan");
session.setAttribute("age","22");
User user = new User();
user.setName("张三");
user.setAge(34);
user.setDateStr(new Date());
request.setAttribute("u",user);
List list = new ArrayList();
list.add("1111");
list.add("2222");
list.add(user);
request.setAttribute("LL",list);
Map map = new HashMap();
map.put("name","李昊");
map.put("info","大家好");
map.put("u",user);
request.setAttribute("map",map);
String str1 = "";
String str2 = "12";
List list1 = new ArrayList();
request.setAttribute("str11", str1);
request.setAttribute("str22",str2);
request.setAttribute("list1", list1);
String str3 = "我是字符串";
request.setAttribute("str3",str3);
%>
${requestScope.name}
${sessionScope.age}
${sessionScope.hhhh}
<h3>用EL获取对象里面的信息</h3>
<h4>通过对象的属性来获取,set或get方法去掉set或set,再将剩余的首字母字母小写</h4>
<h4>requestScope.u.dateStr这样的,u是对象</h4>
${requestScope.u.name}<br>
${requestScope.u.age}<br>
${requestScope.u.dateStr}<br>
<h3>用EL获取List里面的信息</h3>
${requestScope.list[0]}<br>
${requestScope.LL[1]}<br>
${requestScope.LL[2].name}<br>
${requestScope.LL[2].age}<br>
${LL[2].dateStr}<br>
<h3>用EL获取Map里面的信息</h3>
${requestScope.map.name}<br>
${map.info}<br>
${map.u.name}<br>
${map.u.dateStr}<br>
<h3>empty的用法</h3>
${empty str11}<br>
${empty str22}<br>
${!empty str11}<br>
${ not empty str11}<br>
${empty list1}<br>
${str3}<br>
<h3>动态获取虚拟目录</h3>
${pageContext.request.contextPath}<br>
</body>
</html>