李典的博客

导航

jsp的7个动作指令

JSP的7个动作指令

动作指令与编译指令不同,编译指令是通知Serviet引擎的处理消息,而动作指令只是运行时的动 作。编译指令在将JSP编译成Serviet时起作用:而处理指令通常可替换成JSP脚本,它只是JSP脚本 的标准化写法。

JSP动作指令主要有如下7个:

  jsp:forward 执行页面转向,将请求的处理转向下一个页面

  jsp:param 用于传递参数,必须与其他支持参数的标签一起使用

  jsp:include   用于动态的引入一个jsp页面

  jsp:plugin 用于下载javaBean或applet到客户端执行

  jsp:useBean  创建一个JavaBean的实例

  jsp:setProperty  设置JavaBean实例的属性值

  jsp:getProperty  输出JavaBean实例的属性值

 

1、jsp:forward指令

  forward指令用于将页面响应转发到另外的页面。既可以转发到静态的HTML页面,也可以转发到 动态的JSP页面,或者转发到容器中的Servlet

  JSP的forward指令的格式如下。
  对于JSP1.0,使用如下语法:
  <jsp:forward page=”{relativeURL I <%=expression%>}”/>
  对于JSPI. I以上规范,可使用如下语法:
  <jsp:forward page=”{relativeURL I <%=expression%>}”>
  {<jsp:param ... />}
  </jsp:forward>

第二种语法用于在转发时增加额外的请求参数。增加的请求参数的值可以通过HttpServletRequest 炎的getParameter()方法获取。

下面示例页面使用了forward动作指令来转发用户请求

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
    <h3>forward的原始页面</h3>
    <jsp:forward page="forward-result.jsp">
        <jsp:param value="29" name="age"/>
    </jsp:forward>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
    <%=request.getParameter("age") %>
</body>
</html>

form表单提交:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
    <form method="post" action="formForward-result.jsp">
        <input type="text" name="username"/>
        <input type="submit" value="提交"/>
    </form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
    <%=request.getParameter("username") %>
</body>
</html>

 

2、jsp:include指令

include指令是一个动态的include指令,也用于包含某个页面, 它不会导入被include页面的编译指令,仅仅将被导入页面的 body 内容插入本页面

下面是include指令的语法格式:

  <jsp:include page=” {relativeURL I <%expression>} flush="true" />

或者

  <jsp:include page=” {relativeURL I <%expression>} flush="true" >

    <jsp:param name="parameterName” value=”patameterValue” />

  <jsp:include>

示例如下:

<%@ page info="this is a page" %>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" errorPage="error.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<jsp:include page="scriptlet.jsp"></jsp:include>

<!-- 带参数 -->
<jsp:include page="forward-result.jsp">
<jsp:param value="39" name="age"/>
</jsp:include>
</body>
</html>

 forward指令使用一jspx_page_ context 的 forward()方法来引入目标页面,而 include 指令则使用通过 JspRuntimeLibrary 的 include()方法来引入目标页面。

区别在于:执行 forward 时 被forward 的页面将完全代替原有页面; 而执行 include 时, 被 include 的页面只是插入原有页面。 简而言之, forward 拿目标页面代替原有页面, 而include 则拿目标页面插入原有页面。

3、useBean、setProperty、getProperty指令

 

  这三个指令都是与JavaBean 相关的指令, 其中useBean 指令用于在JSP 页面中初始化一个Java实例 ; setProperty 指令用于为JavaBean 实例的属性设置值: getProperty 指令用于输出JavaBean 实例的属性。
  如果多个JSP 页面中需要重复使用某段代码, 贝IJ可以把这段代码定义成Java 类的方法, 然后让多个JSP 页面调用该方法即可, 这样可以达到较好的代码复用。

 

use Bean 的语法格式如下:

 

  <jsp:useBean id="narne" class=” classnarne" scope=”page I request I session I application"/>

其中, id 属性是JavaBean 的实例名, class 属性确定JavaBean 的实现类。scope 属性用于指定JavaBean
实例的作用范围, 该范围有以下4个值:

  page: 该JavaBean 实例仅在该页面有效

  request: 该JavaBean 实例在本次请求有效。

  session: 该JavaBean 实例在本次session 内有效。

  application: 该JavaBean 实例在本应用内一直有效。

 

 

setProperty 指令的语法格式如下:
  <jsp:setProperty name=”BeanNarne” proterty=”propertyNarne” value=”value"/>

 

 

 

get Property 的语法格式如下:
  <jsp:getProperty name=”BeanNarne" proterty="propertyNarne" />

 

其中, name 属性确定需要输出的JavaBean 的实例名; proterty 属性确定需要输出的属性名。
下面的JSP 页面示范了如何使用这三个动作指令来操作JavaBean。

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
    <jsp:useBean id="p1" class="lee.Person" />
    
    <jsp:setProperty property="name" name="p1" value="lidian"/>
    <jsp:setProperty property="age" name="p1" value="23"/>
    
    <jsp:getProperty property="name" name="p1"/>
    <jsp:getProperty property="age" name="p1"/>
    
</body>
</html>

javaBean,/webDemo/src/lee/Person.java

package lee;

public class Person {
    private String name;
    private int age;
    
    private Person(String name,int age) {
        this.setName(name);
        this.setAge(age);

    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

上面的 Person. va 只是源文件, 此处将该文件放在 Web 应用的 WEB-INF/src 路径下, 实际上 Java 源文件对 Web 应用不起作用, 所以此处会使用 Ant 来编译它, 并将编译得到的二进制文件放入 WEB-INF / classes 路径下。 而且, 为 Web 应用提供了新的 class 文件后, 必须重启该 Web 应用, 让它 可 以重新加载这些新的 class 文件。

其实上面的标签完全可以不使用,

<%@page import="lee.Person"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
    <%
        Person p1 = new Person("123", 23);
        /* 将p1放在request中 */
        request.setAttribute("p1", p1);
        
    %>
    <h1><%=p1.getName() %></h1>
    <h1><%=p1.getAge() %></h1>
</body>
</html>

4、jsp:plugin指令

plugin指令主要用于下载服务器端的JavaBean或Applet到客户端执行。由于程序在客户端执行,所以必须安装虚拟机。实际由于现在很少使用Applet,而且就算要使用Applet,也完全可以使用支持AppletI ‘函,的HTML标签,所以jsp:plugin标签的使用场景并不多。

5、jsp:param指令

 param指令用于设置参数值,这个指令本身不能单独使用,因为单独的param指令没有实际意义。 param指令可以与以F三个指令结合使用。

  jsp:forward

  jsp:include

  jsp:plugin

语法如下: 

  param指令的语法格式如下:
  <jsp:param name="paramName" value="paramValue” />

posted on 2018-04-20 16:10  python_李典  阅读(587)  评论(0编辑  收藏  举报