在JSP文件中,有三种注释
1. : 这个注释在客户端浏览器中通过查看源码可以查看得到,Tomcat解析转换为.java文件时包含在 out.write(....) 中
2. 在<% %> 中嵌入java注释 // 和 /* */ ,这种注释在tomcat解析jsp文件时被保留下来
3.<%-- jsp注释 --%> 此注释只在jsp文件中可以看到, Tomcat解析转换后得到的.java文件并不包含该注释
在jsp文件中嵌入java代码的三种方式:
1. <%! %> : 定义声明变量
2. <% %> : 可以写java代码片段
3. <%= expression %> 里面书写表达式
格式:
<%@ 指令 属性 %>
较常用的几个属性:
import 用于导入包
isErrorPage true 表示是用与处理异常错误的页面
errorPage 和上面这个属性一起使用,用来指示错误页面的位置
注:如果在web.xml中配置
PageEncoding 用于表明此页面以什么编码来保存
Session true表示此页面可以直接使用session对象,可以从解析出来的.java看出,会多出了一行声明session的语句。False 则不能直接使用
<%@ include file=”包含的文件名” %>
这个指令是静态包含,即在解析前将其合并为一个文件,然后统一解析为一个.java文件
注:被包含文件不需要一个完整结构的html框架
<%@ taglib uri = “待引入标签对应的Java的url” prefix=” 可以通过这个前缀来引入某个标签”%>
这个指令用与引入一些标签,这些标签对应着Java程序。如后续的自定义标签。
request HttpServletRequest
response HttpServletResponse
session HttpSession
application ServletContext
config ServletConfig
out JspWriter
page Object
pageContext PageContext
exception Throwable
解析后转为.java文件中的定义:
final java.lang.Object page = this;
Page对象表示当前的jsp页面,在tomcat解析后对应着一个servlet , 但是声明为Object类型。可用于存储数据,一般通过pageContext来操作
解析后转为.java文件中的定义:
final javax.servlet.jsp.PageContext pageContext;
在 _jspService方法中:
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
可以通过getXXX() 方法获取其他八个内置对象,一般当需要在多个jsp, servlet传递jsp内置对象时使用
解析后转为.java文件中的定义:
javax.servlet.jsp.JspWriter out = null;
在 _jspService方法中:
out = pageContext.getOut();
该对象用于输出数据,(注:输出到自己的缓冲区中)
该结果输出为3 12,
<%
out.write("1");
out.print("2");
response.getWriter().print("3");
%>
如果要输出123则可以在中间加一句:
<%
out.write("1");
out.print("2");
out.flush();
response.getWriter().print("3");
%>
对象 范围(Scope)
Page PageContext,PAGE_SCOPE
Request PageContext,REQUEST_SCOPE
Session PageContext,SESSION_SCOPE
Application PageContext,APPLICATION_SCOPE
对上面的四个域对象存取数据,可以使用pageContext对象
pageContext.setAttribute( String name, Object value, int scope);
pageContext.getAttribute( String name, int scope);
pageContext.removeAttribute( String name, int scope);
e.g:
<%
//存放数据
pageContext.setAttribute("Page", "page", PageContext.PAGE_SCOPE);
pageContext.setAttribute("Request", "Request", PageContext.REQUEST_SCOPE);
%>
<%-- 获取数据 --%>
<%=pageContext.getAttribute("Pagg", PageContext.PAGE_SCOPE)%> <%-- 没有Pagg属性,为null --%>
<%=pageContext.getAttribute("Request", PageContext.REQUEST_SCOPE)%> <%-- 输出Request --%>
<%-- 删除数据 --%>
<% pageContext.removeAttribute("Page", PageContext.PAGE_SCOPE); %>
<%=pageContext.getAttribute("Page", PageContext.PAGE_SCOPE)%> <%-- 没有Page属性,为null --%>
pageContext.setAttribute( String name, Object value);
pageContext.getAttribute( String name );
pageContext.removeAttribute( String name );
依次从page, request, session, application 查找存储的属性,如果没有找到着返回null
pageContext.findAttribute( String name );
<%
//存放数据
pageContext.setAttribute("find", "page", PageContext.PAGE_SCOPE);
pageContext.setAttribute("find", "request", PageContext.REQUEST_SCOPE);
%>
<%-- 有两个同名的,但是find是从page开始查找的,所以返回page --%>
<%=pageContext.findAttribute("find") %>
跳转到指定的页面
<%-- 跳转到main.jsp页面 page里面写的是资源路径,但是不要加项目名称 --%>
useBean
setProperty
getProperty
这三个动作标签涉及到JavaBean,在那边总结