Struts标签入门

基本概述

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

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

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

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

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

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

 

JavaEE中的三种标签

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

2JSTL

3Struts标签

PSStruts很多功能和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常用标签使用案例

PSUser类是测试标签对对象操作所使用的类。

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标签库

    strutshtml标签本质上还是普通的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>

PSimgimage的区别在于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>

PSmessage所对应的资源文件:

ApplicationResources.properties
# Resources for parameter 'com.pc.struts.ApplicationResources'
# Project StrutsTag

key1 = welcome {0}
# 在实际开发中,可以把错误号统一,在需要显示的时候,直接使用。

err1 =\u4F60\u7684\u9519\u8BEF\u662F {0} and {1}

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

 

PS:在使用bean:message时,如果属性文件有中文,须在MyEclipse里面将文件编码设置为UTF-8,然后再用jdkbin目录下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>

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐