Struts标签入门

基本概述

Struts 是 Apache Jakarta 的一个著名的开源项目,目标是为构建基于 Java 的 web 应用程序提供一个框架。Struts 提供了非常多的标签,依据功能和使用习惯的不同被分到了四个标签库中:

n Bean Tags:该标签库包含的标签可以用来创建 bean、访问 bean 和访问 bean 的属性。同时提供了依据 cookies、headers 和 parameters 的值创建相关 bean 的能力。

n HTML Tags:该标签库包含的标签可以用来创建 Struts 输入表单。

n Logic Tags:该标签库包含的标签可以用来进行逻辑判断、集合迭代和流程控制。

n Nested Tags:该标签库建立在前三个标签库的基础上,具有前三个标签库的所有功

能,只是允许标签间的嵌套。

JavaEE中的三种标签

1、自定义标签(最早出现)

2、JSTL

3、Struts标签

PS:Struts很多功能和JSTL差不多,可以混合使用Struts标签和JSTL标签。在使用MVC基本结构时,一般使用JSTL做页面,使用了Struts框架之后,一般Struts标签和JSTL标签混合使用。因为这两种标签可以相互补充使用。

Struts标签用法

1、导入相应Struts包,这个在Struts入门有相应下载链接。

2、在struts-taglib-x.jar包下面的/META-INF/tld中的struts-xxx.tld文件中找到相应的uri地址。

3、引入标签库<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html"%>

4、通过这样的形式使用:<html:img src="" />

Struts常用标签使用案例

PS:User类是测试标签对对象操作所使用的类。

package com.pc.domain;
/*** * @author Switch* @function 用户类* @description User的一个实例是一个domain对象/同时也可以视为一个javabean*/
public class User {private String username;public User() { }public User(String username, String password) {this.username = username;this.password = password;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}private String password;
}

html标签库

struts的html标签本质上还是普通的html标签,Struts设计者主要是为了和Struts框架统一,对普通的html标签做了封装。

PS:如果需要使用表单内元素必须对应的表单类,以及被form标签包含。注意:表单类一定会对应一个action,这需要在struts-config.xml中配置

package com.pc.struts.form;
import org.apache.struts.action.ActionForm;
/*** 表单对应的表单类* @struts.form name="userForm"*/
public class UserForm extends ActionForm {private String username;private String password;private String fruit;public String getFruit() {return fruit;}public void setFruit(String fruit) {this.fruit = fruit;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%-- 引入struts的html标签库 --%>
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>My JSP 'html.jsp' starting page</title>
</head><body><%-- property:是HTML中button的name --%><html:button property="button1" value="提交"></html:button><%-- base:指超链接没有指定连接时,默认到ref属性的链接 --%><%-- <html:base ref="http://www.baidu.com "/> --%><%-- 普通的image标签 --%><html:img src="" /><%-- image按钮 --%><html:image src="" /> <%-- html:form struts的html标签涉及到输入信息,struts框架就会有一定的要求1、要求和一个表单类对应,而且应当放在一个<html:form>中2、每一个property应该对应于form类中的一个属性--%><html:form action="login.do" method="post"><html:text property="username" /><html:password property="password" /><html:checkbox property="fruit" value="apple">apple</html:checkbox><html:checkbox property="fruit" value="orange">orange</html:checkbox></html:form>
</body>
</html>

PS:img和image的区别在于img对应于<img>标签,image对应于<input type=”image” />标签。

bean标签库

Bean Tags:该标签库包含的标签可以用来创建 bean、访问 bean 和访问 bean 的属性。

<%@ page language="java" import="java.util.*,com.pc.domain.*"pageEncoding="UTF-8"%>
<%-- 引入struts的bean标签库 --%>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>My JSP 'struts_bean.jsp' starting page</title>
</head><body><p>bean标签的使用</p><%/* 不推荐这么使用 */request.setAttribute("name", "zs");User user = new User("张三", "123456");request.setAttribute("user", user);%><%-- bean:write用于输出信息 --%><p>bean:write的使用</p><p>变量的使用</p><bean:write name="name" /><p>对象属性值的使用</p><bean:write name="user" property="username" /><bean:write name="user" property="password" /><p>bean:message的使用</p><%-- bean:message 标签用来从指定的 locale 中取回国际化的消息并输出,在这个过程中可以传递五个以内的参数。 通过该方法,可以更方便的输出信息,要在struts-config.xml中配置这样<message-resources parameter="com.pc.struts.ApplicationResources" />的信息--%><%-- key指定调用资源文件的哪个资源 --%><%-- arg[0-4]代表传入的参数 --%><bean:message key="key1" arg0="zs" /><br /><bean:message key="err1" arg0="用户名为空" arg1="密码错误" /><p>bean:define的使用</p><bean:define id="username" value="zs"></bean:define><%-- 定义一个JavaBean --%><p>jsp:useBean的使用</p><jsp:useBean id="user2" class="com.pc.domain.User"></jsp:useBean><jsp:setProperty name="user2" property="username" value="zs" /><jsp:setProperty name="user2" property="password" value="123456" /><%--<%/* 等价于下面的语句  */User user2 = new User();user2.setUsername("zs");user2.setPassword("123456");%--%>用户名:${user2.username } 密码:${user2.password }
</body>
</html>

PS:message所对应的资源文件:

ApplicationResources.properties
# Resources for parameter 'com.pc.struts.ApplicationResources'
# Project StrutsTagkey1 = welcome {0}
# 在实际开发中,可以把错误号统一,在需要显示的时候,直接使用。err1 =\u4F60\u7684\u9519\u8BEF\u662F {0} and {1}

PS:JavaBean的属性应该是它的setXxx和getXxx,struts标签这类的标签和EL语言这类的语言都是使用JavaBean的属性其底层都是调用了相应的setXxx或者是getXxx方法。

PS:在使用bean:message时,如果属性文件有中文,须在MyEclipse里面将文件编码设置为UTF-8,然后再用jdk的bin目录下native2ascii工具转换成ascii码。

logic标签库

Logic Tags:该标签库包含的标签可以用来进行逻辑判断、集合迭代和流程控制。

<%@ page language="java" import="java.util.*,com.pc.domain.*"pageEncoding="UTF-8"%>
<%-- 引入struts的logic标签 --%>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic"%>
<%-- 引入struts的bean标签 --%>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>My JSP 'struts_logic.jsp' starting page</title>
</head><body><p>logic标签的使用</p><%/* 不推荐这么使用 */User user1 = new User("zs", "123456");User user2 = new User("ls", "234567");User user3 = new User("ww", "345678");List<User> users = new ArrayList<User>();users.add(user1);users.add(user2);users.add(user3);request.setAttribute("users", users);%><p>logic:iterate的使用</p><%-- 迭代器 --%><logic:iterate id="user" name="users">bean输出<%-- <bean:write name="user" property="username" /><bean:write name="user" property="password" />--%><%-- EL输出 --%>${user.username }${user.password }<br /></logic:iterate><p>logic:empty的使用</p><%-- 判断是否为空 --%><logic:empty name="name">name属性不存在<br /></logic:empty><p>logic:notempty的使用</p><%-- 判断是否不为空 --%><logic:notEmpty name="users">users属性存在</logic:notEmpty><p>logic:greaterThan的使用</p><%-- 判断是否大于 --%><logic:iterate id="user" name="users"><logic:greaterThan value="10000" name="user" property="password"><bean:write name="user" property="password" />大于10000<br /></logic:greaterThan>    </logic:iterate>
</body>
</html>

Struts标签入门相关推荐

  1. 从头开始 Struts 2 入门

    原文地址:从头开始 Struts 2  入门作者:晓强 [序] 本文采用 Maven2 工具进行 Struts2 的开发管理.用户只需安装JDK 5 (或6),和 Maven2 工具即可,不需安装 S ...

  2. Struts 2 入门

    Struts 2  入门: 一:Struts 2执行流程: 1 客户端发送请求: 2这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤 ...

  3. struts标签传值

    struts标签传值 纠结到现在,还好试出来了 JSP页面使用struts标签向action传值:<s:param name="xxx" value="%{#ses ...

  4. Struts快速入门

    一.概述 Struts是Apache基于Model2模型(MVC设计模式)开发的一个开源的Web应用框架,由一组相互协作的类或组件.Servlet以及jsp标签库组成. Struts采用拦截器的机制来 ...

  5. Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用

    来自:http://blog.csdn.net/love_you_99/article/details/8184797 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极 ...

  6. Struts标签和OGNL表达式

    Struts标签和OGNL表达式 1.OGNL通过索引访问ValueStack中的对象. [0].name [1].name 上面使用的索引的方式并不是直接取得指定元素,而是从指定索引开始向下搜索. ...

  7. struts 标签s:ierator的简单使用说明

    struts 标签<s:ierator>的简单使用说明,只显示<s:ierator> 的前6条数据 <s:iterator value="lstVisitor& ...

  8. struts标签--logic总结

    struts标签--logic总结    1.  logic:empty           该标签是用来判断是否为空的.如果为空,该标签体中嵌入的内容就会被处理.该标签用于以下情况: 1)当Java ...

  9. JAVA框架——struts(一)struts快速入门,struts访问流程,struts配置文件详解,动态方法调用

    一. Struts2框架概述 是一种基于MVC模式的轻量级web框架.本质是一个Servlet.作为控制器建立模型与视图的数据交互.Struts2以WebWord为核心,采用拦截器的机制处理客户的请求 ...

最新文章

  1. Jmeter性能测试之随机控制器和随机顺序控制器的使用
  2. .NET 6 Talk Party 2|.NET Core 与行业
  3. nssl1321,jzoj(初中)2106-买门票【dfs,暴力,字符串】
  4. adrms移动设备扩展插件_如何在所有移动设备上扩展网站
  5. mysql 5.6.15安装图解_Windows8下mysql 5.6.15 安装配置方法图文教程
  6. 如何删除表中的重复记录?等等常用SQL语句的积累
  7. Brush、Color、String相互转换
  8. rvm,ruby的安装
  9. 两年数据对比柱形图_视频教程:堆积柱形图的几种变化形式
  10. RK3399 Android7.1修改系统默认壁纸
  11. Instagram密友名单与私密账户的区别
  12. 奸商如何修改电脑属性里显示的CPU型号和内存容量
  13. linux centos安装wine qq,centos7下安装wine+QQ成功实例
  14. (只需五步)ChatGPT接入微信的攻略
  15. javaeye恢复正常了
  16. 【免费咨询】 Cloudera Hadoop大数据培训:管理员、开发者、数据分析
  17. ASP中的HTML在线编辑器的调用方法
  18. 【前端面试知识点】- 1. httphttps
  19. 修复浏览器首页被hao123劫持的问题(亲身经历)
  20. CTF命令执行及绕过技巧

热门文章

  1. Billboard HDU - 2795(树状数组,单点修改,区间查询)
  2. 使用 ramda 解析 .yarnrc/.npmrc 配置文件的例子
  3. 常用公共前端CDN库
  4. 【Python】字典类型
  5. 【网站】Kiwi浏览器中文网
  6. 【Python】 数字求和
  7. mysql索引的类型和查看、添加、修改、删除索引的方法介绍
  8. 从零学web前端_从零到前端英雄(第1部分)
  9. C/C++字符串处理库
  10. 用 Python 分析今年考研形势