社区
Java EE
帖子详情
MVC(如struts)如何解决多个用户操作在同一个页面进行的问题?
wbw88
2003-10-21 11:22:18
我老觉得MVC(如struts)不好解决多个用户操作在同一个页面进行的问题,因为MVC老是把每一个用户操作映射到一个Action,然后再转向一另个页面(虽然可以是同一个页面)。
...全文
70
13
打赏
收藏
MVC(如struts)如何解决多个用户操作在同一个页面进行的问题?
我老觉得MVC(如struts)不好解决多个用户操作在同一个页面进行的问题,因为MVC老是把每一个用户操作映射到一个Action,然后再转向一另个页面(虽然可以是同一个页面)。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kui
2003-11-26
打赏
举报
回复
lykAction文件:用于实现分页、记录删除、编辑、更新、连接等功能
-----------------------------------------------
package OST;
import OST.jdbc.util.ConnectionPool;
import OST.lykDAO;
import java.lang.reflect.InvocationTargetException;
import java.util.Locale;
import javax.servlet.ServletException;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.util.ModuleException;
import org.apache.struts.util.MessageResources;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collection;
public final class lykAction extends Action
{
// 变量定义:
private Log log = LogFactory.getLog("org.apache.struts.webapp.Example");
private ConnectionPool pool;
public lykAction() {
pool = ConnectionPool.getInstance();
}
//函数定义:
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception
{
// Extract attributes and parameters we will need
Locale locale = getLocale(request);
MessageResources messages = getResources(request);
HttpSession session = request.getSession();
lykForm m_lykForm = (lykForm) form;
Connection con = null;
try
{
con = pool.getConnection();
lykDAO m_lykDAO = new lykDAO(con);
String action=request.getParameter("action");
if(action==null)action="find";
if(action.equals("delete"))
{
String expression=request.getParameter("expression");
m_lykDAO.removeID(expression);
}
////////////
if(action.equals("update"))
{
String expression=request.getParameter("expression");
lyk m_lyk= new lyk();
//<update>
m_lyk.setUser_id(m_lykForm.getUser_id());
m_lyk.setPassword(m_lykForm.getPassword());
m_lyk.setName(m_lykForm.getName());
m_lyk.setDescription(m_lykForm.getDescription());
m_lyk.setWeb_site(m_lykForm.getWeb_site());
m_lyk.setAddress(m_lykForm.getAddress());
//</update>
m_lykDAO.update(m_lyk,expression);
}
///////////////
//<sqlstr>
String sql="SELECT * FROM dbo.attraction";
//</sqlstr>
Collection col = m_lykDAO.findSQL(sql);
request.setAttribute("lyk",col);
//<分页>
m_lykForm.setRowCount(col.size());
m_lykForm.setLength(5);//设置每页显示记录数
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");
}
catch (SQLException e)
{
e.printStackTrace();
throw new RuntimeException("Unable to get connection.");
}
finally
{
try
{
if (con != null)
con.close();
}
catch (SQLException e)
{
throw new RuntimeException(e.getMessage());
}
}
}
}
---------------------------------------------------
上面也可以加上查询条件。从if(action.equals("delete"))和if(action.equals("update"))等句子看出,可以把action当作事件类型,这样就可以实现ASP.NET中的事件驱动了。
kui
2003-11-26
打赏
举报
回复
关于“先显示一个表单给用户填写查找条件,写完后用户点“查找”。然后就在下面显示查找的结果(是一个表格),当用户点表格里的每一条记录时,就会在表格右面显示该记录的详细信息。然后当用户点“修改”时,用户可以修改该详细内容。”的问题:
在Struts中用一个Action和一个JSP实现这些功能是完全可以的。在JSPStudio中通过数据库文件向导自动产生的文件就实现了上述功能,当然,手工编写代码也行。
下面我给出一个logic:iterate 标签在数据库查询表格显示结果的实例,包含了分页、删除、编辑、更新、连接功能。所有代码由JSPStudio自动产生,JSPStudio下载地址ftp://162.105.80.43/incoming/
包含分页、连接、删除、更新功能的软件表格文件lykOUT.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>
--------------------------------------------------------------------------
其中在“<logic:iterate name='lyk' id='lyk' type='OST.lyk' scope='request' offset='<%= String.valueOf(offset) %>' length='<%= String.valueOf(length) %>'>”中,offset代表本页开始显示的记录,length代码本页显示的记录条数。
<logic:notEqual name='lykForm' property='action' value='edit'> 表示非常编辑时执行下面的代码。
<logic:equal name='lykForm' property='action' value='edit'> 表示编辑时执行下面的代码。
<a href="lykAction.do?action=link&expression=<bean:write name='lyk' property='user_id' />">是显示分页及相应连接的内容。
------------------------------------------------
上面没有包含查询在内,但只要在前面加一个<form>标签作查询就行了。
wbw88
2003-11-25
打赏
举报
回复
to jaxe(浩毛) :
to zhouyiqing(玉樹臨風)
LookupDispatchAction 是什么东西呀,有没有这方面的资料呀
jaxe
2003-11-07
打赏
举报
回复
用LookupDispatchAction就解决了。
kathir
2003-11-06
打赏
举报
回复
你的查询结果显示在表格里,这些字段应该有一个能标示这条纪录的唯一标示符,比如编号等。当你点击表格时,应该有个函数记住你点击那一行,然后你再在<script>里,写一个函数, if(t1.rows.length==1)//t1是你点击的表格id
{
alert("没有个人信息!")
return
}
if(isNaN(hrowsel.value))//hrowsel一个隐藏文本框,记住上一个函数里的你点击的具体行
{
alert("请选择要查看的个人信息!")
return
}
if(hrowsel.value==""||hrowsel.value==" "||hrowsel.value==null)
{
alert("请选择要查看的个人信息!")
return
}
var curRow=hrowsel.value
ycode=t1.childNodes(0).childNodes(curRow).childNodes(2).innerText
根据所得的ycode,你可以从数据库里选出对应的信息显示在右边的列表里
zhouyiqing
2003-10-29
打赏
举报
回复
看看這個LookupDispatchAction,是個好東西!
Leemaasn
2003-10-22
打赏
举报
回复
一般是做成脚本+session
whyxx
2003-10-22
打赏
举报
回复
这种东西没什么问题啊,用一个action处理所有操作(用一个hidden变量来判断用户是何种操作)和用N个action每个处理一种操作有什么不同吗,一个麻烦但结构清晰,一个简单但处理有点像batch,
VVV_lucky
2003-10-22
打赏
举报
回复
一个操作对应一个action.
麻烦但是清晰。
至于你说的,确实需要转页面呀,这是B/S的东西,只要需要和服务器交换信息就要刷画面。不过有的可以做成脚本。
wbw88
2003-10-22
打赏
举报
回复
关键是为了方便用户操作,所有这些操作都要放在同一个页面。
软猫克鲁
2003-10-22
打赏
举报
回复
我想,你可以单独用一个Action来处理“查找”之类的响应。也许……
wbw88
2003-10-21
打赏
举报
回复
如:我需要在一个页面进行下面查询操作:
先显示一个表单给用户填写查找条件,写完后用户点“查找”。然后就在下面显示查找的结果(是一个表格),当用户点表格里的每一条记录时,就会在表格右面显示该记录的详细信息。然后当用户点“修改”时,用户可以修改该详细内容。
不知大家是怎么解决这类问题的。
wbw88
2003-10-21
打赏
举报
回复
如果用MVC结构,就会在不同的页面转来转去,
java web技术开发大全(最全最新)
《Java Web开发技术大全:JSP+Servlet+
Struts
+Hibernate+Spring+Ajax+》讲解了JSP/S rvlet技术的基础知识,并提供了一个综合案例展示其具体应用,它们是Java Web服务端技术的基石,也是学习Java Web开发所要必须掌握...
Spring
MVC
是什么?与
Struts
的区别是什么?
Spring
MVC
是Spring框架中的一个模块,它提供了一种基于
MVC
(Model-View-Controller)架构的Web开发方式。与传统的JSP/Servlet开发方式相比,Spring
MVC
更加灵活、高效,可以帮助开发人员快速构建高质量的Web应用...
MVC
框架及
Struts
2介绍
Struts
2标签库1 框架1.1 框架 框架(Framework):指为
解决
一个特定
问题
而设计的具有一定约束性的结构。框架强调的是软件的设计重用性和系统的可扩充性,以缩短大型应用软件系统的开发周期,提高开发质量。一个好的...
Struts
旅程(四)
MVC
向
struts
MVC
框架演变过程
上篇我们以登录为例讲解了
struts
配置,实现了使用
struts
框架
进行
登录的示例。...本篇就第一个
问题
,以一个示例对
用户
信息的增删改查来展示基本的
MVC
框架到
struts
MVC
的过程。 版本一: 首先是创建一个jsp索
Struts
——开源
MVC
框架
Struts
是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-...
Java EE
67,512
社区成员
225,881
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章