服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

开发框架--关于struts标签之浅入深出

 action和jsp的开发其实就是对struts标签的运用.掌握标签的熟练程度决定了开发效率.初学者往往对某个数据表示或数据获取,束手无策.一个简单的问题浪费一两天时间也就不足为怪了.导致整个开发进度延后.外面的struts书籍介绍标签和数据传输原理都比较简单,下面我对标签技术和数据传输原理,进行全方位多角度的剖析.希望对各位有所帮助.以此为模版,将大大提高开发效率.以sample为机能名称.
①画面上有一text框,显现内容为某一数据表中的某一字段.那我们该如何设置和得到此数据呢?
samplejsp:
  < html:text name = "sampleform" property="name" />
sampleform.java: // form文件名必须和jsp中标签的name对应
  string name; // 必须和jsp中该项目的property一样
  public string getname() { return name; }
  public void setname(string name) { this.name = name;}
变量和方法名,不可以顺意.变量abcd,那方法名就是setabcd和getabcd.注意大小写.
jsp中的项目必然全部在form里面有所表示,当然反过来,form里的项目在jsp中不一定全部表示(可能有辅助动作的对象或验证)
sampleaction.java
  public actionforward start(actionmapping mapping,
  actionform argform, httpservletrequest req, httpservletresponse res)
  throws exception {
        sampleform form = (sampleform) argform;
        string name = ………………other codes for get name from db
        // set name
        form.setname(name);
        // now text will show the name
  }
public actionforward save(actionmapping mapping,
  actionform argform, httpservletrequest req, httpservletresponse res)
        throws exception {
        sampleform form = (sampleform) argform;
        // get name
        string name = form.getname();
        ………………other codes for save name
  }
jsp和form对应,action操作form,form其实起了传输数据的作用.这就是struts标签的核心原理.得到数据和设置数据没问题了,剩下的工作也就得心应手了.

②再看一个处理标签的方法.画面上是一个明细一览表示(表).表示的是数据表user的相关数据(id,name).
samplejsp:
  < logic:present name="sampleform" property="userlist" >
    < logic:iterate id="user" name=" sampleform " property="userlist">
      < tr>
        < td>< bean:write name="user" property="id" />< /td>
        < td>< bean:write name="user" property="name" />< /td>
      < /tr>
    < /logic:iterate>
  < /logic:present>

logic:present是逻辑判断,sampleform中userlist为空(无数据或null),下面的东东不显示.
logic:iterate是逻辑循环,userlist有几条数据,就循环几次.

< bean:write name="user" property="id" />是lable标签,显示user这个对象(entity)的id属性.或者说显示数据表user中的一条记录中的id这个列.
user.java(就是entity,因为和业务密切,高达不开发,切记切记不可顺意修改.遇到设计有问题,qa日本)
    string id;
    public string getid() { return id; }
    public void setid(string id) { this.id = id; }
    string name;
    public string getname () { return name; }
    public void setname (string name) { this.name = name; }
看到这,是否觉得面熟啊,好象和form一样,但有点不一样,不一样在哪里,看下去后,自己感悟吧.
sampleform.java:
    list userlist;
    public list getuserlist () { return userlist; }
    public void setuserlist (list userlist) { this.userlist = userlist; }
form只要这些,那你会问,id和name,struts如何能得到呢?你不是说过jsp必须和form一样对应吗?不错,一一对应是肯定的. userlist信息已经包含了一切,还需要定义id和name吗?至于struts如何得到数据,那就看下面的action是如何处理的吧.
sampleaction.java
public actionforward start(actionmapping mapping,
  actionform argform, httpservletrequest req, httpservletresponse res)
        throws exception {
        sampleform form = (sampleform) argform;
        arraylist userlist = new arraylist();
        user user = new user();
        user.seti