JSP学习笔记二

1. JSP 标准动作获取 JavaBean 属性
	<jsp:useBean id="person" class="com.example.model.Person" scope="request"/>
	<jsp:getProperty property="name" name="person"/>

	<jsp:useBean >可以用来声明和初始化在<jsp:getProperty>中使用的具体bean 对象。
	
2. <jsp:useBean> 还能创建一个bean。并使用<jsp:setProperty > 为该bean 的属性设置具体的值。

3. <jsp:userBean>中的属性 type 类型可以是class、抽象类或者一个接口,只要能用作为 Bean 对象
	class 类型的生命引用类型,都可以指定为 type 。
	class 必须是 type  的一个子类或者接口的实现。

4. 如果使用了type,但是没有 class, bean 必须已经存在。
	如果使用了class(有或没有 type),class 不能是抽象类,而且必须有一个无参数的公共构造函数。

5. scope 属性的默认值为 page。

6. param 属性可以直接向 bean 发送一个请求参数,

7. EL 打印嵌套性能变得非常容易,可以很轻松的打印性质的性质。
	${person.dog.name}
	EL 是不用Java 访问Java 对象的一种方法。
	EL 隐式对象
	pageScope requestScope sessionScope applicationScope param paramValues header headerValues cookie initParam 
	pageContext 不是映射,而是实际的引用。pageContext 隐式对象是一个bean,它有获取方法,所有其他隐式对象都是Map。
	
8. 使用(.)号操作符访问性质和映射值。[] 就像是更好的点号。主要是用来操作数组和List等或者属性名不遵循正常的Java
	命名规范。
	
9. 使用[] 操作数组。
	String[] favouriteMusic = {"Zero 7", "My love", "Lady", "Hello World"};
	request.setAttribute("musicList", favouriteMusic);
	${musicList[0]} ${musicList["1"] }
	可以使用加引号和不加引号的下标。
	如果中括号左边是一个数组或 List,而且索引是一个 String 直接量,那么这个索引会强制转换为 int。而且它本身要能强制转换为 int。

10. 对Map 的数据访问。
	HashMap<String, String> musicMap = new HashMap<String, String>();
	musicMap.put("Ambient", "zero 7");
	musicMap.put("Surf", "Tahiti 80");
	request.setAttribute("musicMap", musicMap);
	${musicMap.Ambient } ${musicMap["Ambient"] }
	如果中括号里没有引号,容器就会计算中括号中的内容,搜索与该名字绑定的属性,并替换为这个属性的值(如果有一个同名的隐式对象,
	则始终使用隐式对象)。

11. 在中括号中可以使用嵌套表达式。EL 中都是表达式,深度不限。如果不能用作Java 代码中的变量名,就不要把它放在点号后面。

12. 使用 pageContext 来得到其他的一切。pageContext.request.method 来得到其他的一切。

13. EL 能很好的处理NULL。它能处理unknown 或 NULL值,即使找不到表达式中指定的名的属性/性质/键,也会显示页面。
	在算术表达式中,EL 把NULL值看作是 “0”。在逻辑表达式中,EL把NULL 值看作是 “false”。
	
14. inculde 指令和<jsp:inculde>
	include 指令在转换时发生。<jsp:include>标准动作在运行时发生。被包含的页面不能有限制:不能修改响应状态码或设置首部。
	不要把开始和结束HTML和BODY标记放在可重用的部件中,设计和编写布局模板部件时,要假设它们会包含在其他页面中。
	
15. 使用 <jsp:param> 给被包含的页面传递参数。
	<jsp:include page="header.jsp" >
	<jsp:param value="We are good" name="subTitle"/>
	</jsp:include>

14. <jsp:forward>标准动作 千万不要刷新输出,再转发。

15. 强大的定制标记 JSTL <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
	<c:forEach> 完成循环。
	<c:if> 完成条件包含。
	<s:set> 设置属性变量。
	<c:import url=“www.baidu.com”>  可以把容器之外的内容加载进来。可以跨域请求资源。功能最强大。
	<c:param > 配合<c:import> 将参数传递给对应的页面。
	<c:url> 可以满足所有的超链接需求。包括URL 重写。
	<c:param> 配合 <c:url> 提供查询串。
	
16. 建立自己的错误页面。
	<%@ page isErrorPage = "true"%> <%@ page errorPage="errorPage.jsp"%
	在DD(web.xml)中配置错误页面。
	根据 <exception-type>或HTTP 状态码<error-code> 声明错误页面。这样可以根据错误的类型向客户显示不同的错误页面。
	<error-page>
		<exception-type>java.lang.Throwable</exception-type>
		<location>/errorPage.jsp</location>
	</error-page>
	<error-page>
		<error-code>404</error-code>
		<location>/404.jsp</location>
	</error-page>
	
	<c:catch> 标记就像一种 try catch
	
17. JSTL 格式化库 核心库 格式化库 XML库 SQL库 
	taglib <uri> 是一个名,而不是一个位置。
	
18. 容器会在4个位置查找TLD
	1)直接在WEB-INF 目录中查找
	2)直接在WEB-INF 的一个子目录中查找
	3)在WEB-INF/lib 下的JAR 文件中META-INF 目录中查找
	4)在WEB-INF/lib 下的JAR 文件中META-INF 目录中的子目录中查找
	
19. Web 应用的目录结构要求很严,各个内容只能放在它该放的地方。可以打包为war(Web ARchive)
	WAR文件在Web应用上下文有一个META-INF 目录。部署时会检测依赖的包和类。
	
20. 可以把不允许直接访问的文件放在META-INF 下 或者WEB-INF 下。

21. 三种 <url-pattern> 元素
	1)<url-pattern>/Beer/SelectBeer.do</url-pattern>
	2)<url-pattern>/Beer/*</url-pattern>
	3)<url-pattern>*.do</url-pattern>
	
22. <welcome-file-list>是用来配置每个目录下默认的访问页面的。会在该目录下顺序地查找。

23. 在DD 中配置servlet 初始化。如果希望在部署的时候加载servlet,而不是等到第一个请求到来时才加载,可以在DD
	中使用 <load-on-start> 元素。值的大小决定了加载的顺序。
	

你可能感兴趣的:(jsp)