tomcat多用户并发访问时request中无法得到Attribute request.setAttribute(SEARCHRESULT, list);这个是在哪儿写的?具体代码?应该是没注意线程安全问题造成的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 代码写在Action中 BaseForm thisForm = (BaseForm) form; // 获取分页数据,放入到请求中 Pager page = new Pager(thisForm.getCurrentPageNo()); request.setAttribute(PAGER, page); // 获取查询结果列表,放入到请求中 // 动态构建业务对象和业务方法 BaseBO bo = BOFactory.createBO(thisForm.getModelParam() .getBoClass()); List list = new ArrayList(); String sql = getSelectSQL(); if (!"".equals(sql)) { list = bo.list(page, sql); } session.setAttribute(SEARCHRESULT, list); // 返回到列表页面 return mapping.findForward(LIST);设置后就直接返回页面了 session.setAttribute(SEARCHRESULT, list);========================================Cannot find bean: "searchresult" in scope: "request"====================================================一个是session一个是request,这里就有问题 错了,不好意思,我怀疑是struts多次转发,request失效造成的,因此把request 都改成了session.之前都是request,改称session后,没有报上面的错误 但是为什么request报错,如果是转发,是什么原因造成它再次转发,request失效呢?放在session中会造成内存消耗太大。大家给指点一下啊!!!!!!!!!1 session.setAttribute(SEARCHRESULT, list);========================================Cannot find bean: "searchresult" in scope: "request"???????????? 以下面代码为准代码为代码写在Action中 BaseForm thisForm = (BaseForm) form;// 获取分页数据,放入到请求中Pager page = new Pager(thisForm.getCurrentPageNo());request.setAttribute(PAGER, page);// 获取查询结果列表,放入到请求中// 动态构建业务对象和业务方法BaseBO bo = BOFactory.createBO(thisForm.getModelParam().getBoClass());List list = new ArrayList();String sql = getSelectSQL();if (!"".equals(sql)) {list = bo.list(page, sql);}request.setAttribute(SEARCHRESULT, list);// 返回到列表页面return mapping.findForward(LIST);页面代码为:<logic:iterate id="unit" name="searchresult" scope="request"> 最新的测试信息表明,在请求返回页面后进行了二次提交。但为什么会有二次提交呢?为什么人少时可以正常执行? jdk是什么版本如果是1.3运行不了request.setAttribute()的 jdk没有问题,单用户运行没有问题,问题出在多用户并发访问上 终于找到原因了,问题出在程序设计上。我们的程序中用为了减少参数的传递,把ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response这四个参数放在了Action的全局变量中,问题就出在这里。经测试发现对于Action的基类(我的程序中是BaseAction),在大量用户并发访问时,只有一个实例,而每个子模块有一个Action实例(如UnitActrion,PersonAction)。多个用户使用一个Action实例,必然存在全局变量被不同的用户改写的问题。我程序的问题就是,用户A查询后将结果放在request中,然后到页面去接收,在而在其到页面接收之前。Action处理用户B的请求,将b全局变量中的request指向用户b的请求,结果就导致用户A到页面后去request中取查询结果时,无法找到。struts本身的请求处理都传递了上面的四个参数,这就保证了不同用户使用自己的request信息。我因图生事将传递的参数去掉,致使出现系统的不稳定。希望我的结论能给有类似问题的朋友有所帮助! java分布式解决方案 Struts2标签传值的问题 在struts中如何防止表单重复提交 大家救命啊,实在想不明白的一个javabean问题 请教 判断日期是否过期 大哥大姐们来帮忙看看啊 关于Ajax的使用 还是一道RMI的题,tomcatjava及各位大侠请进来看看,急! Tomcat 的问题 hibernate动态查询 连接池c3p0遇到的问题 weblogic安装完后在配置数据源过程中出现一下问题.
BaseForm thisForm = (BaseForm) form;
// 获取分页数据,放入到请求中
Pager page = new Pager(thisForm.getCurrentPageNo());
request.setAttribute(PAGER, page);
// 获取查询结果列表,放入到请求中 // 动态构建业务对象和业务方法
BaseBO bo = BOFactory.createBO(thisForm.getModelParam()
.getBoClass());
List list = new ArrayList();
String sql = getSelectSQL();
if (!"".equals(sql)) {
list = bo.list(page, sql);
}
session.setAttribute(SEARCHRESULT, list);
// 返回到列表页面
return mapping.findForward(LIST);
设置后就直接返回页面了
========================================Cannot find bean: "searchresult" in scope: "request"
====================================================一个是session一个是request,这里就有问题
之前都是request,改称session后,没有报上面的错误
========================================Cannot find bean: "searchresult" in scope: "request"
????????????
代码为
代码写在Action中
BaseForm thisForm = (BaseForm) form;
// 获取分页数据,放入到请求中
Pager page = new Pager(thisForm.getCurrentPageNo());
request.setAttribute(PAGER, page);
// 获取查询结果列表,放入到请求中// 动态构建业务对象和业务方法
BaseBO bo = BOFactory.createBO(thisForm.getModelParam()
.getBoClass());
List list = new ArrayList();
String sql = getSelectSQL();
if (!"".equals(sql)) {
list = bo.list(page, sql);
}
request.setAttribute(SEARCHRESULT, list);
// 返回到列表页面
return mapping.findForward(LIST);页面代码为:<logic:iterate id="unit" name="searchresult" scope="request">
最新的测试信息表明,在请求返回页面后进行了二次提交。但为什么会有二次提交呢?为什么人少时可以正常执行?
如果是1.3运行不了request.setAttribute()的
我们的程序中用为了减少参数的传递,把ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response这四个参数放在了Action的全局变量中,问题就出在这里。
经测试发现对于Action的基类(我的程序中是BaseAction),在大量用户并发访问时,只有一个实例,而每个子模块有一个Action实例(如UnitActrion,PersonAction)。多个用户使用一个Action实例,必然存在全局变量被不同的用户改写的问题。
我程序的问题就是,用户A查询后将结果放在request中,然后到页面去接收,在而在其到页面接收之前。Action处理用户B的请求,将b全局变量中的request指向用户b的请求,结果就导致用户A到页面后去request中取查询结果时,无法找到。struts本身的请求处理都传递了上面的四个参数,这就保证了不同用户使用自己的request信息。我因图生事将传递的参数去掉,致使出现系统的不稳定。希望我的结论能给有类似问题的朋友有所帮助!