Struts2的标签库(四)

      ——数据标签

1.action标签

  该标签用于在jsp页面直接调用一个Action,通过指定executeResult参数,还可以将Action的处理结果包含到此页面中来。此标签的属性如下:

  var属性:可选属性,一旦定义了该属性,该Action将被放入Stack Context的栈顶。

  name属性:必选属性,通过该属性指定此标签调用哪个Action。

  namespace属性:可选属性,通过该属性指定调用Action所在的namespace。

  executeResult属性:可选属性,通过该属性指定是否要将Action的处理结果包含到本页面中来,其默认值为false,即不包含。

  ignoreContextParams:可选属性,通过该属性指定该页面中的请求参数是否要传入调用的Action。该参数的默认值为false,即将本页面的请求参数传入被调用的Action。

例子:

(1)Action类

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class NameAction extends ActionSupport{
    //封装请求参数
    private String username;
    private String password;
    //setter、getter方法
    public void setUsername(String username){
        this.username = username;
    }
    public String getUsername(){
        return this.username;
    }
    public void setPassword(String password){
        this.password = password;
    }
    public String getPassword(){
        return this.password;
    }
    //处理请求的逻辑方法
    //登陆
    public String execute()throws Exception{
        if(getUsername().equals("jiagoushi")&&
                getPassword().equals("jiagoushi")){
            //设置session
            ActionContext context = ActionContext.getContext();
            context.getSession().put("username", getUsername());
            context.getSession().put("password", getPassword());
            return SUCCESS;
        }else{
            return ERROR;
        }
    }
    //注册
    public String regist()throws Exception{
        if(getUsername()!=""&&
                getPassword()!=""){
            //把请求参数放在session中
            ActionContext context = ActionContext.getContext();
            //获取request象
            context.getSession().put("username", getUsername());
            context.getSession().put("password", getPassword());
            //返回注册相关的逻辑视图名
            return "regist_success";
        }else{
            return "regist_error";
        }
    }
}

(2)配置struts.xml文件

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <!-- 设置OGNL表达式可以访问静态方法 -->
    <constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
    <package name="package_1" extends="struts-default">
        <!-- 把一个Action依据方法拆分成两个Action -->
        <action name="login" class="myAction.NameAction">
            <result>welcome.jsp</result>
            <result name="error">error.jsp</result>
        </action>
        <action name="regist" class="myAction.NameAction" method="regist">
            <result name="regist_success">regist_success.jsp</result>
            <result name="regist_error">regist_error.jsp</result>
        </action>
    </package>
</struts>

(3)index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!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>index</title>
</head>
<body>
<!-- 使用name为login的action 设置不包含此页面-->
调用action并包含此页面<br/>
<s:action name="login" executeResult="true"/><hr/>
将结果包含到此页面,但是阻止请求传入被调用的Action<br/>
<s:action name="regist" executeResult="true"/><hr/>
</body>
</html>

2.bean标签

  bean标签用于创建一个JavaBean实例。在创建JavaBean实例时,可以使用该标签的子标签param位该JavaBean实例传入属性值,使用param标签必须为该JavaBean提供对应的setter方法,而如果要访问此JavaBean属性的值时,应当有相应的getter方法。bean标签有如下几个属性:

  name属性:必须属性,该属性指定了要实例化的JavaBean的实现类。

  var属性:可选属性,指定了该属性后,此实例被放入Stack Context中,并放入requestScope中。

  注意:在bean标签的标签体内时,bean标签创建的JavaBean位于ValueStack的顶端;一旦离开此标签体,JavaBean将被移出ValueStack,将无法再次访问此JavaBean实例,除非为此bean标签指定了var,之后可以通过Stack Context访问此JavaBean。

示例:

(1)JavaBean类Student

public class Student {
    //属性
    private String name;
    private int age;
    //setter、getter方法
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return this.name;
    }
    public void setAge(int age){
        this.age = age;
    }
    public int getAge(){
        return this.age;
    }
}

(2)使用bean标签创建Student实例,指定属性值,并访问属性值

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!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>bean - test</title>
</head>
<body>
<!-- 使用bean标签创建实例 -->
<s:bean name="myJavaBean.Student" var="student_1">
    <!-- 传入参数 -->
    <s:param name="name" value="'jiagoushi'"/>
    <s:param name="age" value="27"/>
</s:bean>
姓名:<s:property value="#student_1.name"/><br/>
年龄:<s:property value="#student_1.age"/>
</body>
</html>

3.date标签

  date标签用于格式化输出一个日期,也可以用来计算一个指定日期和当前日期的时间差。date标签有如下几个属性:

  format属性:可选属性,如果指定了该属性,将根据属性指定的格式来格式化日期。

  nice属性:可选属性,该属性只能为true或者false,它用于指定是否输出指定日期和当前时刻之间的时间差。默认为false,不输出。

  name属性:必填属性,指定需要格式化的日期。

  var:可选属性,指定该属性后,格式化后的字符串将被放入Stack Context中,并放入requestScope中,但不会在页面中显示出。

  注:当同时指定了nice=“true”属性和format属性后,format属性失效。

  当没有指定nice="true"也没有指定format属性时,系统会去国际化资源文件中寻找key为struts.date.format的值,将该值当做格式化文本来格式化日期。如果依然没有找到,则默认采用DateFormat.MEDIUM的格式输出。

示例:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!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>date test</title>
</head>
<body>
<!-- 获取一个Date对象 -->
<s:bean name="java.util.Date" var="time"/>
<s:date name="#time" nice="false" format="yyyy年MM月dd日"/>
</body>
</html>

4.debug标签

  此标签用于帮助调试,它可以产生一个超链接,通过该链接可以看到Stack Context和ValueStack中的所有的信息。

  用法:<s:debug/>

5.include标签

  用于将一个JSP页面或者一个Servlet包含到本页面中。它有一个value属性,是个必须属性,指定包含的JSP页面或者Servlet。可以使用param标签为包含页面出入参数值。

6.param标签

  该标签用于为其他标签提供参数。在前面使用了好多了。

7.push标签

  将某个值放入ValueStack的栈顶,便于访问此值,它有一个value属性是个必须属性,指定了放入ValueStack栈顶的值。

8.set标签

  该标签用于把一个值放入指定的范围内,如application,session,request等等。该标签有如下几个属性:

  scope属性:可选属性,指定该属性后,把值放入此属性范围中,只能为application,session,reqeust,page或者action这五个之一。

  value属性:指定赋给变量的值。如果没有指定,则给位于ValueStack栈顶的值赋给变量。

  var属性:可选属性,如果指定了该属性,会把该值放入ValueStack的栈顶。

9.property标签

  用于输出指定的值。比较简单。

Struts2的标签库(四)——数据标签的更多相关文章

  1. JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  2. javaweb学习总结(二十八)——JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  3. 学会怎样使用Jsp 内置标签、jstl标签库及自定义标签

    学习jsp不得不学习jsp标签,一般来说,对于一个jsp开发者,可以理解为jsp页面中出现的java代码越少,对jsp的掌握就越好,而替换掉java代码的重要方式就是使用jsp标签.  jsp标签的分 ...

  4. javaWeb学习总结(9)- JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  5. jsp的标签库和自定义标签

    1.jstl标签库 JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. ...

  6. JSTL、JSTL核心标签库——流程处理标签

    JSTL环境 JSTL是另一个标准规范,并非在JSP的规范中,所以必须另外下载JSTL实现. 要使用JSTL标签库,必须在JSP网页上使用taglib指示元素定义前置名称与uri参考.例如,引入JST ...

  7. ThinkPHP内置标签库原理(Cx标签库)

    任何一个模板引擎的功能都不可能是为你量身定制的,具有一个良好的可扩展 机制也是模板引擎的另外一个考量,Smarty采用的是插件方法来实现扩展,ThinkTemplate由于采用了标签库技术,比Smar ...

  8. struts2学习(8)struts标签1(数据标签、控制标签)

    一.struts2标签简介: struts标签很多,功能强大,这是优点: 但是缺点的话,性能方面可能会,各方面速度啊啥的会降低:有人比较测试,struts性能比jstl低很多:   二.struts2 ...

  9. 小峰servlet/jsp(7)jstl国际化标签库、sql标签库等

    一.jstl国际化标签库: fmt:setLocale 设定用户所在的区域: fmt:formatDate   对日期进行格式化 fmt:requestEncoding 设置所有的请求编码; fmt: ...

  10. jsp页面使用EL表达式 使用Jstl标签库中的标签,需要引入jstl.jar和standard.jar

    spring boot 中使用jstl 首先在pom中加入 <dependency> <groupId>jstl</groupId> <artifactId& ...

随机推荐

  1. JQ 动态加载多选框--随记

    =====================html <table> <tr> <td style="Width: 100px; text-align: righ ...

  2. 夺命雷公狗ThinkPHP项目之----企业网站13之文章列表页的实现(主要是分页的实现)

    列表页这个其实是比较简单的一个,直接遍历除数据即可: public function lists(){ //$mod = M("Article")->select(); // ...

  3. ADO.NET中的TransactionScope何时需要启用MSTDC(分布式事务管理)

    我们知道在ADO.NET中可以用TransactionScope来将多个SqlConnection(多个数据库连接)执行的Sql语句放入一个事物中提交或取消,但是使用TransactionScope的 ...

  4. COM编程之一 组件

    [1]组件产生的背景 一个应用程序通常是由单个二进制文件组成的. 当应用程序版本发布后一般不会发生任何变化,对于操作系统.硬件以及客户需求的改变都必须要等到修复源代码后且整个应用程序被重新编译才可处理 ...

  5. python实现指定目录下批量文件的单词计数:串行版本

    直接上代码. 练习目标: 1.  使用 Python 面向对象的方法封装逻辑和表达 : 2.  使用异常处理和日志API : 3.  使用文件目录读写API : 4.  使用 list, map, t ...

  6. 使用BusyBox制作根文件系统【转】

    本文转载自:http://www.cnblogs.com/lidabo/p/5300180.html 1.BusyBox简介 BusyBox 是很多标准 Linux 工具的一个单个可执行实现.Busy ...

  7. 161010、在大型项目中组织CSS

    编写CSS容易. 编写可维护的CSS难. 这句话你之前可能听过100次了. 原因是CSS中的一切都默认为全局的.如果你是一个C程序员你就知道全局变量不好.如果你是任何一种程序员,你都知道隔离和可组合的 ...

  8. SpringMVC @RequestBody接收Json对象字符串 demo

    springmvc 的这个 @RequestBody 用得比较少,今天看了一下,还是很方便. @RequestBody 接收类似 [{name: "test"}, {name: & ...

  9. 人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载

    人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载 ImageNet挑战赛中超越人类的计算机视觉系统微软亚洲研究院视觉计算组基于深度卷积神经网络(CNN)的计 ...

  10. DIV设置了固定宽高出现文字(文本)的不能自动换行

    如果你的div设置了固定的width和height,有时会出现文字不能自动换行的情况 查过相关资料后才知道,只有英文文本才会出现不能自动换行的情况,(中文不存在)而原因是因为英文文本之间没有加空格,浏 ...