进公司很长时间了,一直在和业务打交道,写的最多的也只是java类,而且多用到Struts框架,JSP已经很少有使用到了,今天在修改BUG时忽然改到一个纯JSP文件.看了一下.发现竟然有些生疏了,幸好平时看书做过一些笔记,找了好长时间才找到..赶快在这里复习一下.记录一下.以备不时之需.
1、JSP页面的组成部分:
l 模板元素 ―― HTML代码、回车和换行
直接使用out对象(JspWriter)输出,比如out.write("\r\n");
l 脚本片断 ―― <% %>
这个片段将被编译器原封不动地放在service方法里面
l 脚本表达式 ――<%=exp%>
把表达式作为out.print()的参数
l 指令元素 ――<%@ %>
在翻译阶段被处理
l 脚本声明 ―― <%! %>
页面经编译后 , 在产生的class文件中这个声明被放在类里,Service方法外,也就是成员变量(或方法)
l JSP标签
l 注释 ――<%--content --%>
在翻译阶段就被丢掉了
HTML 注释 <!-- -->
JAVA 注释 单行注释 //
多行注释 /* */
2、错误处理:
(1)page指令的errorPage和isErrorPage属性
(2)全局错误处理------------ 在Servlet文件中添加 :
<error-page>
<error-code>404</error-code>
<location>/404Error.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.ArithmeticException</exception-type>
<location>/ArithmeticException.jsp</location>
</error-page>
3、JSP九个隐含对象(内置对象):直接在jsp文件里使用
HttpServletRequest request
HttpServletResponse response
PageContext pageContext (页面上下文)
HttpSession session
ServletContext application
ServletConfig config
JspWriter out
Object page
Throwable exception
4、四个作用域
application作用域 ServletContext -------所有的servlet和所有的JSP都可以访问这个对象中的数据
session作用域 HttpSession
request作用域 HttpServletRequest
page作用域 PageContext
5、include和forward方法汇总:
request.getRequestDispatcher(url).forward(request, response)
此代码后的代码还会执行
request.getRequestDispatcher(url).include(request, response)
pageContext.forward(url)
pageContext.include(url)
<jsp:forward page=""></jsp:forward>
此代码后的代码不会再执行
<jsp:include page=""></jsp:include>
动态包含,在运行阶段才包含进来
<%@include file="filePath"%>静态包含,在翻译阶段完成的