JSP、EL动态页面技术
JSP
jsp中写java代码的方式有三种
1.<%java代码%>——被翻译到service方法内部
2.<&=java变量或表达式&>——翻译成service方法内部out.print();
3.<&!java代码&>——翻译成servlet成员内容
jsp里面的注释可见范围不同
<!-- -->——可见范围jsp源码、翻译后的servlet、页面显示html源码
//单行注释 /*多行注释*/——可见范围jsp源码、翻译后的servlet
<%--注释内容--%>——可见范围jsp源码
jsp中三个指令
1.page指令 <%@page属性名1="属性值1" 属性名2="属性值2"...%>
language:jsp脚本中可以嵌入的语言种类(默认为java,无法修改)
pageEncoding:当前jsp文件本身编码——内部可以包含contentType
contentType:response.setContentType(text/html;charset=UTF-8)
session:是否jsp在翻译时自动创建session(布朗值)
import:导包
errorPage:当前页面出错后跳转页面到哪
isErrorPage:处理出错页面,配合errorPage使用
2.include指令 页面静态包含<&@include file="被包含文件地址"&>
3.taglib指令 引入标签库<%@taglib uri="标签库地址" prefix="前缀"%>
jsp中内置对象
out、request、response、config、session、application、page、pageContext、exception
jsp中四个域
pageContext域:当前jsp页面范围
request域:一次请求中
session:一次会话中
application域:整个web应用
EL
${EL表达式 };
EL获得pageContext域中的值:${pageScope.key};
EL获得request域中的值:${requestScope.key};
EL获得session域中的值:${sessionScope.key};
EL获得application域中的值:${applicationScope.key};
el从上到下依次从4个域中寻找,获取key值,在某个域中获取后不再寻找
<!-- 模拟域中的数据 --> <% pageContext.setAttribute("name", "pageContxt"); //存储字符串 request.setAttribute("name", "request"); //存储一个对象 Users user=new Users(); user.setId(1); user.setUsername("lisi"); user.setPwd("123"); session.setAttribute("user", user); //存储一个集合 List<Users> list=new ArrayList<Users>(); Users user1=new Users(); user1.setId(1); user1.setUsername("wangwu"); user1.setPwd("123"); list.add(user1); Users user2=new Users(); user2.setId(1); user2.setUsername("zhaoliu"); user2.setPwd("123"); list.add(user2); application.setAttribute("List", list); %> <hr> <!-- 使用脚本取出域中的值 --> <%=request.getAttribute("name") %> <%Users u=(Users)session.getAttribute("user"); out.write(u.getUsername()); %> <hr> <!-- 使用EL表达式取出域中的值 --> ${requestScope.name} ${sessionScope.user.username} ${applicationScope.List[0].pwd} <hr> <!-- 使用el表达式 全域查找(会从最小的找,底层就是findAttribute()) --> ${name } ${user.username} ${List[0].pwd}