JSP最终会变成一个servlet
MyJSP.jsp ->MyJSP_jsp.java -> MyJSP_jsp.class -> myJSP_jsp(Servlet对象)
Scriptlet:<% %> 在JSP中放入常规的Java代码
指令:<%@ @>
表达式: <%= %> 表达式会成为out.print()的参数
声明: <%! %> 每次运行服务器方法时都会重新初始化。在JSP变成servlet时成为成员变量(方法)
JSP中的隐式对象
容器把JSP转换为servlet时,服务方法最前面有一堆隐式对象声明和赋值
JspWriter – out
HttpServletRequest –-request
HttpServletResponse --response
HttpSession – session
ServletContext –application
ServletConfig – config
Throwable – exception
PageContext – pageContext
Object – page
页面作用域属性都存储在pageContext
PageConext还封装了其他隐式对象
如:获取一个会话作用域属性
<%= pageContext.getAttribute(“test”,PageContext.SESSION_SCOPE) %>
等价于 session.getAttribute(“test”);
不加作用域的话,从最严格的作用域开始找
<%= pageContext.getAttribute(“test”) %>
只有指定的“错误页面”才能使用exception隐式对象
JspWriter不在PrintWriter的类层次中,不能取代PrintWriter.不过大多数打印方法都与PrintWriter相同,只不过增加了一些缓冲功能.
为JSP配置servlet初始化参数
覆盖jspInit()
JSP预编译协议
在请求时追加一个查询串”?jsp_precompile”,容器(如果支持)会立即完成转换/编
译