JSP中的脚本、指令、动作和注释标识

来源:互联网 发布:美发股份分配怎么算法 编辑:程序博客网 时间:2024/05/22 06:10

1  JSP的脚本元素

  1.1  声明:<%! int counter = 0 %>

     注意:声明的可以是成员变量,方法或内部类。不要用成员变量去做统计,因为如果 Servlet 实例是否被销毁是由服务器控制的,如果需要统计,则应该把统计的信息存储到数据库或是文件当中。会原封不动的放在 service() 方法体之外

 1.2  表达式:<%= new java.util.Date() %>

     表达式将被添加到_jspService()方法体内,并被转换为: out.print(  new java.util.Date()  );

 1.3 代码块:<% if(isLogin){…} %>  

 (1)本质上是一个 java  代码块,里面的注释方式跟 java  代码一样

(2)该代码块会原封不动的放在 servlet  的_jspService()方法中,放置的位置会影响结

果,必须保证变量先声明后使用。

2 指令(directive)

 2.1 page 指令:<%@ page … %>

 (1)  <%@ page import =””%>      导入需要用到的类(可导入多个包,用“,”分割)

 (2)  <%@ page isErrorPage =”true”%>  本页面是异常后跳转的页面

 (3)  <%@ page errorPage=””%>    本页面错误之后,转向的错误页面

 (4)  <%@ page contentType =  "text/html;charset=GB2312"%>  设置文件格式和编码方式

 (5)  <%@ page pageEncoding =””%>  设置页面显示的字符集 contentType  和  pageEncoding  的差异

 (6)  <%@ page language =””%>    本页面使用的 scriting语言,默认是 java ,通常不写

 (7)  <%@ page extends =””%>      本页面生成的 servlet  所继承的类  

 (8)  <%@ page buffer =””%>     本页面的输出是否支持缓冲

 (9)  <%@ page autoFlush =””%>    缓冲区是否自动刷新

 (10)  <%@ page info =””%>      返回本页面的描述信息

 (11)  <%@ page isELIgnored=””%> 本页面是否支持 EL 表达式

2.2 包含指令:<%@ include … %>

<%@ include file =”relativeURLspec”%>

静态包含,也称为翻译时包含,在 JSP  翻译时插入一个包含文本或代码的文件,这个包含的过程是静态的,然后再将JSP翻译成 Servlet 程序。

注意: file 所指的路径必须是相对于此 JSP网页的路径。 而包含的文件可以是 JSP  网页、HTML  网页、文本文件,或是一段 Java  程序。

2.3 标签库指令:<%@ taglib … %>

<%@taglib prefix=“tt”  uri=“/WEB-INF/jspdev.tld”%>   用于导入标签库。

3 常用的动作(action)

3.1 包含动作<jsp:include page=“ ” />

<jsp:include  page =””/> 

动态包含,也称为运行时包含,将页面执行完的结果,加载进来。它对应于 Servlet 中 RequestDispatcher 类的 include(ServletRequest request, ServletResponse response)方法。

它还可以进行参数的传递,例如:

<jsp:include page =””>

 <jsp: param name=”user” value=”admin”>

</jsp:include>

被包含的页面可以通过使用 request.getParameter(“user”)来得到 admin。

3.2 转发动作  <jsp:forward page=“ ” />

 转发:<jsp: forward page=“ ”/>

 把控制页面转到下一个页面(转移控制权),可以通过使用 request 来传送数据。

重定向:response.sendRedirect();

不能通过使用 request 来传送数据,可以考虑使用 session 来传送数据。

两种转向赋值的方式: <jsp: forward page=”hello.jsp”>   // 转发

 <jsp: forward >   // 重定向

 <jsp:attribute name=”page”>hello.jsp</jsp:attribute>

 </jsp:forward>

  注意

 a:  <%response.sendRedirect("/jsp-app/implication/view.jsp")%>

b:   <jsp:forward page="/implication/view.jsp" />

   区别:

a:  产生新的请求,重定向会放弃这个请求,并向服务器发送一个新的请求。

b:  请求对象不变。 forward 和 include 是同一个请求,sendRedirect 会产生新的请求。

3.3 JavaBean 相关动作

就是在页面中使用了javaBean类是beans.category.CategoryManager类id是他的唯一标识scope是在哪个属性范围 page session requet 和application 四种属性范围page是仅在当前页面有效。 

<jsp:useBean>用于定位或示例一个JavaBeans组件。<jsp:useBean>首先会试图定位一个Bean实例,如果这个Bean不存在,那么<jsp:useBean>就会从一个class或模版中进行示例。

  为了定位或示例一个Bean,<jsp:useBean>会进行以下步聚,顺序如下:
  通过给定名字和范围试图定位一个Bean.
  对这个Bean对象引用变量以你指定的名字命名.
  如果发现了这个Bean,将会在这个变量中储存这个引用。如果你也指定了类型,那么这个Bean也设置为相应的类型.
  如果没有发现这个Bean,将会从你指定的class中示例,并将此引用储存到一个新的变量中去。如果这个class的名字代表的是一个模版,那么这个Bean被java.beans.Beans.instantiate示例.
  如果<jsp:useBean>已经示例(不是定位)了Bean,同时<jsp:useBean>和</jsp:useBean>中有元素,那么将会执行其中的代码.
  <jsp:useBean>元素的主体通常包含有<jsp:setProperty>元素,用于设置Bean的属性值。正如上面第五步所说的,<jsp:useBean>的主体仅仅只有在<jsp:useBean>示例Bean时才会被执行,如果这个Bean已经存在,<jsp:useBean>能够定位它,那么主体中的内容将不会起作用

4 JSP中的注释

 JSP注释:<%--  …  --%>,翻译阶段消失。

JAVA注释://、 /**/、 /***/,编译阶段消失。

HTML 注释:<!--  …  -->,  不会消失。

原创粉丝点击