用struts设计的问题 其实这个问题,最好问问那些高手,做过struts项目的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的数据库访问对象来更新你的formbean. mvc,很清晰的思路啊,这样才能把偶合性减小,你都写到一起是可以,不过那不又成了难维护和更新了吗,如果这是个项目,你是不是就能很轻松的把各个部分发给不同的人去做呢? 取得你要显示的数据后,不用生成新的formbean的,直接forward到一个JSP上输出就可以了(在action-mapping中定义好的)。Formbean的作用是封装Form中提交的信息至一个bean中,然后提交到action中,并且在未通过formbean的validate()验证时返回原表单页面并自动填充提交过的信息。如果使用validator框架进行验证,可以尽可能多的使用dynamic formbean,这样就不用为每一个表单创建一个单独的formbean了 最好不要作struts,功能有限,例如:你的前端视图录入较复杂,是一个表格,其录入行数随用户不同需要是不同的,且每输入格间有级连过滤,等等,struts是无法实现的,自己做一框架,也很简单。 我的观点与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> Struts的流程应该就和楼主说的那样!这也就是它适合做比较大的项目的原因吧!如果你做的是小项目,自然觉得这个框架实在是不方便!! 多谢各位,model确实可以在jsp中取得来,发文中提到的说法有误 webwork框架的问题。 在linux上运行,log4j日志有时候就不输出了 问“朝花夕拾”一个java问题!!!!!!!!!!!!!!!!!!!!!!!!!!! 如何用java制作一个复制文件的小工具 调用外网接口的问题 请教下压缩 关于SOAP和EBMS的问题,向大家请教。 soap是什么?哪有这方面的教程? 请教个问题(送分)急用 sql之left join、right join、inner join的区别 java或者jsp中如何实现远程客户端的硬件验证问题,在线等!! 有人遇到这样的问题吗?
Formbean的作用是封装Form中提交的信息至一个bean中,然后提交到action中,并且在未通过formbean的validate()验证时返回原表单页面并自动填充提交过的信息。
如果使用validator框架进行验证,可以尽可能多的使用dynamic formbean,这样就不用为每一个表单创建一个单独的formbean了
录入行数随用户不同需要是不同的,且每输入格间有级连过滤,等等,struts是无法
实现的,自己做一框架,也很简单。
///////////////
//<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>
这也就是它适合做比较大的项目的原因吧!
如果你做的是小项目,自然觉得这个框架实在是不方便!!