jsp与El,jstl知识点总结归纳
jsp部分
一.jsp的三大指令
page ,include,taglib
1.jsp中的page指令
<% page %>—设置jsp
例如:
<%@ page language=”Java” contentType=”text/html; charset=UTF-8”
pageEncoding=”UTF-8”%>
<%@ page import=”java.util.List” %>
<%@ page import=”java.util.ArrayList”%>
<%@ page import=”java.util.Map”%>
<%@ page import=”java.util.HashMap”%>
<%@ page import=”domain.User” %>
关键字:
language 语言 Java
contentType 设置浏览器打开jsp时候的字符集的编码
pageEncoding 设置文件保存到硬盘,以及生成Servlet后,Servlet保存到硬盘上的编码
import 一般引入类对象,可以出现多次
autoFlush :设置jsp的缓存自动刷新,true自动刷出
buffer :设置JSP的缓冲区的大小,默认8kb
session :设置在JSP中是否可以直接使用session对象.默认值是true.
isELIgnored :设置在JSP中是否忽略EL表达式.默认值是false不忽略.
errorPage :设置错误友好页面的提示.
isErrorPage :通过这个设置显示JSP的错误信息.
- jsp的include指令,指示JSP包含其他的页面
<%@ include file=”logo.jsp”%>
<%@ include file =”menu.jsp” %>
BODY部分
<%@ include file=”footer.jsp” %> -
jsp中的taglib 指令 指示jsp引入jsp标签库
<%@ taglib rui=”标签的uri路径” prefix=”标签的别名”%>
例如:<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>
引入jstl库二:内置对象和四个域范围
1.四个域
PageScope : 当前页面中, pageContext PageContext
RequestScope: 一次请求范围 request
SessionScope: 一次回话范围 session HttpSession
ApplicationScope 应用范围 application ServaletContext
2.内置对象
jsp的内置对象:在jsp中可以直接使用的对象
JSP中9大内置对象
request HttpServletRequest getParameter(),setAttribute(String name,Object value);
response HttpServletResponse setHeader(String name,String value);getOutputStream();getWriter();
session HttpSession setAttribute();getAttribute();
application ServletContext setAttribute();getAttribute();
page Object toString();wait();
pageContext PageContext setAttribute();getAttribute();
config ServletConfig getServletName();getServletContext();
out JspWriter write(),print();
exception Throwable getMessage(),getCause(); 设置isErrorPage=”true”三:EL&&jstl
-
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList"%> <%@ page import="java.util.Map"%> <%@ page import="java.util.HashMap"%> <%@ page import="domain.User" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1> El获取数据的功能</h1> <% pageContext.setAttribute("name", "马云"); request.setAttribute("name", "马化腾"); session.setAttribute("name", "李彦宏"); application.setAttribute("name", "雷军"); %> <%-- ${pageContext.setAttribute("name", "马云")} --%> <!-- el获取 --> ${pageScope.name} ${requestScope.name} ${sessionScope.name} ${applicationScope.name} <br/> <!--${name}类似于findAll(name) 先从page,没有找到后去request,session,application 但是需要注意的是: 若第一个域(page)里面有name 则不会进行下一个域 的查询 --> ${name} <br/> <span> ---------------------------------</span> <h1>数组的获取</h1> <% String[] arrs={"马云","马化腾","雷军","李彦宏"}; // 左边的 arrs 其标记作用,右边的是数组 pageContext.setAttribute("arrs", arrs); %> ${ arrs[0]} ${ arrs[1]} ${ arrs[2]} ${ arrs[3]} <br/> <c:forEach var="i" items="${arrs}"> ${i} </c:forEach> <h1>获取集合中的数据</h1> <% List<String> list = new ArrayList<>(); list.add("马云"); list.add("马化腾"); list.add("雷军"); list.add("李彦宏"); /* pageContext.setAttribute("list", list); */ request.setAttribute("tsil", list); %> <br/> <!-- list,tsil 是 setAttribute(String name,Object value) name而已 --> ${tsil[0]} <!-- 马云 --> ${list[1]} ${list[2]} ${list[3]} <br/> <!-- 利用jstl标签库来进行遍历 --> <!-- 同样是需要注意 items="${tsil}" 获取的也是list集合存储的名称 --> <c:forEach var="a" items="${tsil}"> ${a} </c:forEach> <h1> Map集合</h1> <% Map<String,String> map = new HashMap<String,String>(); map.put("aaa","马云"); map.put("bbb","马化腾"); map.put("ccc","李彦宏"); map.put("ddd.eee","雷军"); pageContext.setAttribute("pam", map); %> <!--El表达式获取 --> ${pam.aaa} ${pam.bbb} ${pam.ccc} ${pam["ddd.eee"]} <br/> <!--jstl 遍历 --> <c:forEach var="entry" items="${pam}"> ${entry.key}--${entry.value} <br/> </c:forEach> <!-- list集合存贮跟数组是一样的, 直接的arr[0],list[0] 但是 map集合的取值就不一样了, map.aaa, map.ccc ,或map["ddd.eee"] --> <h1> 获取对象的集合</h1> <% User user1 = new User(1,"马云","123"); User user2 = new User(2,"马化腾","123"); User user3 = new User(3,"李彦宏","321"); User user4 = new User(4,"雷军","456"); List<User> userList = new ArrayList<User>(); userList.add(user1); userList.add(user2); userList.add(user3); userList.add(user4); pageContext.setAttribute("userList", userList); %> <!-- EL表达式获取 --> ${ userList[0].id } - ${ userList[0].username } - ${ userList[0].password }<br/> ${ userList[1].id } - ${ userList[1].username } - ${ userList[1].password }<br/> ${ userList[2].id } - ${ userList[2].username } - ${ userlist[2].password }<br/> ${ userList[3].id } - ${ userList[3].username } - ${ userlist[3].password }<br/> <!--jstl遍历 --> <c:forEach var="user" items="${userList}"> ${ user.id } -${ user.username } - ${ user.password }</br> </c:forEach> </body> </html>