<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>来导入相应的配置文件,使用别名prefix即可。
1.html类
1. <html:form action="reg.do" method="post">
1. 用户名 <html:text property="username"/>
1. 密码 <html:password property="userpass"/>
Property属性值的名字,就是对应ActionForm类里的属性名字
单选 性别 属性名字必须一致,否则视为多个单选组
1. <html:radio property="gender" value="0"/>男
2. <html:radio property="gender" value="1"/>女
复选 爱好 这里返回的是一个数组,一般为String[]
Html代码
1. <html:multibox property="hobby" value="看书"/>看书
2. <html:multibox property="hobby" value="睡觉"/>睡觉
3. <html:multibox property="hobby" value="编程"/>编程
<html:multibox property="hobby" value="看书"/>看书
<html:multibox property="hobby" value="睡觉"/>睡觉
<html:multibox property="hobby" value="编程"/>编程
下拉
Java代码
1. LabelValueBean lvbean=new LabelValueBean();
2. lvbean.setLabel(""+i);
3. lvbean.setValue(""+i);
4. list.add(lvbean);
LabelValueBean lvbean=new LabelValueBean();
lvbean.setLabel(""+i);
lvbean.setValue(""+i);
list.add(lvbean);
年龄 (它比较特殊,必须用到集合对象才可以往标签里添加下拉数据,它是以LABLE与 VALUE存取)
在ActionForm里获取的也是它设置的VALUE值。
Html代码
1. <html:select property="age">
2. <html:options collection="list" labelProperty="label" property="value"/>
3. </html:select>
<html:select property="age">
<html:options collection="list" labelProperty="label" property="value"/>
</html:select>
文本区
Html代码
1. 备注
2. <html:textarea property="memo" rows="5" cols="60"/>
备注
<html:textarea property="memo" rows="5" cols="60"/>
隐藏
提交 直接请求发送
清除 清空表单的内容
取消 也是和请求一样会向Action请求,但是方式不一样可以用这个方法来判断是否是取消请求
Html代码
1. <html:submit>提交</html:submit> or <html:submit value=”提交”/>
2. <html:reset>清除</html:reset>
3. <html:cancel>取消</html:cancel>
<html:submit>提交</html:submit> or <html:submit value=”提交”/>
<html:reset>清除</html:reset>
<html:cancel>取消</html:cancel>
Java代码
1. //判断是否点击了"取消"按钮
2. boolean flag=this.isCancelled(request);
3. if(flag){ //如果点击了"取消"按钮
4. return mapping.findForward("reg");
5. //重定向到注册页(想用重定向必须在struts-config.xml中配置属性
6. //<forward name="reg" path="/reg.jsp" redirect="true" />
7. }
//判断是否点击了"取消"按钮
boolean flag=this.isCancelled(request);
if(flag){ //如果点击了"取消"按钮
return mapping.findForward("reg");
//重定向到注册页(想用重定向必须在struts-config.xml中配置属性
//<forward name="reg" path="/reg.jsp" redirect="true" />
}
第二个知识点为:Struts中的文件上传
记得以前Servlet时文件上传也是要在Form中指定请求数据类型吧,这里也一样(指定为二进制数据)
Html代码
1. <html:form action="upload.do" method="post" enctype="multipart/form-data">
<html:form action="upload.do" method="post" enctype="multipart/form-data">
用到的标签为[文件框]
Html代码
1. <html:file property="photo"/>
<html:file property="photo"/>
它对应的ActionForm的类型为org.apache.struts.upload.FormFile;
另一点注意的是,如果该表单里有其他的文本框要提交的话,需要注意的是,它也是以二进制数据提交,所以在ActionForm里无法直接通过请求处理配置转换成中文,必须使用自定义方法强制转换,并且要注意,它转发给页面时的一般属性也会丢失。如页面一有一属性与一文件上传,提交后直接转发到另一页面并显示属性的值报错
转换中文方法为:
Java代码
1. public String changeGbk(String str){
2. String newstr = null;
3. try {
4. newstr = new String(str.getBytes("ISO8859-1"), "gb2312");
5. } catch (UnsupportedEncodingException ex) {
6. }
7. return newstr;
8. }
public String changeGbk(String str){
String newstr = null;
try {
newstr = new String(str.getBytes("ISO8859-1"), "gb2312");
} catch (UnsupportedEncodingException ex) {
}
return newstr;
}
接下来再看Action是如何处理文件上传的,它有两种方法处理上传文件并保存到指定目录。
方法一:
输入流
Java代码
1. UploadActionForm uploadActionForm = (UploadActionForm) form;
2. //接收内容并且存盘(web\photos)
3. FormFile photo=uploadActionForm.getPhoto();//获得请求文件的内容FormFile
4. try {
5. InputStream in=photo.getInputStream();//通过上传文件对象获得输入流
6. String filename=photo.getFileName();//常用方法,获得上传文件的文件名
7. String path=servlet.getServletContext().getRealPath("photos");
8. //通过servlet获得服务器上下文对象获取指定目录的绝对路径
9. 如:d:\regprj\Web\photos
10. String newfilename=path + File.separator + filename;
11. //拼装要创建的文件全路径及文件名File.separator方法会根据系统自动选择’/’or’\’
12. 如:d:\regprj\Web\photos\updatefile.jpg
13. FileOutputStream out=new FileOutputStream(newfilename);//把路径给文件输入流对象
14.
15. byte[] array1=new byte[1024];//设置缓冲大小,单位:字节
16. int len;
17. while( (len=in.read(array1))>0 ){
18. out.write(array1,0,len);
19. }
20. out.flush();
21. out.close();
22. in.close();
23. photo.destroy();//销毁文件;
24. } catch (Exception ex) {
25. ex.printStackTrace();
26. }
UploadActionForm uploadActionForm = (UploadActionForm) form;
//接收内容并且存盘(web\photos)
FormFile photo=uploadActionForm.getPhoto();//获得请求文件的内容FormFile
try {
InputStream in=photo.getInputStream();//通过上传文件对象获得输入流
String filename=photo.getFileName();//常用方法,获得上传文件的文件名
String path=servlet.getServletContext().getRealPath("photos");
//通过servlet获得服务器上下文对象获取指定目录的绝对路径
如:d:\regprj\Web\photos
String newfilename=path + File.separator + filename;
//拼装要创建的文件全路径及文件名File.separator方法会根据系统自动选择’/’or’\’
如:d:\regprj\Web\photos\updatefile.jpg
FileOutputStream out=new FileOutputStream(newfilename);//把路径给文件输入流对象
byte[] array1=new byte[1024];//设置缓冲大小,单位:字节
int len;
while( (len=in.read(array1))>0 ){
out.write(array1,0,len);
}
out.flush();
out.close();
in.close();
photo.destroy();//销毁文件;
} catch (Exception ex) {
ex.printStackTrace();
}
方法二:
Java代码
1. UploadActionForm uploadActionForm = (UploadActionForm) form;
2. //接收内容并且存盘(web\photos)
3. FormFile photo=uploadActionForm.getPhoto();//获得请求文件的内容FormFile
4. try {
5. String filename=photo.getFileName();
6. String path=servlet.getServletContext().getRealPath("photos");
7. String newfilename=path + File.separator + filename;
8. FileOutputStream out=new FileOutputStream(newfilename);
9. out.write(photo.getFileData());
10. out.flush();
11. out.close();
12. photo.destroy();//销毁文件;
13. } catch (Exception ex) {
14. ex.printStackTrace();
15. }
UploadActionForm uploadActionForm = (UploadActionForm) form;
//接收内容并且存盘(web\photos)
FormFile photo=uploadActionForm.getPhoto();//获得请求文件的内容FormFile
try {
String filename=photo.getFileName();
String path=servlet.getServletContext().getRealPath("photos");
String newfilename=path + File.separator + filename;
FileOutputStream out=new FileOutputStream(newfilename);
out.write(photo.getFileData());
out.flush();
out.close();
photo.destroy();//销毁文件;
} catch (Exception ex) {
ex.printStackTrace();
}
区别就是两个方法使用的读取源二进制文件的方式不同。以上为黄色代码部份。
第三个知识点为<h1>测试超链接及图像标记</h1>
Html代码
1. <html:link href="index.jsp">回主页</html:link><br />
2. <html:link forward="index">回主页</html:link>
<html:link href="index.jsp">回主页</html:link><br />
<html:link forward="index">回主页</html:link>
在<form-beans>后添加以下配置
Xml代码
1. <global-forwards>
2. <forward name="index" path="/index.jsp" />
3. </global-forwards>
<global-forwards>
<forward name="index" path="/index.jsp" />
</global-forwards>
两个黄红代码中要配合一起才起使用
在一般的表单提交后,存放范围已经需要配置如request session,所以当请求交给了Action时,转发到JSP页面的时候,request所附带了请求的数据,可以直接用<bean: write>标签直接读取。但对象二进制数据的请求就不可以了。。
例:
Html代码
1. <bean:write scope="request" name="regActionForm" property="username"/>
<bean:write scope="request" name="regActionForm" property="username"/>
Scope为请求数据存储在哪个范围,name就是请求的表单名,如:<form-bean name="regActionForm"。。
Property就是指请求时表单的属性名啦
1.html类
1. <html:form action="reg.do" method="post">
1. 用户名 <html:text property="username"/>
1. 密码 <html:password property="userpass"/>
Property属性值的名字,就是对应ActionForm类里的属性名字
单选 性别 属性名字必须一致,否则视为多个单选组
1. <html:radio property="gender" value="0"/>男
2. <html:radio property="gender" value="1"/>女
复选 爱好 这里返回的是一个数组,一般为String[]
Html代码
1. <html:multibox property="hobby" value="看书"/>看书
2. <html:multibox property="hobby" value="睡觉"/>睡觉
3. <html:multibox property="hobby" value="编程"/>编程
<html:multibox property="hobby" value="看书"/>看书
<html:multibox property="hobby" value="睡觉"/>睡觉
<html:multibox property="hobby" value="编程"/>编程
下拉
Java代码
1. LabelValueBean lvbean=new LabelValueBean();
2. lvbean.setLabel(""+i);
3. lvbean.setValue(""+i);
4. list.add(lvbean);
LabelValueBean lvbean=new LabelValueBean();
lvbean.setLabel(""+i);
lvbean.setValue(""+i);
list.add(lvbean);
年龄 (它比较特殊,必须用到集合对象才可以往标签里添加下拉数据,它是以LABLE与 VALUE存取)
在ActionForm里获取的也是它设置的VALUE值。
Html代码
1. <html:select property="age">
2. <html:options collection="list" labelProperty="label" property="value"/>
3. </html:select>
<html:select property="age">
<html:options collection="list" labelProperty="label" property="value"/>
</html:select>
文本区
Html代码
1. 备注
2. <html:textarea property="memo" rows="5" cols="60"/>
备注
<html:textarea property="memo" rows="5" cols="60"/>
隐藏
提交 直接请求发送
清除 清空表单的内容
取消 也是和请求一样会向Action请求,但是方式不一样可以用这个方法来判断是否是取消请求
Html代码
1. <html:submit>提交</html:submit> or <html:submit value=”提交”/>
2. <html:reset>清除</html:reset>
3. <html:cancel>取消</html:cancel>
<html:submit>提交</html:submit> or <html:submit value=”提交”/>
<html:reset>清除</html:reset>
<html:cancel>取消</html:cancel>
Java代码
1. //判断是否点击了"取消"按钮
2. boolean flag=this.isCancelled(request);
3. if(flag){ //如果点击了"取消"按钮
4. return mapping.findForward("reg");
5. //重定向到注册页(想用重定向必须在struts-config.xml中配置属性
6. //<forward name="reg" path="/reg.jsp" redirect="true" />
7. }
//判断是否点击了"取消"按钮
boolean flag=this.isCancelled(request);
if(flag){ //如果点击了"取消"按钮
return mapping.findForward("reg");
//重定向到注册页(想用重定向必须在struts-config.xml中配置属性
//<forward name="reg" path="/reg.jsp" redirect="true" />
}
第二个知识点为:Struts中的文件上传
记得以前Servlet时文件上传也是要在Form中指定请求数据类型吧,这里也一样(指定为二进制数据)
Html代码
1. <html:form action="upload.do" method="post" enctype="multipart/form-data">
<html:form action="upload.do" method="post" enctype="multipart/form-data">
用到的标签为[文件框]
Html代码
1. <html:file property="photo"/>
<html:file property="photo"/>
它对应的ActionForm的类型为org.apache.struts.upload.FormFile;
另一点注意的是,如果该表单里有其他的文本框要提交的话,需要注意的是,它也是以二进制数据提交,所以在ActionForm里无法直接通过请求处理配置转换成中文,必须使用自定义方法强制转换,并且要注意,它转发给页面时的一般属性也会丢失。如页面一有一属性与一文件上传,提交后直接转发到另一页面并显示属性的值报错
转换中文方法为:
Java代码
1. public String changeGbk(String str){
2. String newstr = null;
3. try {
4. newstr = new String(str.getBytes("ISO8859-1"), "gb2312");
5. } catch (UnsupportedEncodingException ex) {
6. }
7. return newstr;
8. }
public String changeGbk(String str){
String newstr = null;
try {
newstr = new String(str.getBytes("ISO8859-1"), "gb2312");
} catch (UnsupportedEncodingException ex) {
}
return newstr;
}
接下来再看Action是如何处理文件上传的,它有两种方法处理上传文件并保存到指定目录。
方法一:
输入流
Java代码
1. UploadActionForm uploadActionForm = (UploadActionForm) form;
2. //接收内容并且存盘(web\photos)
3. FormFile photo=uploadActionForm.getPhoto();//获得请求文件的内容FormFile
4. try {
5. InputStream in=photo.getInputStream();//通过上传文件对象获得输入流
6. String filename=photo.getFileName();//常用方法,获得上传文件的文件名
7. String path=servlet.getServletContext().getRealPath("photos");
8. //通过servlet获得服务器上下文对象获取指定目录的绝对路径
9. 如:d:\regprj\Web\photos
10. String newfilename=path + File.separator + filename;
11. //拼装要创建的文件全路径及文件名File.separator方法会根据系统自动选择’/’or’\’
12. 如:d:\regprj\Web\photos\updatefile.jpg
13. FileOutputStream out=new FileOutputStream(newfilename);//把路径给文件输入流对象
14.
15. byte[] array1=new byte[1024];//设置缓冲大小,单位:字节
16. int len;
17. while( (len=in.read(array1))>0 ){
18. out.write(array1,0,len);
19. }
20. out.flush();
21. out.close();
22. in.close();
23. photo.destroy();//销毁文件;
24. } catch (Exception ex) {
25. ex.printStackTrace();
26. }
UploadActionForm uploadActionForm = (UploadActionForm) form;
//接收内容并且存盘(web\photos)
FormFile photo=uploadActionForm.getPhoto();//获得请求文件的内容FormFile
try {
InputStream in=photo.getInputStream();//通过上传文件对象获得输入流
String filename=photo.getFileName();//常用方法,获得上传文件的文件名
String path=servlet.getServletContext().getRealPath("photos");
//通过servlet获得服务器上下文对象获取指定目录的绝对路径
如:d:\regprj\Web\photos
String newfilename=path + File.separator + filename;
//拼装要创建的文件全路径及文件名File.separator方法会根据系统自动选择’/’or’\’
如:d:\regprj\Web\photos\updatefile.jpg
FileOutputStream out=new FileOutputStream(newfilename);//把路径给文件输入流对象
byte[] array1=new byte[1024];//设置缓冲大小,单位:字节
int len;
while( (len=in.read(array1))>0 ){
out.write(array1,0,len);
}
out.flush();
out.close();
in.close();
photo.destroy();//销毁文件;
} catch (Exception ex) {
ex.printStackTrace();
}
方法二:
Java代码
1. UploadActionForm uploadActionForm = (UploadActionForm) form;
2. //接收内容并且存盘(web\photos)
3. FormFile photo=uploadActionForm.getPhoto();//获得请求文件的内容FormFile
4. try {
5. String filename=photo.getFileName();
6. String path=servlet.getServletContext().getRealPath("photos");
7. String newfilename=path + File.separator + filename;
8. FileOutputStream out=new FileOutputStream(newfilename);
9. out.write(photo.getFileData());
10. out.flush();
11. out.close();
12. photo.destroy();//销毁文件;
13. } catch (Exception ex) {
14. ex.printStackTrace();
15. }
UploadActionForm uploadActionForm = (UploadActionForm) form;
//接收内容并且存盘(web\photos)
FormFile photo=uploadActionForm.getPhoto();//获得请求文件的内容FormFile
try {
String filename=photo.getFileName();
String path=servlet.getServletContext().getRealPath("photos");
String newfilename=path + File.separator + filename;
FileOutputStream out=new FileOutputStream(newfilename);
out.write(photo.getFileData());
out.flush();
out.close();
photo.destroy();//销毁文件;
} catch (Exception ex) {
ex.printStackTrace();
}
区别就是两个方法使用的读取源二进制文件的方式不同。以上为黄色代码部份。
第三个知识点为<h1>测试超链接及图像标记</h1>
Html代码
1. <html:link href="index.jsp">回主页</html:link><br />
2. <html:link forward="index">回主页</html:link>
<html:link href="index.jsp">回主页</html:link><br />
<html:link forward="index">回主页</html:link>
在<form-beans>后添加以下配置
Xml代码
1. <global-forwards>
2. <forward name="index" path="/index.jsp" />
3. </global-forwards>
<global-forwards>
<forward name="index" path="/index.jsp" />
</global-forwards>
两个黄红代码中要配合一起才起使用
在一般的表单提交后,存放范围已经需要配置如request session,所以当请求交给了Action时,转发到JSP页面的时候,request所附带了请求的数据,可以直接用<bean: write>标签直接读取。但对象二进制数据的请求就不可以了。。
例:
Html代码
1. <bean:write scope="request" name="regActionForm" property="username"/>
<bean:write scope="request" name="regActionForm" property="username"/>
Scope为请求数据存储在哪个范围,name就是请求的表单名,如:<form-bean name="regActionForm"。。
Property就是指请求时表单的属性名啦
相关推荐
Struts1 标签库详解 Struts1 标签库是 Apache Jakarta 的一个著名的开源项目,目标是为构建基于 Java 的 web 应用程序提供一个框架。Struts 提供了非常多的标签,依据功能和使用习惯的不同被分到了五个标签库中:...
Struts1标签库是Java Web开发中的一种工具,主要用于简化基于MVC模式的Struts框架下的JSP页面开发。尽管目前Struts1已逐渐被更新的版本如Struts2取代,但了解其标签库仍然有助于理解Web应用的历史发展和基础概念。 ...
Struts1标签库是其核心特性之一,它提供了一系列预定义的JSP标签,使得开发者可以更加方便地在视图层构建动态页面,减少对Java脚本的依赖,提高代码的可读性和可维护性。 1. **Struts1标签库概述** Struts1标签库...
在深入探讨Struts1框架中的标签库之前,我们先简要了解一下Struts1框架本身。Struts1是基于MVC(Model-View-Controller)设计模式的Java Web应用框架,它极大地方便了Web应用程序的开发,特别是对于大型、复杂的项目...
Struts1是一个经典的Java Web开发框架,其核心之一就是丰富的标签库,它简化了开发者在JSP页面上的工作。在本文中,我们将深入探讨Struts1的四个主要标签库:bean、logic、html和tiles,并重点讲解每个库中的关键...
5. Nested标签库:增强了其他Struts标签的嵌套能力,允许更复杂的数据结构的表示。 在使用Struts1标签时,有一些公共特性需要注意,如`styleId`用于指定自定义标签的脚本变量名,`name`和`scope`分别用于查找和定义...
在使用Struts1标签时,应避免使用scriptlet,尽管它们的表达式仍然可以在Struts标签中使用。确保表达式完整,如正确的`<html:link>`标签写法。 Struts1的标签设计旨在提高可读性和可维护性,减少JSP页面中的Java...
Nested库增强了其他Struts标签的嵌套功能,使得在复杂结构的数据模型中使用标签更加方便。例如,可以嵌套`<nested:property>`来处理多层属性的访问。 在使用Struts1标签时,有几个共同的特性需要注意,比如`...
Struts1标签手册是关于Apache Struts框架中用于构建Web应用程序的标签库的详细文档,主要包括五类标签库:HTML, Nested, Logic, Bean, 和 Titles。这些标签库提供了丰富的功能,简化了开发者的工作,使得在Java环境...
Struts1是一个经典的Java Web框架,它通过提供一系列的标签库简化了JSP页面的开发,使得业务逻辑和展示逻辑分离。在这个实例中,我们主要关注Struts1的标签应用,以及如何在JSP页面中使用这些标签。 首先,我们看到...
1. **Struts标签库**: - **HTML标签**:这些标签主要用于替换基本的HTML元素,如`<html:html>`、`<html:base>`、`<html:img>`、`<html:link>`等。例如,`<html:img>`标签可以用来插入图片,并且能够传递参数,如`...
Struts1标签库是Java Web开发中的一个重要组成部分,主要用于构建MVC(模型-视图-控制器)架构的应用程序。在Struts1框架中,标签库极大地简化了视图层的开发,使得开发者能够更专注于业务逻辑,而不是繁琐的HTML...
- JSP页面,展示了如何使用Struts1标签库来构建用户界面。 - 配置文件,如struts-config.xml,展示了如何配置Struts1框架。 - 相关的资源文件,如图片、样式表或JavaScript文件,它们与用户界面交互有关。 - 测试...
此外,作者强调学习Struts标签的最佳方法是通过示例,因为它们在实践中具有广泛的用途和强大的功能。 总之,Struts1标签库提供了丰富的功能,帮助开发者更高效地编写JSP页面,降低了视图层与业务逻辑的耦合度。了解...
1. **JSP和Java代码分离**:通过将原本需要在JSP页面中编写的Java代码转换为Struts标签的形式,使得页面更加简洁且易于维护。这不仅提升了开发效率,还使得页面逻辑更加清晰明了。 2. **与框架配置交互**:Struts...
Struts1标签库是Java Web开发中非常重要的一个组件,它是Apache Struts框架的一部分,用于简化JSP页面的编写,提高代码的可读性和可维护性。以下将详细阐述Struts1标签库中的各个标签及其用途。 1. `bean:cookie`:...
- 专为增强对其他Struts标签的嵌套使用而设计,使得在复杂对象模型中处理表单输入更加方便。 举例: ```jsp 登录" /> 取消" /> ``` 在Struts配置文件(struts-config.xml)中应有对应的配置: ```xml ...
### JSP Struts1 标签实例详解 #### 一、概述 Struts1 是一个基于 Java Servlet/JavaServer Pages 技术的企业级 Web 应用框架,它使用 MVC(Model-View-Controller)设计模式来组织应用。Struts1 的标签库提供了...