共有三种指令:
1.1. language="java" 默认是java,只能写java
1.2.import="package.class" 引入源码包
1.3.session="true" 默认创建session,true表示自动创建,jsp和servlet能获取同样的HttpSession
1.4.buffer="8kb" JSP输出内容,不是一下到浏览器的,而是等缓存满了以后,才会输出到浏览器,该JSP缓存默认大小为8kb
1.5.errorPage="url" 表示该页面出错后跳转到哪个页面
isErrorPage="true" 显示出错信息页面必须声明为true,这样JSP就会创建exception对象。
以上2个属性都是处理局部异常处理的。
全局异常:
配置web.xml文件
500
/WEB-INF/sys500.jsp
也可以处理类型异常
java.lang.ArithmeticException
/WEB-INF/sys500.jsp
类型异常优先级高。局部异常优先级最高。
contentType="UTF-8"。对内:表示JSP保存的编码;对外:表示浏览器用什么方式解码
pageEncoding="UTF=8";和contentType作用相同
当两个属性同时存在的时候,对内有pageEncoding决定。
isELIgored="false"
是否忽略EL表达式,默认支持EL表达式
<$@ include file="被包含的jsp页面"$>
在翻译成servlet是将被包含的jsp页面中的内容翻译成servlet中了,即多个jsp只会翻译成一个Servlet 我们通常将
include指令包含的jsp页面叫静态包含,就是说编译时包含。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
可以将数据绑定到域对象中
将“靠谱”字符串绑定到request域中,名称为name。
用EL表达式调用名字为name的数据,如果查不到,返回空字符串。
request.getAttribute("NAME"); 该方法如果查不到数据,返回的是null
JSP中叫法 Servlet中叫法
1.request HttpServletRequest
2.response HttpServletResponse
3.session HttpSession
4.application ServletContext
5.config ServletConfig
6.out JspWriter
7.exception 特殊情况下使用
8.page this 本jsp页面
9.pageContext 无
下面演示:request/session/application用法:
参数值:<%=request.getParameter("name") %>
<%
session.setAttribute("name", "哈哈");
application.setAttribute("age", "20");
%>
姓名:<%=session.getAttribute("name") %>
年龄:<%=application.getAttribute("name") %>
1,out内容先输入jspwriter缓存区,然后输给printwriter缓存区,然后在输给浏览器
2,pageContext是一个作用域,仅在当前jsp页面中有效,也能完成转发和包含功能。
3,pageContext也可以获取其他八个内置对象
4,pageContext能将值绑定到其他域对象中。
5,pageContext对象的findAttribute方法会依次从page->request -> session -> application域对象查找,找到即止。
映射JSP
web.xml文件:
SimpleJspServlet
/simple.jsp
SimpleJspServlet
index.html
${} :可以自动获取域中对象,request,session,application,pageContext,EL找不到返回空白字符串。
EL表达式中11大内置对象
1,pageContext 获取页面context的Map对象
2,pageScope 获取页面域的Map对象
3,requestScope 获取request域的Map对象
4,sessionScope 获取session域Map对象
5,applicationScope 获取context的Map对象
6,param 获取一个请求参数
7,paramValues 获取一个请求参数数组
8, header 获取一个请求域对象
9,headerValues
10,cookies
11,initParam 获取web.xml中的参数
El表达式中可以直接获取域中的数据:
<%
pageContext.setAttribute("NAME","哈哈");
%>
姓名:${NAME}
<%
User user = new User(2015,"呵呵",10000D);
request.setAttribute("USER",user);
%>
编号:${USER.id}
姓名:${USER.name}
薪水:${USER.sal}
<%
List nameList = new ArrayList();
nameList.add("A");
nameList.add("B");
nameList.add("C");
session.setAttribute("NAMELIST",nameList);
%>
第二个元素是:${NAMELIST[1]}
<%
Map map = new LinkedHashMap();
map.put("jack",10000);
map.put("marry",12000);
map.put("sisi",14000);
application.setAttribute("MAP",map);
%>
SISI的工资是:${MAP['sisi']}
<%
String[] strArray = {"北京","上海","广州","深圳"};
pageContext.setAttribute("STRARRAY",strArray);
%>
你目前所在的城市是:${STRARRAY[2]}
姓名:${NAMEE}
<%@ page language="java" pageEncoding="UTF-8"%>
10+3=${10+3}
10-3=${10-3}
10*3=${10*3}
10/3=${10/3}
10%3=${10%3}
true && false = ${true && false}
true || false = ${true || false}
! false = ${! false}
10>3=${10>3}
10!=3=${10 ne 3}
10==3=${10 eq 3}
<%@ page language="java" pageEncoding="UTF-8"%>
<%
pageContext.setAttribute("city","深圳");
%>
城市:
<%@ page language="java" pageEncoding="UTF-8"%>
当前web应用的根目录名:${pageContext.request.contextPath}
点点
<%
session.setAttribute("NAME","哈哈");
%>
姓名:${sessionScope.NAME}
参数值:${param.name}
第三个爱好是:${paramValues.like[2]}
请求头1:${header.host}
请求头2:${headerValues["Accept-Encoding"][0]}
cookie的名:${cookie.PASS.name}
cookie的值:${cookie.PASS.value}
web初始化参数之driver为:${initParam.driver}
web初始化参数之url为:${initParam.url}
1,导入相关的jstl包
2,要在使用jstl的页面中用taglib指令引入相关包
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
fn:toLowerCase("str") 字符串变成小写
fn:toUpperCase("str") 字符串变成大写
fn:trim("str") 去掉字符串两端空白
fn:split("String","regex") 切割字符串
fn:join("array","#") 用#把array中每个元素连接
fn:indexOf("str","s") 返回第二个参数在第一个参数首次出现的位置
fn:contains("s1","s2") 返回第二个参数是否包含在第一个参数
fn:startsWith("s1","s2") 第一个参数是否以第二个参数开头
fn:endsWith("s1","s2") 第一个参数是否以第二个参数结尾
fn:replace("s1","s2","s3") 把s1中的所有s2用s3替换
fn:substring("s1",a,b) 把s1中的第a个字符到b-1个字符截取出来
fn:substringAfter() ${fn:substringAfter("www@163@com","@")}
fn:substringBefore() ${fn:substringBefore("www@163@com","@")}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
pageContext.setAttribute("script", "");
%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="itcast.util.User" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
My JSP '02_c_set.jsp' starting page
<%
User user = new User();
pageContext.setAttribute("USER", user);
%>
编号:${pageScope.USER.id}
姓名:${pageScope.USER.name}
<%
int i = 10/0;
%>
原因为:${myError.message}
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.*" %>
<%
List nameList = new ArrayList();
nameList.add("小德子");
nameList.add("小格子");
nameList.add("小桌子");
nameList.add("小羊子");
nameList.add("小凳子");
pageContext.setAttribute("NAMELIST",nameList);
%>
索引
编号
姓名
是第一个元素吗
是最后个元素吗
${stat.index}
${stat.count}
${xxx}
${stat.first}
${stat.last}