`
qingwengang
  • 浏览: 28842 次
  • 性别: 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代码
<html:form action="reg.do" method="post">  

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

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

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

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

密码   <html:password property="userpass"/> 
Property属性值的名字,就是对应ActionForm类里的属性名字
单选    性别   属性名字必须一致,否则视为多个单选组

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

<html:radio property="gender" value="0"/>男
<html:radio property="gender" value="1"/>女
复选    爱好  这里返回的是一个数组,一般为String[]

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

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

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

LabelValueBean lvbean=new LabelValueBean();
  lvbean.setLabel(""+i);
  lvbean.setValue(""+i);
  list.add(lvbean);
  年龄  (它比较特殊,必须用到集合对象才可以往标签里添加下拉数据,它是以LABLE与 VALUE存取)
在ActionForm里获取的也是它设置的VALUE值。

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

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

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

备注
<html:textarea property="memo" rows="5" cols="60"/>
隐藏
提交 直接请求发送
清除 清空表单的内容
取消 也是和请求一样会向Action请求,但是方式不一样可以用这个方法来判断是否是取消请求

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

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


Java代码
//判断是否点击了"取消"按钮   
        boolean flag=this.isCancelled(request);   
        if(flag){ //如果点击了"取消"按钮   
            return mapping.findForward("reg");   
//重定向到注册页(想用重定向必须在struts-config.xml中配置属性   
  //<forward name="reg" path="/reg.jsp" redirect="true" />   
        }  

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

<html:form action="upload.do" method="post" enctype="multipart/form-data"> 
用到的标签为[文件框]

Html代码
<html:file property="photo"/>  

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

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

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

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

Java代码
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 {
            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代码
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();   
        }  

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

<html:link href="index.jsp">回主页</html:link><br />
<html:link forward="index">回主页</html:link>
   在<form-beans>后添加以下配置
 

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

<global-forwards>
    <forward name="index" path="/index.jsp" />
  </global-forwards>
两个黄红代码中要配合一起才起使用

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

例:

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

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

相关推荐

    struts学习笔记

    ### Struts学习笔记详解 #### 一、Struts框架概览与编码设置 在学习Struts框架时,首要关注的是其编码配置。如代码片段所示,`struts.i18n.encoding`常量被设置为`UTF-8`,这确保了国际化(I18N)资源文件的正确...

    struts2学习笔记(完美总结)——转自OPEN经验库

    Struts2提供了一系列自定义的JSP标签,如`s:textfield`、`s:textarea`、`s:submit`等,这些标签简化了视图层的开发,增强了可读性和可维护性。它们与OGNL结合,能够方便地访问ValueStack中的数据。 **六、项目实践*...

    struts2 学习重点笔记

    ### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...

    Struts2学习笔记

    根据给定的文件信息,以下是对Struts2学习笔记中涉及的关键知识点的详细解析: ### Struts2框架概览 #### MVC模式的理解与演进 Struts2是基于MVC(Model-View-Controller)模式设计的一种Java Web开发框架。在MVC...

    struts2学习笔记总结

    本笔记将全面总结Struts2的核心概念、主要功能以及实际开发中的应用。 一、Struts2概述 Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并解决了其存在的问题,如性能和灵活性。Struts2的核心是...

    struts2学习笔记.doc

    ### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...

    Struts 学习笔记 Struts 中扩展JfreeChart 笔记

    Struts是Apache软件基金会下的一个开源框架,主要应用于Java Web应用程序的开发,它提供了一种组织应用程序代码的方式,使得开发者可以更有效地构建基于MVC(Model-View-Controller)架构的Web应用。JfreeChart则是...

    Struts标签学习笔记.doc

    在Struts中,一系列的标签库帮助开发者创建更加结构化的、易于维护的代码,减少了直接在JSP页面中编写Java脚本的需求。 首先,`&lt;html:html&gt;`标签用于在网页的开头生成`&lt;html&gt;`元素,并可以通过`lang`属性来设置页面...

    struts学习笔记(四)

    本篇“Struts学习笔记(四)”着重于深入理解Struts的工作原理和实际应用,通过阅读提供的Struts.pdf文档,我们可以获取以下几个关键知识点: 1. **MVC模式**:在Struts框架中,MVC模式被用于分离业务逻辑、数据模型...

    struts学习笔记(4)

    ### Struts 学习笔记(4):深入理解 OGNL 表达式与 Struts2 标签 #### 一、OGNL 表达式简介 **OGNL**(Object Graph Navigation Language)是一种功能强大的表达式语言,在 Struts2 框架中扮演着非常重要的角色。...

    j2ee平台框架Struts学习笔记

    Struts框架提供了一系列的标签库,如Struts Tiles和Struts JSTL,帮助开发者创建动态且可复用的页面组件。 4. **Controller(控制器)** 控制器是Struts框架的核心部分,它接收HTTP请求,根据配置文件解析请求,...

    Struts1及14. Struts2学习笔记

    在Struts2的学习笔记中,`note.jsp`可能同样用于显示和编辑笔记,但使用的是Struts2的标签库,如`&lt;s:property&gt;`来显示模型对象的属性,以及`s:form`标签创建表单。Struts2允许直接在JSP页面中使用Action的属性,无需...

    struts2标签学习笔记

    Struts2是一个强大的MVC框架,它提供了丰富的标签库,使得开发者可以更加便捷地构建视图层。在本文中,我们将深入探讨Struts2的标签库,并特别关注单选框和多选框的使用。 首先,引入Struts2的标签库至关重要。在...

    struts 2 学习笔记

    在Struts2中,学习笔记通常会涵盖以下几个关键概念: 1. **源代码查看和Javadoc**:开发者可以通过查看源代码来理解Struts2的工作原理,而Javadoc则提供了API文档,帮助理解类和方法的功能。 2. **包(Package)和...

    struts2 学习笔记 实战

    本文将深入探讨Struts2的核心概念,包括Namespace、标签、Action以及它们在实际开发中的应用。 一、Namespace Namespace在Struts2中主要用于组织和隔离Action,它决定了Action的访问路径。默认情况下,Namespace为...

    Struts1学习笔记总结.pdf

    下面是对Struts1学习笔记的总结,涵盖了Struts1的基本概念、工作流程、标签、国际化等方面的知识点。 Struts1和Servlet的关系 Struts1是基于Servlet的Web应用框架,它可以和Servlet一起使用。Servlet是一个基于...

    struts2详细学习笔记

    总的来说,学习Struts2需要理解这些基本配置元素的含义和用法,以及如何通过常量配置来调整框架的行为。此外,还需了解Action、Interceptor(拦截器)的概念,以及结果类型、异常处理、国际化支持等内容。熟练掌握...

Global site tag (gtag.js) - Google Analytics