Struts标签入门
Struts标签入门基本概述 Struts 是 Apache Jakarta 的一个著名的开源项目,目标是为构建基于 Java 的 web 应用程序提供一个框架。Struts 提供了非常多的标签,依据功能和使用习惯的不同被分到了四个标签库中:n Bean Tags:该标签库包含的标签可以用来创建 bean、访问 bean 和访问 bean 的属性。同时提供了依据 cook
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 StrutsTag
key1 = 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>
更多推荐
所有评论(0)