zoukankan      html  css  js  c++  java
  • JSP动作

    JSP动作元素在请求处理阶段起作用,他们会被转换成Java代码来执行操作,如访问一个Java对象或调用方法。

    JSP动作元素是用XML语法写成的。

    动作元素基本上都是预定义的函数,JSP规范定义了一系列的标准动作,这些标准动作使用jsp作为前缀:

    <jsp:动作名称 属性=“属性值” 属性=“属性值” />
    <jsp:useBean ... />      <!-- 寻找或者实例化一个JavaBean -->
    <jsp:setProperty ... />  <!-- 设置JavaBean的属性 -->
    <jsp:getPropery ... />   <!-- 获取JavaBean的属性 -->
    <jsp:include ... />      <!-- 在页面并请求的时候引入一个文件 -->
    <jsp:param ... /> <!-- 向被包含页面传递参数 --> <jsp:forward ... /> <!-- 把请求转到一个新的页面 --> <jsp:plugin ... /> <!-- 根据浏览器类型为Java插件生成OBJECT或EMBED标记 --> <jsp:element ... /> <!-- 定义动态XML元素 --> <jsp:attribute ... /> <!-- 设置动态定义的XML元素属性 --> <jsp:body ... /> <!-- 设置动态定义的XML元素内容 --> <jsp:text ... /> <!-- 在JSP页面和文档中使用写入文本的模板 -->

    所有动作元素都要有两个属性:id属性、scope属性

    id属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过pageContext来调用。

    scope属性用于识别动作元素的声明周期。scope属性有四个可能的值:page、request、session、application

    id属性和scope属性有直接关系,scope属性定义了相关id对象的寿命。

    具体的动作可查询页面:https://www.runoob.com/jsp/jsp-actions.html

    <jsp:useBean ... />动作元素

    用于加载一个将在JSP页面中使用的JavaBean

    在类加载完之后,便可通过<jsp:getProperty ... />和<jsp:setProperty ... />动作获取和修改bean的属性。

    <jsp:useBean id="name" class="package.class" />
    <!-- class属性用于指定Bean的完整类名 -->
    <!-- type属性用于指定引用该对象变量的类型 -->
    <!-- beanName属性用于通过java.beans.Beans的instantiate()方法指定Bean的名字 -->

    <jsp:setProperty ... />动作元素

    用于设置已经实例化好的Bean对象的属性,有两种用法

    第一种用法:在<jsp:useBean ... >元素的外面使用,此时,不管<jsp:useBean ... >是否找到了一个现有的Bean,还是新创建一个Bean实例,<jsp:setProperty ... > 都会执行

    第二种用法:在<jsp:useBean ... >元素的里面使用,此时,<jsp:setProperty ... >只有在新建的Bean实例中才会执行,如果使用现有的实例则不执行<jsp:setProperty ... />

    <!-- 第一种用法 -->
    <jsp:useBean id="name" ... />
    ...
    <jsp:setProperty name="myName" property="someProperty" ... />
    
    <!-- 第二种用法 -->
    <jsp:useBean id="name" ... >
      ...
      <jsp:setProperty name="myName" property="someProperty" ... />
    </jsp:useBean>
    <!-- name属性指明要设置属性的Bean -->
    <!-- property属性指明需要设置的属性 -->
    <!-- value属性指定Bean属性的值 -->
    <!-- param属性指定用哪个请求参数作为Bean属性的值,如果当前请求没有参数,则什么也不做。-->
    <!-- value和param不能同时使用,但可以使用其中任意一个 -->

    <jsp:getProperty ... />动作元素

    用于获取指定Bean属性的值,自动转换成字符串,然后调用内置对象out输出

    <jsp:useBean id="name" ... />
    ...
    <jsp:getProperty name="myName" property="someProperty" ... />
    <!-- name属性指定要检索的Bean属性名称,Bean必须已定义 -->
    <!-- property属性指明要获取的属性 -->
    // 一个JavaBean
    package app02a.beanTest;
    
    public class BeanTest {
        private String name;
        private int age;
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    
    }
    <!-- 一个JSP文件 -->
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
        <title>testBean</title>
    </head>
    <body>
        <h2>使用 JavaBean 的实例</h2>
        <jsp:useBean id="test" class="app02a.beanTest.BeanTest" />
        <!-- 设置属性 -->
        <jsp:setProperty name="test" property="name" value="leon" />
        <jsp:setProperty name="test" property="age" value="18" />
        <!-- 获取属性值 -->
        姓名:<jsp:getProperty name="test" property="name" /> <br />
        年龄:<jsp:getProperty name="test" property="age" />
    </body>
    </html>

    <jsp:include ... />动作元素

    用来包含静态和动态的文件,该动作把指定文件插入正在生成的页面。

    include指令是在JSP文件被转换成Servlet的时候引入文件,而include动作是在页面被请求时引入文件。

    include指令不能传递参数,而include动作可以传递参数(使用<jsp:param ... />动作)

    <jsp:include page="相对url地址" flush="true" />
    <!-- page属性指明要包含到当前页面中文件的相对url地址 -->
    <!-- flush属性指明包含资源前是否刷新缓存区 -->
    <!-- data.jsp文件代码 -->
    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
    
    <p>
        今天的日期是:<%=(new java.util.Date()).toString() %>
        所在城市是:<%=request.getParameter("city") %> <!-- 获取参数 -->
    </p>
    
    <!-- main.jsp文件代码 -->
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
        <title>include动作</title>
    </head>
    <body>
        <h2>include动作实例</h2>
        <jsp:include page="date.jsp" flush="ture" >
        <jsp:param name="city" value="Beijing" /> <!-- 向其他页面传递参数 -->
       </jsp:include>
    </body>
    </html>

    测试效果

    <jsp:param ... /> 和 <jsp:params ... />动作元素

    该动作元素不能单独使用,可以配合<jsp:include ... /> <jsp:forward ... />等动作一起使用。作用是向其他页面传递参数。

    <jsp:forward... />动作元素

     将请求转到另一个页面,是服务器内部的装发,对浏览器是透明的,浏览器的URL并不会改变。该动作只有一个属性page

    <jsp:forward page="相对url地址" />
    <!-- page属性指定转发到的地址,可以是一个JSP页面或一个Servlet -->
    <!-- date.jsp文件 -->
    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
    
    <p>
        今天的日期是:<%=(new java.util.Date()).toString() %>
        所在城市是:<%=request.getParameter("city") %>  <!-- 获取传递过来的参数 -->
    </p>
    
    <!-- main.jsp文件 -->
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
        <title>include动作</title>
    </head>
    <body>
        <h2>include动作实例</h2>
        <jsp:forward page="date.jsp" >  <!-- 将请求转发到date.jsp页面 -->
            <jsp:param name="city" value="Beijing" /> <!-- 向date.jsp页面传递参数 -->
        </jsp:forward>
    
    </body>
    </html>

    <jsp:plugin... />动作元素

    <jsp:element... />动作元素

    <jsp:attribute... />动作元素

    <jsp:body... />动作元素

    <jsp:text... />动作元素

  • 相关阅读:
    三大主流负载均衡软件对比(LVS+Nginx+HAproxy)
    nginx 提示the "ssl" directive is deprecated, use the "listen ... ssl" directive instead
    centos安装nginx并配置SSL证书
    hadoop创建目录文件失败
    The server time zone value 'EDT' is unrecognized or represents more than one time zone.
    脚本启动SpringBoot(jar)
    centos做免密登录
    数据库远程连接配置
    Bash 快捷键
    TCP三次握手四次断开
  • 原文地址:https://www.cnblogs.com/0820LL/p/9851952.html
Copyright © 2011-2022 走看看