其实这个问题,最好问问那些高手,做过struts项目的

解决方案 »

  1.   

    你的数据库访问对象来更新你的formbean.
      

  2.   

    mvc,很清晰的思路啊,这样才能把偶合性减小,你都写到一起是可以,不过那不又成了难维护和更新了吗,如果这是个项目,你是不是就能很轻松的把各个部分发给不同的人去做呢?
      

  3.   

    取得你要显示的数据后,不用生成新的formbean的,直接forward到一个JSP上输出就可以了(在action-mapping中定义好的)。
    Formbean的作用是封装Form中提交的信息至一个bean中,然后提交到action中,并且在未通过formbean的validate()验证时返回原表单页面并自动填充提交过的信息。
    如果使用validator框架进行验证,可以尽可能多的使用dynamic formbean,这样就不用为每一个表单创建一个单独的formbean了
      

  4.   

    最好不要作struts,功能有限,例如:你的前端视图录入较复杂,是一个表格,其
    录入行数随用户不同需要是不同的,且每输入格间有级连过滤,等等,struts是无法
    实现的,自己做一框架,也很简单。
      

  5.   

    我的观点与qo(qoo)不同,我现在做的项目都是用struts,感觉struts非常好。我在JSPStudio中开发struts,数据库连接、操作及JSP文件表格显示、分页、记录删除、更新、连接等都是JSPStudio自动产生的,楼主所说的“大量的xxx.setXXX(xxx.getXXx())”也完全是JSPStudio根据开发人员选择的数据库自动产生的。楼主所提的几个问题,实际上是如何理解和应用Struts的问题,可能楼主手上的资料太少,解决问题的唯一办法是要找到详细的资料。楼主说的“但是我在action中把model放在request中在jsp中取不出来了”,当然是可以在JSP中取出来的,例如下面的代码:lyk是保存数据库记录的Bean,lykForm是与Action对应的Bean,保存分页参数、当前页码、当前操作记录数据等。
     ///////////////
           //<sqlstr>
           String sql="SELECT * FROM dbo.设备总表";
           //</sqlstr>
            Collection col = m_lykDAO.findSQL(sql);
            request.setAttribute("lyk",col);              //<分页>
            m_lykForm.setRowCount(col.size());
            m_lykForm.setLength(10);//设置每页显示记录数
           
            String page=request.getParameter("page");
            int ipage;
            try 
            {
                ipage=java.lang.Integer.parseInt(page,10);
            }
            catch (Exception e) 
                {
                    ipage=m_lykForm.getPage();
                }
            m_lykForm.setPage(ipage);
            m_lykForm.setOffset(ipage*m_lykForm.getLength());
            m_lykForm.setPageCount(m_lykForm.getRowCount()/m_lykForm.getLength()+1);
           
            String strPage="";
           
            strPage+="共";
            strPage+=String.valueOf(m_lykForm.getRowCount());
            strPage+="条记录,共";
            strPage+=String.valueOf(m_lykForm.getPageCount());
            strPage+="页,当前是第";
            strPage+=String.valueOf(ipage+1);
            strPage+="页,      ";
           
            int istart,iend;
            istart=ipage-5;
            if(istart<0) {istart=0;}
            iend=istart+10;
            if(iend>m_lykForm.getPageCount()) {iend=m_lykForm.getPageCount();}
            istart=iend-10;
            if(istart<0) {istart=0;}
            for(int i=istart;i<iend;i++)
            {
                strPage+="<a href='lykAction.do?action=find&page=";
                strPage+=String.valueOf(i);
                strPage+="'>";
                strPage+=String.valueOf(i+1);
                strPage+="</a>"; 
                strPage+="  ";
            }
           
            m_lykForm.setMybeanvariable1(strPage);  
                  m_lykForm.setAction(action);  
            request.setAttribute("lykForm",m_lykForm);
                  //</分页>       return mapping.findForward("success");
    ----------------------------------------------------
    下面是在JSP中应用lyk(保存数据库记录的Bean)、lykForm(与Action对应的Bean,保存分页参数、当前页码、当前操作记录数据等)两个Bean数据的JSP文件代码:
    <%@ page contentType="text/html;charset=GB2312" language="java" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %><html:html>
    <head>
    <title></title>
    <html:base/>
    </head>
    <body bgcolor="white">
    <table cellPadding=2 width="80%" border=2>
    <tr>
    <td><span CONTENTEDITABLE=true>user_id</span></td>
    <td><span CONTENTEDITABLE=true>password</span></td>
    <td><span CONTENTEDITABLE=true>name</span></td>
    <td><span CONTENTEDITABLE=true>description</span></td>
    <td><span CONTENTEDITABLE=true>web_site</span></td>
    <td><span CONTENTEDITABLE=true>address</span></td>
    <td><span CONTENTEDITABLE=true>删除</span></td>
    <td><span CONTENTEDITABLE=true>编辑</span></td>
    <td><span CONTENTEDITABLE=true>链接</span></td></tr>
    <bean:define property='offset' name='lykForm'  id='offset' />
    <bean:define property='length' name='lykForm'  id='length' />
    <logic:iterate name='lyk' id='lyk' type='OST.lyk' scope='request' offset='<%= String.valueOf(offset) %>' length='<%= String.valueOf(length) %>'>
    <logic:notEqual name='lykForm' property='action' value='edit'> 
    <tr>
    <td><bean:write name='lyk' property='user_id' /></td>
    <td><bean:write name='lyk' property='password' /></td>
    <td><bean:write name='lyk' property='name' /></td>
    <td><bean:write name='lyk' property='description' /></td>
    <td><bean:write name='lyk' property='web_site' /></td>
    <td><bean:write name='lyk' property='address' /></td>
    <td><a href="lykAction.do?action=delete&expression=<bean:write name='lyk' property='user_id' />">删除</a></td>
    <td><a href="lykAction.do?action=edit&expression=<bean:write name='lyk' property='user_id' />">编辑</a></td>
    <td><a href="lykAction.do?action=link&expression=<bean:write name='lyk' property='user_id' />">链接</a></td></tr>
    </logic:notEqual> 
    <logic:equal name='lykForm' property='action' value='edit'> 
    <tr>
    <form  method='post' name='lykForm' action="/OST/lykAction.do?action=update&expression=<bean:write name='lyk' property='user_id' />">
    <td><html:text name='lyk' property='user_id' /></td>
    <td><html:text name='lyk' property='password' /></td>
    <td><html:text name='lyk' property='name' /></td>
    <td><html:text name='lyk' property='description' /></td>
    <td><html:text name='lyk' property='web_site' /></td>
    <td><html:text name='lyk' property='address' /></td>
    <td><a href="lykAction.do?action=delete&expression=<bean:write name='lyk' property='user_id' />">删除</a></td>
    <td><html:submit value='更新'></html:submit></form ><html:form  method='post' action='/lykAction.do?action=reset'><html:submit value='取消'></html:submit>
    </html:form ></td>
    <td><a href="lykAction.do?action=link&expression=<bean:write name='lyk' property='user_id' />">链接</a></td></tr>
    </logic:equal> 
    </logic:iterate><tr><td  align=middle colSpan=10 ><bean:write property='mybeanvariable1' name='lykForm' filter='false' /></td></tr></tr>
    </table>
    </body>
    </html:html>
      

  6.   

    Struts的流程应该就和楼主说的那样!
    这也就是它适合做比较大的项目的原因吧!
    如果你做的是小项目,自然觉得这个框架实在是不方便!!
      

  7.   

    多谢各位,model确实可以在jsp中取得来,发文中提到的说法有误