`
folie2006
  • 浏览: 33873 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts学习笔记(标签)

阅读更多

Struts标记分为(5组)
二期的时候JSP里学习过标准标签库与自定义标签,它的原理是一个JAVA类代码实现的,通过页面的
<%@ taglib  uri="/WEB-INF/struts-html.tld" prefix="html" %>来导入相应的配置文件,使用别名prefix即可调用标签库设定的标记
Html  struts-html.tld
Bean   struts-bean.tld
Logic   struts-logic.tld

Tiles   struts-tiles.tld
Nested  struts-nested.tld
红字为Struts中重要掌握的标签内容。一般JSP页面都导入红字相应的标签

接下来通过一个实例来说明HTML标记的使用(struts-HTML标签库)
表单 

<html:form action="reg.do" method="post"> 

 
文本框 

用户名 <html:text  property="username"/> 

 
密码框  

密码   <html:password property="userpass"/>

 
Property属性值的名字,就是对应ActionForm类里的属性名字
单选    性别   属性名字必须一致,否则视为多个单选组

<html:radio property="gender" value="0"/>男 
<html:radio property="gender" value="1"/>女 

 复选    爱好  这里返回的是一个数组,一般为String[]

<html:multibox property="hobby" value="看书"/>看书 
<html:multibox property="hobby" value="睡觉"/>睡觉 
<html:multibox property="hobby" value="编程"/>编程 

下拉   

 LabelValueBean lvbean=new LabelValueBean(); 
  lvbean.setLabel(""+i); 
  lvbean.setValue(""+i); 
  list.add(lvbean); 

  年龄  (它比较特殊,必须用到集合对象才可以往标签里添加下拉数据,它是以LABLE与 VALUE存取)
在ActionForm里获取的也是它设置的VALUE值。 

<html:select property="age"> 
<html:options collection="list" labelProperty="label" property="value"/> 
</html:select>

 
文本区 

备注 
<html:textarea property="memo" rows="5" cols="60"/> 

 隐藏
提交 直接请求发送
清除 清空表单的内容
取消 也是和请求一样会向Action请求,但是方式不一样可以用这个方法来判断是否是取消请求

<html:submit>提交</html:submit>  or  <html:submit value=”提交”/> 
<html:reset>清除</html:reset> 
<html:cancel>取消</html:cancel> 

 

//判断是否点击了"取消"按钮 
        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:form action="upload.do" method="post" enctype="multipart/form-data"> 

 
用到的标签为[文件框]

<html:file property="photo"/> 

 它对应的ActionForm的类型为org.apache.struts.upload.FormFile;
另一点注意的是,如果该表单里有其他的文本框要提交的话,需要注意的是,它也是以二进制数据提交,所以在ActionForm里无法直接通过请求处理配置转换成中文,必须使用自定义方法强制转换,并且要注意,它转发给页面时的一般属性也会丢失。如页面一有一属性与一文件上传,提交后直接转发到另一页面并显示属性的值报错
转换中文方法为: 
   

public String changeGbk(String str){ 
        String newstr = null; 
        try { 
            newstr = new String(str.getBytes("ISO8859-1"), "gb2312"); 
        } catch (UnsupportedEncodingException ex) { 
        } 
        return newstr; 
} 

 
接下来再看Action是如何处理文件上传的,它有两种方法处理上传文件并保存到指定目录。
方法一:
输入流

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(); 
        } 

 
方法二:

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:link href="index.jsp">回主页</html:link><br /> 
<html:link forward="index">回主页</html:link> 

   在<form-beans>后添加以下配置 
 

<global-forwards> 
    <forward name="index" path="/index.jsp" /> 
  </global-forwards> 

 两个黄红代码中要配合一起才起使用

在一般的表单提交后,存放范围已经需要配置如request session,所以当请求交给了Action时,转发到JSP页面的时候,request所附带了请求的数据,可以直接用<bean:write>标签直接读取。但对象二进制数据的请求就不可以了。。

例:

<bean:write scope="request" name="regActionForm" property="username"/> 

 Scope为请求数据存储在哪个范围,name就是请求的表单名,如:<form-bean name="regActionForm"。。
Property就是指请求时表单的属性名啦。(想想?数组怎么读的/比如爱好--多选。)

 

分享到:
评论
3 楼 speedy 2008-10-18  
不太建议使用UI表单,对性能的影响比较大,建议使用HTML自己的标签。
2 楼 stworthy 2008-10-18  
使用JSTL就已经不错了。
1 楼 chq32 2008-10-17  
我一般不太建议表单用标签,表单还是原生的HTML好。

相关推荐

    Struts标签学习笔记.doc

    Struts标签学习笔记.docStruts标签学习笔记.doc

    struts2 学习笔记 实战

    三、 Namespace ...四、 标签 是用来解决重名的问题,例如当系统的前台和后台都有一个action名叫hello,这时就需要用package来区分。 前台后台 struts2中的package与java的package是相同的作用的。

    struts框架与标签.doc

    struts框架与标签.doc,很好的学习笔记,WORD文档

    struts学习笔记(4)

    15.OGNL表达式 对象图导航语言 Object Graph Navigation Language 是一种比较强大的表达式语言(比EL表达式的功能...1)ognl表达式只能写在Struts2标签的里面(任何一个struts2标签都行) EL表达式可以写在页面的任何位置

    Struts2 学习笔记

    Struts2标签目录 28 一、 property标签 28 二、 set标签 29 三、 bean标签 29 四、 标签-少使用 29 五、 If elseif else 30 六、 Iterator标签 31 七、 Theme 31 05设计约定(编码规定) 32 06 项目开发顺序 32 07 ...

    struts2标签学习笔记

    struts2的初学者,内容不多,望各位高手切勿笑话小弟。

    Struts2.1学习笔记

    基于 Struts2.1.8 包括Struts2的基本应用、文件上传、拦截器、输入校验、国际化、OGNL表达式、Struts2标签等内容。

    struts2学习笔记,总结了很多学习的经验

    struts2学习笔记,总结了很多学习的经验,标签的使用,action的使用。struts2.0 和 struts2.1 的区别

    struts2学习笔记

    描述struts2常用的标签,基本的配置.

    Struts1.3 备忘笔记

    Struts 1.3 备忘笔记 【资源特点】 1、以项目形式组织,包含所有的源代码 2、内含详细的注释说明 3、知识点较全面 【内容目录】 01 Struts_01HandworkApply : 手工配置Struct应用程序,演示用户提交数据后服务器的...

    struts学习总结.zip

    欢迎访问我的博客:http://blog.csdn.net/chenpy/&lt;br&gt; &lt;br&gt;struts学习总结说明 本人精心搜集了有关struts学习的资料,有我以前学习时候写的笔记,有学习用的代码还有 其他的好资料,详细列表如下: 1...

    Struts 2.1.8_学习源码

    Struts 2.1.8 学习源码内容 Struts2_01FirstDemo : 跑通第一个Struts2的实例 Struts2_02CURD : 关于Struts2的增、删、改和查 实际业务中数据来自数据库,从DAO层查询,本实例使用静态资源的方式模拟, 主要是关于...

    Java/JavaEE 学习笔记

    Struts学习笔记...............263 Struts2.0..263 第一章 MVC Model.........................263 第二章 Struts Basic264 第三章 Action,Result & Struts2 Tag Library......................267 第四章 Data ...

    J2EE学习笔记(J2ee初学者必备手册)

    Struts学习笔记...............263 Struts2.0..263 第一章 MVC Model.........................263 第二章 Struts Basic264 第三章 Action,Result & Struts2 Tag Library......................267 第四章 Data ...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    strut2学习笔记(自己整理适合新手入门)

    整理下常用的struts2的一些基本应用,包括基本的搭建,配置,标签的使用

    FreeMark学习笔记

    使用FTL标签时, 应该有正确的嵌套,而不是交叉使用,这和XML标签的用法完全一样.如果全用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息.FreeMarker会忽略FTL标签中的空白字符.值得注意的是, /&gt; 和...

    java开发常用的中文API集合包

    Freemaker_入门+深入+开发指南+学习笔记.doc FreeMarker标签中文文档.pdf FreeMarker教程.pdf ibatis开发指南(中文版).pdf java web标签大全.CHM jBPM_4.4_开发指南.pdf jquery1.7 中文手册.chm lucene3.0-api.CHM...

    spring学习笔记

    目录 1.1 Spring 框架学习路线:...........................................................................................................................4 1.2 Spring 框架的概述:...........................

    人脸识别研究综述

    二、javaEE框架学习笔记 2、&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;的涵义: @taglib表明引用标签。类似java中的import语句prefix="s" 引用的名称在页面可以使用,就像java中生成的一个对象名,以后调用的时候...

Global site tag (gtag.js) - Google Analytics