文章源自略懂百科-http://wswcn.cn/96370.html
第3章 Struts2标签库文章源自略懂百科-http://wswcn.cn/96370.html
本章学习目标文章源自略懂百科-http://wswcn.cn/96370.html
· 熟练掌握控制标签文章源自略懂百科-http://wswcn.cn/96370.html
· 熟练掌握数据标签文章源自略懂百科-http://wswcn.cn/96370.html
· 熟练掌握表单标签文章源自略懂百科-http://wswcn.cn/96370.html
· 了解其他标签文章源自略懂百科-http://wswcn.cn/96370.html
· 掌握OGNL表达式语言文章源自略懂百科-http://wswcn.cn/96370.html
在JavaWeb阶段,JSP标签库能够简化JSP的开发,避免JSP中嵌入大量Java脚本,同样的,常见的Web层框架也提供了自己特有的标签库,包括Struts2,它提供的标签库功能非常丰富,大大简化了开发,本章将详细讲解Struts2的标签库。文章源自略懂百科-http://wswcn.cn/96370.html
3.1Struts2标签库概述文章源自略懂百科-http://wswcn.cn/96370.html
3.1.1Struts2标签的分类文章源自略懂百科-http://wswcn.cn/96370.html
Struts2提供的标签库功能很强大,使用很简单,不依赖任何表现层技术,不仅可以在JSP页面中使用,也可以在其他页面中使用,例如FreeMarker等。文章源自略懂百科-http://wswcn.cn/96370.html
Struts2框架的标签库可以分为以下三类。文章源自略懂百科-http://wswcn.cn/96370.html
1.UI标签文章源自略懂百科-http://wswcn.cn/96370.html
UI标签主要用于生成HTML元素的标签,里面包含表单标签和非表单标签,其中表单标签主要用于生成HTML页面的form元素,以及普通表单元素的标签。非表单标签主要用于生成页面上的tree、tab页等。文章源自略懂百科-http://wswcn.cn/96370.html
2.非UI标签文章源自略懂百科-http://wswcn.cn/96370.html
非UI标签主要用于数据访问,逻辑控制,里面包含数据访问标签和流程控制标签,其中数据访问标签主要包含用于输出值栈中的值,完成国际化等功能。流程控制标签主要用于实现分支、循环等流程的控制。文章源自略懂百科-http://wswcn.cn/96370.html
3.Ajax标签文章源自略懂百科-http://wswcn.cn/96370.html
Ajax标签用的比较少,这里不做深入讨论,如果读者有兴趣,可以自己查阅相关资料。文章源自略懂百科-http://wswcn.cn/96370.html
3.1.2Struts2标签库的导入文章源自略懂百科-http://wswcn.cn/96370.html
在第一章中下载的struts-2.5.10.1-all.zip的lib目录下,有一个struts2-core-2.5.10.1.jar文件,该文件中包含了标签的处理类和描述文件,解压此文件,在META-INF目录下可以找到struts-tags.tld文件,该文件就是Struts2的标签库描述文件。文章源自略懂百科-http://wswcn.cn/96370.html
在JSP中使用标签库时,必须使用taglib指令引入标签库,具体示例如下。文章源自略懂百科-http://wswcn.cn/96370.html
<%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
如上示例中,prefix="s"指定了使用此标签库时的前缀,uri="/struts-tags"指定了标签库描述文件的路径,如果项目采用的Servlet规范版本是2.3或以下,还需要在web.xml中增加对标签库的定义,具体示例如下。文章源自略懂百科-http://wswcn.cn/96370.html
/struts-tags文章源自略懂百科-http://wswcn.cn/96370.html
/WEB-INF/lib/struts2-core-2.5.10.1.jar文章源自略懂百科-http://wswcn.cn/96370.html
介绍完标签库的导入,接下来将详细讲解每一类标签的使用。文章源自略懂百科-http://wswcn.cn/96370.html
3.2流程控制标签文章源自略懂百科-http://wswcn.cn/96370.html
流程控制标签主要用于流程的控制,例如分支、循环等操作,除此之外,还可以完成对集合的合并、排序等操作,接下来具体介绍流程控制标签。文章源自略懂百科-http://wswcn.cn/96370.html
3.2.1if标签文章源自略懂百科-http://wswcn.cn/96370.html
if标签与java的语法一样,做为条件判断来使用,标签内有一个test属性接收布尔类型参数,以此来判断输出的内容,接下来通过一个案例来演示if标签的使用,如例3-1所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-1 if.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14 正确文章源自略懂百科-http://wswcn.cn/96370.html
15 错误文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
19 文章源自略懂百科-http://wswcn.cn/96370.html
例3-1的代码编写完成后,运行项目,在浏览器访问项目下的if.jsp,运行效果如图3.1所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.1 if.jsp文章源自略懂百科-http://wswcn.cn/96370.html
图3.1中,if.jsp页面显示"正确",因为例3-1中,s:if标签的test属性判断是否为true,为true就输出标签体,为false则隐藏标签体。文章源自略懂百科-http://wswcn.cn/96370.html
3.2.2generator标签文章源自略懂百科-http://wswcn.cn/96370.html
generator标签是一个字符串解析器,用于将一个字符串解析成一个集合,接下来通过一个案例来演示generator标签的使用,如例3-2所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-2 generator.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14 文章源自略懂百科-http://wswcn.cn/96370.html
15 文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
19 文章源自略懂百科-http://wswcn.cn/96370.html
20 文章源自略懂百科-http://wswcn.cn/96370.html
例3-2的代码编写完成后,运行项目,在浏览器访问项目下的if.jsp,运行效果如图3.2所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.2 generator.jsp文章源自略懂百科-http://wswcn.cn/96370.html
图3.2中,generator.jsp页面显示"Java C C++",在例3-2中,利用generator标签,将字符串解析,根据逗号进行分割,解析完成后,通过iterator标签遍历解析完成后的集合,通过property标签显示集合内容。文章源自略懂百科-http://wswcn.cn/96370.html
3.2.3iterator标签文章源自略懂百科-http://wswcn.cn/96370.html
iterator标签是一个迭代器,用于将集合迭代输出,接下来通过一个案例来演示iterator标签的使用,如例3-3所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-3 iterator.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14 文章源自略懂百科-http://wswcn.cn/96370.html
15 文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
例3-3的代码编写完成后,运行项目,在浏览器访问项目下的iterator.jsp,运行效果如图3.3所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.3 iterator.jsp文章源自略懂百科-http://wswcn.cn/96370.html
图3.3中,iterator.jsp页面显示"1 2 3 4 5",在例3-3中,在iterator标签中用value属性声明要遍历的集合,然后通过property标签显示集合内容。文章源自略懂百科-http://wswcn.cn/96370.html
3.2.4subset标签文章源自略懂百科-http://wswcn.cn/96370.html
subset标签用于截取集合的部分元素,形成新的子集合,接下来通过一个案例来演示subset标签的使用,如例3-4所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-4 subset.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14
15 start="1" count="3">文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
19 文章源自略懂百科-http://wswcn.cn/96370.html
20 文章源自略懂百科-http://wswcn.cn/96370.html
21 文章源自略懂百科-http://wswcn.cn/96370.html
22 文章源自略懂百科-http://wswcn.cn/96370.html
23 文章源自略懂百科-http://wswcn.cn/96370.html
例3-4的代码编写完成后,运行项目,在浏览器访问项目下的subset.jsp,运行效果如图3.4所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.4 subset.jsp文章源自略懂百科-http://wswcn.cn/96370.html
图3.4中,subset.jsp页面显示"C C++ PHP",在例3-4中,在subset标签中用source属性指定源集合,用start属性指定从索引为1的元素开始取,这里索引从0开始,也就是从第二个元素开始取,最后用count指定子集中元素的个数为3,所以取得了三个元素,形成新的子集,然后通过iterator标签和property标签进行遍历显示。文章源自略懂百科-http://wswcn.cn/96370.html
3.3数据访问标签文章源自略懂百科-http://wswcn.cn/96370.html
数据访问标签主要用于各种数据访问相关的功能以及Action的调用等,接下来具体介绍数据访问标签。文章源自略懂百科-http://wswcn.cn/96370.html
3.3.1action标签文章源自略懂百科-http://wswcn.cn/96370.html
action标签用于在jsp页面中直接调用Action,接下来通过一个案例来演示action标签的使用,首先编写后台代码,如例3-5所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-5 MyAction.java文章源自略懂百科-http://wswcn.cn/96370.html
1 import com.opensymphony.xwork2.ActionSupport;文章源自略懂百科-http://wswcn.cn/96370.html
2 public class MyAction extends ActionSupport {文章源自略懂百科-http://wswcn.cn/96370.html
3 private static final long serialVersionUID = 1L;文章源自略懂百科-http://wswcn.cn/96370.html
4 public void myMethod() {文章源自略懂百科-http://wswcn.cn/96370.html
5 System.out.println("myMethod方法被调用了!");文章源自略懂百科-http://wswcn.cn/96370.html
6 }文章源自略懂百科-http://wswcn.cn/96370.html
7 }文章源自略懂百科-http://wswcn.cn/96370.html
接着在struts.xml文件中编写映射关系,如例3-6所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-6 struts.xml文章源自略懂百科-http://wswcn.cn/96370.html
1 文章源自略懂百科-http://wswcn.cn/96370.html
2 文章源自略懂百科-http://wswcn.cn/96370.html
3 "-//Apache Software Foundation//DTD Struts文章源自略懂百科-http://wswcn.cn/96370.html
4 Configuration 2.5//EN"文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://struts.apache.org/dtds/struts-2.5.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7
8 value="false" />文章源自略懂百科-http://wswcn.cn/96370.html
9 文章源自略懂百科-http://wswcn.cn/96370.html
10
11 extends="struts-default">文章源自略懂百科-http://wswcn.cn/96370.html
12
13 class="com.qianfeng.struts.action.MyAction"文章源自略懂百科-http://wswcn.cn/96370.html
14 method="myMethod">文章源自略懂百科-http://wswcn.cn/96370.html
15 文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
最后编写action.jsp页面,如例3-7所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-7 action.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13
14 executeResult="false">文章源自略懂百科-http://wswcn.cn/96370.html
15 文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
代码编写完成后,运行项目,在浏览器访问项目下的action.jsp,控制台会打印出"myMethod方法被调用了!"运行效果如图3.5所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.5 控制台文章源自略懂百科-http://wswcn.cn/96370.html
在例3-5中,编写了一个Action实现类,自定义了一个myMethod方法,方法内在控制台输出"myMethod方法被调用了!",例3-6中在struts.xml配置文件中,定义name为myAction的实现类,例3-7中在页面直接使用action标签访问name为myAction的Action。文章源自略懂百科-http://wswcn.cn/96370.html
3.3.2bean标签文章源自略懂百科-http://wswcn.cn/96370.html
bean标签用于创建一个JavaBean的实例,可以通过bean标签的子标签param给JavaBean传入参数,接下来通过一个案例来演示bean标签的使用,首先新建一个JavaBean的类,这里将类建在com.qianfeng.struts.entity包下,如例3-8所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-8 Student.java文章源自略懂百科-http://wswcn.cn/96370.html
1 package com.qianfeng.struts.entity;文章源自略懂百科-http://wswcn.cn/96370.html
2 public class Student {文章源自略懂百科-http://wswcn.cn/96370.html
3 private String name;文章源自略懂百科-http://wswcn.cn/96370.html
4 private int age;文章源自略懂百科-http://wswcn.cn/96370.html
5 public String getName() {文章源自略懂百科-http://wswcn.cn/96370.html
6 return name;文章源自略懂百科-http://wswcn.cn/96370.html
7 }文章源自略懂百科-http://wswcn.cn/96370.html
8 public void setName(String name) {文章源自略懂百科-http://wswcn.cn/96370.html
9 this.name = name;文章源自略懂百科-http://wswcn.cn/96370.html
10 }文章源自略懂百科-http://wswcn.cn/96370.html
11 public int getAge() {文章源自略懂百科-http://wswcn.cn/96370.html
12 return age;文章源自略懂百科-http://wswcn.cn/96370.html
13 }文章源自略懂百科-http://wswcn.cn/96370.html
14 public void setAge(int age) {文章源自略懂百科-http://wswcn.cn/96370.html
15 this.age = age;文章源自略懂百科-http://wswcn.cn/96370.html
16 }文章源自略懂百科-http://wswcn.cn/96370.html
17 @Override文章源自略懂百科-http://wswcn.cn/96370.html
18 public String toString() {文章源自略懂百科-http://wswcn.cn/96370.html
19 return "Student [name=" + name + ", age=" + age + "]";文章源自略懂百科-http://wswcn.cn/96370.html
20 }文章源自略懂百科-http://wswcn.cn/96370.html
21 }文章源自略懂百科-http://wswcn.cn/96370.html
接下来编写bean.jsp页面,如例3-9所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-9 bean.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14 文章源自略懂百科-http://wswcn.cn/96370.html
15 文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 Person实例的name为:文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
19 Person实例的age为:文章源自略懂百科-http://wswcn.cn/96370.html
20 文章源自略懂百科-http://wswcn.cn/96370.html
21 文章源自略懂百科-http://wswcn.cn/96370.html
22 文章源自略懂百科-http://wswcn.cn/96370.html
代码编写完成后,运行项目,在浏览器访问项目下的bean.jsp,运行效果如图3.6所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.6 bean.jsp文章源自略懂百科-http://wswcn.cn/96370.html
在例3-8中,创建了一个Student实体类,在例3-9中,直接使用bean标签的name属性指定要创建的实体类是在com.qianfeng.struts.entity包下的Student,var属性指定别名为s,在子标签param中,分别指定了实体类的name和age属性值,创建完成后,通过property标签取到了创建好的实例的值,这里实际上是将类的实例放到了值栈的栈顶,关于值栈会在后面详细讲解。文章源自略懂百科-http://wswcn.cn/96370.html
3.3.3date标签文章源自略懂百科-http://wswcn.cn/96370.html
date标签用于日期的相关操作,例如日期格式化,接下来通过一个案例来演示date标签的使用,如例3-10所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-10 date.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 <%文章源自略懂百科-http://wswcn.cn/96370.html
13 java.util.Date now = new java.util.Date();文章源自略懂百科-http://wswcn.cn/96370.html
14 pageContext.setAttribute("now", now);文章源自略懂百科-http://wswcn.cn/96370.html
15 %>文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
19 文章源自略懂百科-http://wswcn.cn/96370.html
20 文章源自略懂百科-http://wswcn.cn/96370.html
例3-10的代码编写完成后,运行项目,在浏览器访问项目下的date.jsp,运行效果如图3.7所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.7 date.jsp文章源自略懂百科-http://wswcn.cn/96370.html
图3.7中,bean.jsp页面显示了格式化后的当前时间,在例3-10中,通过java脚本创建了一个Date对象now,赋值为当前时间,将now设置到了page域中,指定date标签的name属性为now,用format属性指定了日期的格式。文章源自略懂百科-http://wswcn.cn/96370.html
3.4表单标签文章源自略懂百科-http://wswcn.cn/96370.html
表单标签对应着HTML中的表单元素,Struts2表单标签提供了很多简单易用的属性,大大提高开发效率,开发时,这些表单属性实际上对应着Action中的属性值,Struts2框架会将提交的表单信息直接赋给对应的Action属性,接下来具体介绍表单标签。文章源自略懂百科-http://wswcn.cn/96370.html
3.4.1form标签文章源自略懂百科-http://wswcn.cn/96370.html
form标签用于定义form表单,接下来通过一个案例来演示form标签的使用,如例3-11所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-11 form.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14 用户名:文章源自略懂百科-http://wswcn.cn/96370.html
15 文章源自略懂百科-http://wswcn.cn/96370.html
16 密 码:文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
19 文章源自略懂百科-http://wswcn.cn/96370.html
20 文章源自略懂百科-http://wswcn.cn/96370.html
21 文章源自略懂百科-http://wswcn.cn/96370.html
22 文章源自略懂百科-http://wswcn.cn/96370.html
例3-11的代码编写完成后,运行项目,在浏览器访问项目下的form.jsp,运行效果如图3.8所示。文章源自略懂百科-http://wswcn.cn/96370.html
图3.8文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.9 form.jsp文章源自略懂百科-http://wswcn.cn/96370.html
图3.8中,form.jsp页面了一个登陆的表单,在例3-11中,在form标签中写了三个input标签,定义表单中的内容,有用户名、密码和提交。文章源自略懂百科-http://wswcn.cn/96370.html
3.4.2textfield标签文章源自略懂百科-http://wswcn.cn/96370.html
textfield标签用于定义普通文本输入框,接下来通过一个案例来演示textfield标签的使用,如例3-12所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-12 textfield.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14 文章源自略懂百科-http://wswcn.cn/96370.html
15 文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
例3-12的代码编写完成后,运行项目,在浏览器访问项目下的textfield.jsp,运行效果如图3.9所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.10 textfield.jsp文章源自略懂百科-http://wswcn.cn/96370.html
图3.9中,textfield.jsp页面显示用户名输入框,例3-12中,首先定义表单,然后在textfield标签中用name属性指定文本框的名字,用label属性指定文本框前的描述文字。文章源自略懂百科-http://wswcn.cn/96370.html
3.4.3password标签文章源自略懂百科-http://wswcn.cn/96370.html
password标签用于定义一个密码框,接下来通过一个案例来演示password标签的使用,如例3-13所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-13 password.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14 文章源自略懂百科-http://wswcn.cn/96370.html
15 文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
例3-8的代码编写完成后,运行项目,在浏览器访问项目下的password.jsp,运行效果如图3.10所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.11 password.jsp文章源自略懂百科-http://wswcn.cn/96370.html
图3.10中,password.jsp页面显示了一个密码文本框,输入的密码隐式显示,在例3-13中,首先定义表单,然后在password标签中用name属性指定文本框的名字,用label属性指定文本框前的描述文字。文章源自略懂百科-http://wswcn.cn/96370.html
3.4.4radio标签文章源自略懂百科-http://wswcn.cn/96370.html
radio标签用于定义单选框,接下来通过一个案例来演示radio标签的使用,如例3-14所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-14 radio.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14
15 label="性别" />文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
19 文章源自略懂百科-http://wswcn.cn/96370.html
例3-14的代码编写完成后,运行项目,在浏览器访问项目下的radio.jsp,运行效果如图3.11所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.12 radio.jsp文章源自略懂百科-http://wswcn.cn/96370.html
图3.11中,radio.jsp页面显示了一个单选项,默认选择"男",在例3-14中,首先定义表单,然后在radio标签中用list属性指定单选项的内容,用value属性指定默认值为1,也就是默认选择"男",用name属性指定单选框的名字,用label属性指定文本框前的描述文字。文章源自略懂百科-http://wswcn.cn/96370.html
3.4.5checkboxlist标签文章源自略懂百科-http://wswcn.cn/96370.html
checkboxlist标签用于定义多选框,接下来通过一个案例来演示checkboxlist标签的使用,如例3-15所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-15 checkboxlist.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14
15 name="love" label="爱好" />文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
19 文章源自略懂百科-http://wswcn.cn/96370.html
例3-15的代码编写完成后,运行项目,在浏览器访问项目下的checkboxlist.jsp,运行效果如图3.12所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.13 checkboxlist.jsp文章源自略懂百科-http://wswcn.cn/96370.html
图3.12中,checkboxlist.jsp页面显示了一个多选框,在例3-15中,首先定义表单,然后在checkboxlist标签中用list属性指定多选框的内容,用name属性指定多选框的名字,用label属性指定文本框前的描述文字。文章源自略懂百科-http://wswcn.cn/96370.html
3.4.6select标签文章源自略懂百科-http://wswcn.cn/96370.html
select标签用于定义下拉选项,接下来通过一个案例来演示select标签的使用,如例3-16所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-16 select.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14
15 headerValue="--歌手--">文章源自略懂百科-http://wswcn.cn/96370.html
16
17 label="男歌手" />文章源自略懂百科-http://wswcn.cn/96370.html
18
19 label="女歌手" />文章源自略懂百科-http://wswcn.cn/96370.html
20 文章源自略懂百科-http://wswcn.cn/96370.html
21 文章源自略懂百科-http://wswcn.cn/96370.html
22 文章源自略懂百科-http://wswcn.cn/96370.html
23 文章源自略懂百科-http://wswcn.cn/96370.html
24 文章源自略懂百科-http://wswcn.cn/96370.html
例3-16的代码编写完成后,运行项目,在浏览器访问项目下的select.jsp,运行效果如图3.13所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.14 select.jsp文章源自略懂百科-http://wswcn.cn/96370.html
图3.13中,select.jsp页面显示了一个下拉选项,在例3-16中,首先定义表单,然后在select标签中用headerValue属性指定下拉选项第一项的值,用optgroup子标签指定下拉项中的分类选项,用label属性指定文本框前的描述文字。文章源自略懂百科-http://wswcn.cn/96370.html
3.4.7textarea标签文章源自略懂百科-http://wswcn.cn/96370.html
textarea标签用于定义文本域,接下来通过一个案例来演示textarea标签的使用,如例3-17所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-17 textarea.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14 文章源自略懂百科-http://wswcn.cn/96370.html
15 文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
例3-17的代码编写完成后,运行项目,在浏览器访问项目下的textarea.jsp,运行效果如图3.14所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.15 textarea.jsp文章源自略懂百科-http://wswcn.cn/96370.html
图3.14中,textarea.jsp页面显示了一个文本域,在例3-17中,首先定义表单,然后在textarea标签中用name属性指定文本域的名字,用label属性指定文本框前的描述文字。文章源自略懂百科-http://wswcn.cn/96370.html
3.4.8submit标签文章源自略懂百科-http://wswcn.cn/96370.html
submit标签用于定义表单提交按钮,接下来通过一个案例来演示submit标签的使用,如例3-18所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-18 submit.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14 文章源自略懂百科-http://wswcn.cn/96370.html
15 文章源自略懂百科-http://wswcn.cn/96370.html
16
17 label="性别" />文章源自略懂百科-http://wswcn.cn/96370.html
18
19 name="love" label="爱好" />文章源自略懂百科-http://wswcn.cn/96370.html
20
21 headerKey="-1" headerValue="--歌手--">文章源自略懂百科-http://wswcn.cn/96370.html
22
23 label="男歌手" />文章源自略懂百科-http://wswcn.cn/96370.html
24
25 label="女歌手" />文章源自略懂百科-http://wswcn.cn/96370.html
26 文章源自略懂百科-http://wswcn.cn/96370.html
27 文章源自略懂百科-http://wswcn.cn/96370.html
28 文章源自略懂百科-http://wswcn.cn/96370.html
29 文章源自略懂百科-http://wswcn.cn/96370.html
30 文章源自略懂百科-http://wswcn.cn/96370.html
31 文章源自略懂百科-http://wswcn.cn/96370.html
32 文章源自略懂百科-http://wswcn.cn/96370.html
例3-18的代码编写完成后,运行项目,在浏览器访问项目下的submit.jsp,运行效果如图3.15所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.16 submit.jsp文章源自略懂百科-http://wswcn.cn/96370.html
图3.15中,submit.jsp页面显示了一个表单,表单最下边有一个提交按钮,可以提交整个表单到一个action,在例3-18中,首先定义表单,表单中定义了各种需要填写的项,最后用submit标签定义了一个提交按钮用于提交表单。文章源自略懂百科-http://wswcn.cn/96370.html
3.5其他标签文章源自略懂百科-http://wswcn.cn/96370.html
讲解完大部分标签后,还需要了解一些其他标签,以便提高开发效率。文章源自略懂百科-http://wswcn.cn/96370.html
3.5.1a标签文章源自略懂百科-http://wswcn.cn/96370.html
a标签用于定义超链接,接下来通过一个案例来演示a标签的使用,首先编写后台代码,如例3-19所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-19 TestAction.java文章源自略懂百科-http://wswcn.cn/96370.html
1 import com.opensymphony.xwork2.ActionSupport;文章源自略懂百科-http://wswcn.cn/96370.html
2 public class TestAction extends ActionSupport {文章源自略懂百科-http://wswcn.cn/96370.html
3 private static final long serialVersionUID = 1L;文章源自略懂百科-http://wswcn.cn/96370.html
4 public String execute() {文章源自略懂百科-http://wswcn.cn/96370.html
5 return SUCCESS;文章源自略懂百科-http://wswcn.cn/96370.html
6 }文章源自略懂百科-http://wswcn.cn/96370.html
7 }文章源自略懂百科-http://wswcn.cn/96370.html
接着在struts.xml文件中编写映射关系,如例3-20所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-20 struts.xml文章源自略懂百科-http://wswcn.cn/96370.html
1 文章源自略懂百科-http://wswcn.cn/96370.html
2 文章源自略懂百科-http://wswcn.cn/96370.html
3 "-//Apache Software Foundation//DTD Struts文章源自略懂百科-http://wswcn.cn/96370.html
4 Configuration 2.5//EN"文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://struts.apache.org/dtds/struts-2.5.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7
8 value="false" />文章源自略懂百科-http://wswcn.cn/96370.html
9 文章源自略懂百科-http://wswcn.cn/96370.html
10
11 extends="struts-default">文章源自略懂百科-http://wswcn.cn/96370.html
12
13 class="com.qianfeng.struts.action.TestAction"文章源自略懂百科-http://wswcn.cn/96370.html
14 method="execute">文章源自略懂百科-http://wswcn.cn/96370.html
15 /target.jsp文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
接着编写前台页面a.jsp页面,如例3-21所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-21 a.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14 文章源自略懂百科-http://wswcn.cn/96370.html
15 跳转到target页面文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
19 文章源自略懂百科-http://wswcn.cn/96370.html
20 文章源自略懂百科-http://wswcn.cn/96370.html
最后编写target.jsp页面,如例3-22所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-22 target.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14 文章源自略懂百科-http://wswcn.cn/96370.html
target页面
15 文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
代码编写完成后,运行项目,在浏览器访问项目下的a.jsp,运行效果如图3.16所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.17 a.jsp文章源自略懂百科-http://wswcn.cn/96370.html
点击"跳转到target"页面,运行效果如图3.17所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.18 target.jsp文章源自略懂百科-http://wswcn.cn/96370.html
在例3-21中,用a标签发送了testAction.action的请求,struts.xml会根据请求,自动找到实现类,实现类中返回了success字符串,根据返回值,跳转到了target.jsp页面。文章源自略懂百科-http://wswcn.cn/96370.html
3.5.2actionerror、actionmessage、fielderror标签文章源自略懂百科-http://wswcn.cn/96370.html
actionerror标签用于输出错误信息到客户端,输出的内容通过getActionErrors()方法获得,actionmessage标签用于输出提示信息到客户端,输出的内容通过getActionMessages()方法获得,fielderror标签用于输出fieldErrors属性保存的字段错误,fieldErrors是一个Map类型的属性,接下来通过一个案例来演示这三个标签的使用,首先编写后台代码,如例3-23所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-23 error.java文章源自略懂百科-http://wswcn.cn/96370.html
1 import com.opensymphony.xwork2.ActionSupport;文章源自略懂百科-http://wswcn.cn/96370.html
2 public class ErrorAction extends ActionSupport {文章源自略懂百科-http://wswcn.cn/96370.html
3 private static final long serialVersionUID = 1L;文章源自略懂百科-http://wswcn.cn/96370.html
4 public String execute() {文章源自略懂百科-http://wswcn.cn/96370.html
5 addActionError("第一个error");文章源自略懂百科-http://wswcn.cn/96370.html
6 addActionError("第二个error");文章源自略懂百科-http://wswcn.cn/96370.html
7 addActionMessage("第一个message");文章源自略懂百科-http://wswcn.cn/96370.html
8 addActionMessage("第二个message");文章源自略懂百科-http://wswcn.cn/96370.html
9 addFieldError("f1", "第一个fieldError");文章源自略懂百科-http://wswcn.cn/96370.html
10 addFieldError("f2", "第二个fieldError");文章源自略懂百科-http://wswcn.cn/96370.html
11 return SUCCESS;文章源自略懂百科-http://wswcn.cn/96370.html
12 }文章源自略懂百科-http://wswcn.cn/96370.html
13 }文章源自略懂百科-http://wswcn.cn/96370.html
接着在struts.xml文件中编写映射关系,如例3-24所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-24 struts.xml文章源自略懂百科-http://wswcn.cn/96370.html
1 文章源自略懂百科-http://wswcn.cn/96370.html
2 文章源自略懂百科-http://wswcn.cn/96370.html
3 "-//Apache Software Foundation//DTD Struts文章源自略懂百科-http://wswcn.cn/96370.html
4 Configuration 2.5//EN"文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://struts.apache.org/dtds/struts-2.5.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7
8 value="false" />文章源自略懂百科-http://wswcn.cn/96370.html
9 文章源自略懂百科-http://wswcn.cn/96370.html
10
11 extends="struts-default">文章源自略懂百科-http://wswcn.cn/96370.html
12
13 class="com.qianfeng.struts.action.ErrorAction"文章源自略懂百科-http://wswcn.cn/96370.html
14 method="execute">文章源自略懂百科-http://wswcn.cn/96370.html
15 /error.jsp文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
接着编写前台页面src.jsp页面,如例3-25所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-25 src.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14 文章源自略懂百科-http://wswcn.cn/96370.html
15 跳转到error.jsp页面文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
19 文章源自略懂百科-http://wswcn.cn/96370.html
20 文章源自略懂百科-http://wswcn.cn/96370.html
最后编写error.jsp页面,如例3-26所示。文章源自略懂百科-http://wswcn.cn/96370.html
例3-26 error.jsp文章源自略懂百科-http://wswcn.cn/96370.html
1 <%@ page language="java" contentType="text/html; charset=UTF-8"文章源自略懂百科-http://wswcn.cn/96370.html
2 pageEncoding="UTF-8"%>文章源自略懂百科-http://wswcn.cn/96370.html
3 <%@taglib prefix="s" uri="/struts-tags"%>文章源自略懂百科-http://wswcn.cn/96370.html
4 文章源自略懂百科-http://wswcn.cn/96370.html
5 "http://www.w3.org/TR/html4/loose.dtd">文章源自略懂百科-http://wswcn.cn/96370.html
6 文章源自略懂百科-http://wswcn.cn/96370.html
7 文章源自略懂百科-http://wswcn.cn/96370.html
8 文章源自略懂百科-http://wswcn.cn/96370.html
9 Insert title here文章源自略懂百科-http://wswcn.cn/96370.html
10 文章源自略懂百科-http://wswcn.cn/96370.html
11 文章源自略懂百科-http://wswcn.cn/96370.html
12 文章源自略懂百科-http://wswcn.cn/96370.html
13 文章源自略懂百科-http://wswcn.cn/96370.html
14 文章源自略懂百科-http://wswcn.cn/96370.html
15 文章源自略懂百科-http://wswcn.cn/96370.html
16 文章源自略懂百科-http://wswcn.cn/96370.html
17 文章源自略懂百科-http://wswcn.cn/96370.html
18 文章源自略懂百科-http://wswcn.cn/96370.html
代码编写完成后,运行项目,在浏览器访问项目下的src.jsp,运行效果如图3.18所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.19 src.jsp文章源自略懂百科-http://wswcn.cn/96370.html
点击"跳转到error.jsp页面",页面直接跳转到error.jsp,运行效果如图3.19所示。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
图3.1 src.jsp文章源自略懂百科-http://wswcn.cn/96370.html
代码运行后,error.jsp页面显示了Action中设置的值,此处只需了解这三个标签的使用,需要人为地在Action中加入对应的信息时直接套用即可。文章源自略懂百科-http://wswcn.cn/96370.html
3.6OGNL表达式语言文章源自略懂百科-http://wswcn.cn/96370.html
3.6.1OGNL和值栈文章源自略懂百科-http://wswcn.cn/96370.html
3.6.2OGNL常用符号文章源自略懂百科-http://wswcn.cn/96370.html
3.6.3OGNL集合操作文章源自略懂百科-http://wswcn.cn/96370.html
3.7本章小结文章源自略懂百科-http://wswcn.cn/96370.html
本章介绍了Struts2标签库中的标签,主要包括流程控制标签、数据访问标签、表单标签和一些非表单标签,最后介绍了OGNL与值栈的相关知识,这里需要读者结合实践去理解,本章的内容不需要去背,反复练习自然能熟练掌握。文章源自略懂百科-http://wswcn.cn/96370.html
3.8习题文章源自略懂百科-http://wswcn.cn/96370.html
1.填空题文章源自略懂百科-http://wswcn.cn/96370.html
(1)标签主要用于生成HTML元素的标签,里面包含表单标签和非表单标签。文章源自略懂百科-http://wswcn.cn/96370.html
(2) 标签主要用于流程的控制,例如分支、循环等操作。文章源自略懂百科-http://wswcn.cn/96370.html
(3) 标签主要用于各种数据访问相关的功能以及Action的调用等。文章源自略懂百科-http://wswcn.cn/96370.html
(4) form标签用于定义。文章源自略懂百科-http://wswcn.cn/96370.html
(5) 标签用于输出错误信息到客户端。文章源自略懂百科-http://wswcn.cn/96370.html
2.选择题文章源自略懂百科-http://wswcn.cn/96370.html
(1)下列不是Struts2标签类别的是( )。文章源自略懂百科-http://wswcn.cn/96370.html
A.UI标签B.Ajax标签文章源自略懂百科-http://wswcn.cn/96370.html
C.jQuery标签D.非UI标签文章源自略懂百科-http://wswcn.cn/96370.html
(2)下列不属于流程控制标签的是( )。文章源自略懂百科-http://wswcn.cn/96370.html
A.treeB.iterator文章源自略懂百科-http://wswcn.cn/96370.html
C.ifD.subset文章源自略懂百科-http://wswcn.cn/96370.html
(3)下列不属于数据访问标签的是( )。文章源自略懂百科-http://wswcn.cn/96370.html
A.actionB.date文章源自略懂百科-http://wswcn.cn/96370.html
C.beanD.reset文章源自略懂百科-http://wswcn.cn/96370.html
(4)下列不属于表单标签的是( )。文章源自略懂百科-http://wswcn.cn/96370.html
A.radioB.select文章源自略懂百科-http://wswcn.cn/96370.html
C.propertyD.textarea文章源自略懂百科-http://wswcn.cn/96370.html
(5)下列不能在页面显示后台自定义信息的是( )。文章源自略懂百科-http://wswcn.cn/96370.html
A.fielderrorB.file文章源自略懂百科-http://wswcn.cn/96370.html
C.actionmessageD.actionerror文章源自略懂百科-http://wswcn.cn/96370.html
3.思考题文章源自略懂百科-http://wswcn.cn/96370.html
(1) 请简述Struts2标签库的分类。文章源自略懂百科-http://wswcn.cn/96370.html
(2) 请简述Struts2标签库如何导入。文章源自略懂百科-http://wswcn.cn/96370.html
(3) 请简述流程控制标签有哪些。文章源自略懂百科-http://wswcn.cn/96370.html
(4) 请简述数据访问标签有哪些。文章源自略懂百科-http://wswcn.cn/96370.html
(5) 请简述表单标签有哪些。文章源自略懂百科-http://wswcn.cn/96370.html
文章源自略懂百科-http://wswcn.cn/96370.html
评论