一、概述
编译指令是通知Servlet引擎的处理消息,在将JSP编译成Servlet时起作用。
动作指令只是运行时的动作,通常可以替代JSP脚本,是JSP脚本的标准化写法。
二、三个编译指令
① page
常用的page指令标签
<%@ page contentType="text/html;charset=GBK" language="java" pageEncoding="GBK"%>
<%@ page import="package.className"%>
② include
<%@ include file="file path"%>
注意:如果两个页面的编译指令冲突,那么页面就会出错。因为这里的include是静态包含,是全部集中了之后,再一次编译成一个Servlet。
③ taglib:自定义标签,使用标签。
三、七个动作指令
第一种页面的参数传递(forward指令)
① jsp:forward
<jsp:forward page="forward-result.jsp">
<jsp:param name="age" value="29">
</jsp:forward>
另一个页面使用request.getparameter("age")接收此参数
第二种页面的参数传递(Form表单转发)
<form method="post" action="jsp-forward.jsp">
<input type="text" name="username">
另一个页面使用request.getparameter("username")接收此参数
② jsp:param
param指令用于设置参数值,指令不能单独使用,可与以下三个指令结合使用。
jsp:include
jsp:forword
jsp:plugin
语法:<jsp:param name="paramName" value="paramValue">
③ jsp:include
<jsp:include page="待导入的页面路径">
这是动态包含,是先将待导入的页面编译成Servlet,再将多个Servlet整合在一起。
④ jsp:useBean
<jsp:useBean id="name" class="className Path" scope="page|request|session|application">
⑤ jsp:setProperty
<jsp:setProperty name="BeanName" property="propertyName" value="value" />
⑥ jsp:getProperty
<jsp:getProperty name="BeanName" property="PropertyName" />
举例:
先编写一个PersonBean.java(在WEB-INF\src\lee包中)
public class PersonBean{
private String name;
private int age;
public Person(){
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
setters and getters...
}
再编写一个BeanTest.jsp页面
<jsp:useBean id="p1" class="lee.PersonBean" scope="page" />
<jsp:setProperty name="p1" property="name" value="yeqing" />
<jsp:getProperty name="p1" property="name" />
<jsp:setProperty name="p1" property="age" value="23" />
<jsp:getProperty name="p1" property="age" />
注:
1)这里取得的name age就是在PersonBean中定义的私有属性,是利用了反射机制。
2)PersonBean.java放在了src文件夹中,实际上Java源文件对Web应用不起作用,
所以我们使用Ant等来编译得到二进制文件,然后放入WEB-INF/classes路径下。
而且,在为Web应用提供了新的class文件后,必须重启该应用,让它可以重新加载这些新的class文件
3) 二进制文件就是使用记事本等程序打开后是乱码的文件
4) 上面的三个标签实现的功能在jsp页面可以用以下的代替
<%
PersonBean p1=new PersonBean();
pageContext.setAttribute("p1",p1);
//request.setAttribute("p1",p1);
//session.setAttribute("p1",p1);
//application.setAttribute("p1",p1);
p1.setName("yeqing");
p1.setAge(21);
%>
<%=p1.getName()%>
<%=p1.getAge()%>
⑦ jsp:plugin
用于下载服务器端的JavaBean或Applet到客户端执行。