JSP 小结

注释:

JSP文件中,有三种注释

1.   : 这个注释在客户端浏览器中通过查看源码可以查看得到,Tomcat解析转换为.java文件时包含在 out.write(....) 

2. 在<%  %>  中嵌入java注释 // 和 /*  */ ,这种注释在tomcat解析jsp文件时被保留下来

3.<%--  jsp注释 --%>  此注释只在jsp文件中可以看到, Tomcat解析转换后得到的.java文件并不包含该注释

 

jsp文件中嵌入java代码的三种方式:

1. <%!    %>   : 定义声明变量

2. <%  %>  :   可以写java代码片段

3. <%=  expression  %>  里面书写表达式

 

JSP 三个指令

  格式:

<%@ 指令  属性  %>

1.page 指令

较常用的几个属性:

import 用于导入包

isErrorPage    true 表示是用与处理异常错误的页面

errorPage    和上面这个属性一起使用,用来指示错误页面的位置

注:如果在web.xml中配置标签和此页面设置的重叠了,则只会执行web.xm中配置处理出错的信息

      PageEncoding 用于表明此页面以什么编码来保存

Session true表示此页面可以直接使用session对象,可以从解析出来的.java看出,会多出了一行声明session的语句。False 则不能直接使用

 

2.include指令

<%@ include file=”包含的文件名”  %>

这个指令是静态包含,即在解析前将其合并为一个文件,然后统一解析为一个.java文件

注:被包含文件不需要一个完整结构的html框架

 

3.taglib指令

  <%@ taglib  uri = “待引入标签对应的Javaurl”  prefix=” 可以通过这个前缀来引入某个标签”%>

   这个指令用与引入一些标签,这些标签对应着Java程序。如后续的自定义标签。

 

JSP9个内置对象

  request    HttpServletRequest

  response    HttpServletResponse

  session    HttpSession

  application    ServletContext

  config    ServletConfig

  out    JspWriter

  page     Object

  pageContext    PageContext

  exception    Throwable

 

Page内置对象:

解析后转为.java文件中的定义:

final java.lang.Object page = this;

  Page对象表示当前的jsp页面,在tomcat解析后对应着一个servlet , 但是声明为Object类型。可用于存储数据,一般通过pageContext来操作

 

PageContext对象

解析后转为.java文件中的定义:

final javax.servlet.jsp.PageContext pageContext;

在 _jspService方法中:

pageContext = _jspxFactory.getPageContext(this, request, response,

       null, true, 8192, true);

  可以通过getXXX() 方法获取其他八个内置对象,一般当需要在多个jsp, servlet传递jsp内置对象时使用

 

out 对象:

解析后转为.java文件中的定义:

javax.servlet.jsp.JspWriter out = null;

在 _jspService方法中:

out = pageContext.getOut();

该对象用于输出数据,(注:输出到自己的缓冲区中)

 该结果输出为3 12,

    <%
    	out.write("1");
    	out.print("2");
    	response.getWriter().print("3");
    %>
JSP 小结_第1张图片

 

如果要输出123则可以在中间加一句:

    <%
    	out.write("1");
    	out.print("2");
    	out.flush();
    	response.getWriter().print("3");
    %>

 

jsp页面中有四个域对象,对应着不同的作用范围,page最小,仅为当前的页面

对象 范围(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 --%>
    



page范围内设置,获取,删除数据

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") %>

 JSP的Action标签

include

 静态包含, 和 jsp的指令include类似


forward

  跳转到指定的页面

<%-- 跳转到main.jsp页面   page里面写的是资源路径,但是不要加项目名称 --%>
    


其他

  useBean

  setProperty

  getProperty

这三个动作标签涉及到JavaBean,在那边总结


 

你可能感兴趣的:(Java,Web)