(三)JSP教程——JSP动作标签

JSP动作标签

        用户可以使用JSP动作标签向当前输出流输出数据,进行页面定向,也可以通过动作标签使用、修改和创建对象。

<jsp:include>标签

        <jsp:include>标签将同一个Web应用中静态或动态资源包含到当前页面中。资源可以是HTML、JSP页面和文本文件等。通过include动作,可以多次使用同一个页面,增加了代码的可重用性。例如,可以在页面中使用include动作引入头部和底部页面。

<jsp:include>的语法如下:

        <jsp:include page="relativeURL | <%=expression%>" flush="true" />

        page指定引入页面的路径,flush表示在引入文件前是否刷洗缓冲区,默认为false。

下面以在JSP页面中引入头部页面来说明include的用法。

        首先创建一个head.jsp页面,head页面的代码如下
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

    <title>head页面</title>

</head>

<body>

<p>header页面内容</p>

</body>

</html>

        接着编写index.jsp页面,页面内容如下

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<!DOCTYPE html>

<html>

<head>

<title>主界面</title>

</head>

<body>

<jsp:include page="head.jsp"></jsp:include>

<p>主界面内容</p>

</body>

</html>

<jsp:forward>标签

        <jsp:forward>标签能实时地从当前JSP页面跳转到同一个Web应用中静态资源,JSP页面或者Servlet,同时有效终止当前JSP页面的执行。其语法如下:

        <jsp:forward page="url"/>

        page属性指定要跳转资源的相对URL,且指定的文件只能十该Web应用中的文件。

        下面用示例来说明<jsp:forward>标签的使用。首先我们准备一个login.jsp页面。

        login.jsp页面的代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

<title>登录页面</title>

</head>

<body>

<jsp:forward page="index.jsp"></jsp:forward>

</body>

</html>

        index.jsp内容如下

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<!DOCTYPE html>

<html>

<head>

<title>主界面</title>

</head>

<body>

<p>主界面内容</p>

</body>

</html>

        重新启动应用后,打开浏览器,在地址栏中输入:http://localhost:8080/s001/login.jsp

        界面展示如下图所示

        可以看到,浏览器中地址仍然是跳转前的地址。<jsp:forward>与Servlet中转发类似,客户端不会显示转发后的地址,有较好的隐蔽性。

<jsp:param>标签

       <jsp:param>动作用来传递参数信息,经常和其它动作一起使用,例如和<jsp:include> 和 <jsp:forward>一起使用。其语法如下:

        <jsp: param name="param_name" value="param_value" />

        在<jsp:forward>标签中嵌套<jsp:param>可以将参数传递给要跳转的页面。语法如下:

        <jsp:forward page="url">

           <jsp: param name="param_name" value="param_value" />

        </jsp:forward>

接下来我们修改以下login.jsp页面,代码如下

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<!DOCTYPE html>

<html>

<head>

<title>Welcome</title>

</head>

<body>

<%

String gender = request.getParameter("gender");

if (gender.equals("male")) {

gender = "Mr.";

} else if (gender.equals("female")) {

gender = "Mrs.";

} else {

gender = "";

}

%>

Welcome!<%=gender%><%=request.getParameter("username")%>

</body>

</html>

        启动该应用后,在浏览器地址栏中输入:http://localhost:8080/s001/login.jsp

        可以看到如下结果

JSP useBean动作

        <jsp:useBean>的语法如下:

    <jsp:useBean id = "name" class = "package.class" scope= "page | request | session | application" />

        属性id设定bean对象的变量名称。属性class设定bean对象对应的类,使用此标签会调用JavaBean不带参数的构造方法。

          属性scope设定bean的应用范围,其值有四种:page、request、session、application,默认为page。

        scope取值page:JSP引擎分配给每个客户的bean是互不相同的,他们占有不同的内存空间,该bean的有效范围是当前页面,当客户离开这个页面时,JSP取消分配给该客户的bean。

        scope取值session:JSP引擎分配给每个客户的bean时互不相同的,该bean的有效范围是客户的会话期间。如果客户在某个页面更改了这个bean的属性,其他页面的这个bean的属性也将会发生同样的变化。

       scope取值request:JSP引擎分配给每个客户的bean是互不相同的,该bean的有效范围是request期间。JSP引擎对请求做出响应后,取消分配给客户的这个bean。

        scope取值application:所有客户共享这个bean,如果一个客户更改了这个bean的属性,所有客户的这个bean的属性也将发生同样的变化。这个bean直到服务器关闭才被取消。

        下面以示例来说明<jsp:useBean>的用法,首先创建一个简答的Test类,Test类代码如下:

package com.example.servlet001;

public class Test {

    public String concatStr(String str) {

        String str2 = str.concat("Test java bean");

        return str2;

    }

}

        然后创建一个index.jsp页面来使用这个类

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<!DOCTYPE html>

<html>

<head>

<title>JavaBean示例</title>

</head>

<body>

<jsp:useBean id="test" class="com.example.servlet001.Test" />

<%

String str = "这是";

out.print(test.concatStr(str));

%>

</body>

</html>

        启动该应用后,在浏览器中输入URL地址:http://localhost:8080/s001/

<jsp:getProperty>标签与<jsp:setProperty>标签

        <jsp:getProperty name = "beanName" property = "attributeName">

        <jsp:getProperty>标签用来获取JavaBean的属性值,属性name指定bean对象的变量名,属性property为要获取的对象属性名。使用此标签会调用指定属性的get方法,因此在JavaBean类定义中必须有此属性的get方法,且此方法的访问修饰符为public,否则执行此标签会抛出异常。

        <jsp:setProperty name = "beanName" property = "attributeName" value = "attributeValue"/>

        <jsp:setProperty>标签用来设置JavaBean的属性值,属性name指定bean对象的变量名,属性property为要设置的对象属性名,属性value为设定的属性值。使用此标签会调用指定属性的set方法,因此在JavaBean类定义中必须有此属性的set方法,且此方法的访问修饰符为public,否则执行此标签时会抛出异常。

        另外JavaBean在JSP中还有一个很重要的机制——自省机制,即当服务器接收到请求时,它能根据请求的参数名称,自动设定与JavaBean相同属性名称的值。

        首先创建一个Site类,Site类的代码如下:

package com.example.servlet001;

public class Site {

    private String name;

    private String url;

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getUrl() {

        return url;

    }

    public void setUrl(String url) {

        this.url = url;

    }

}

创建一个login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

<title>登录页面</title>

</head>

<body>

<form action="index.jsp" method="post">

网站名称: <input type="text" name="name"/> <br> <br>

网址: <input type="text" name="url"/> <br> <br>

<input type="submit" value="提交"/>

</form>

</body>

</html>

创建一个index.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<!DOCTYPE html>

<html>

<head>

<title>JavaBean示例</title>

</head>

<body>

<%

request.setCharacterEncoding("UTF-8");

%>

<jsp:useBean id="site" class="com.example.servlet001.Site"/>

<jsp:setProperty property="*" name="site"/>

<jsp:getProperty property="name" name="site"/>

<jsp:getProperty property="url" name="site"/>

</body>

</html>

启动该应用后,在浏览器地址栏中输入:http://localhost:8080/s001/login.jsp

点击提交按钮后的界面展示如下图所示

<jsp:plugin>标签

        首先创建一个applet小程序,applet小程序代码如下

package com.example.httpservletrequest01;

import java.applet.Applet;

import java.awt.*;

public class MyApplet extends Applet {

    @Override

    public void init() {

        setBackground(Color.gray);

    }

    @Override

    public void paint(Graphics g) {

        g.setColor(Color.red);

        g.drawString("Hello Word", 25, 50);

    }

}

        创建一个index.jsp页面,页面代码如下:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<!DOCTYPE html>

<html>

<head>

    <title>JSP plugin</title>

</head>

<body>

<jsp:plugin codebase="http://localhost:8686/s01/" type="applet" code="com.example.httpservletrequest01.MyApplet.class" width="800" height="800"></jsp:plugin>

</body>

</html>

Chrome浏览器需要安装CheerpJ Applet Runner 10.6并启用

  • 73
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jerry95270628

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值