菜鸟提问,关于java 记录查询显示的问题

monvay 2011-08-29 12:35:56
请教一个java问题:
一个页面sj.jsp列出所查询出来的 商家简单信息比如下:

序号 姓名 联系电话 详情

1 李XXX 138****** 查看
2 张XXX 135****** 查看
................
20 赵XXXX 158****** 查看

第二页
21 王XXX 138****** 查看
22 陆XXX 135****** 查看
................


很多页

当点击某人后面所对应的 “查看” 在sjxx.jsp页面上显示 该人的详细信息

在sjxx.jsp页面上有一 “返回按钮” 也即回到上面所列出信息的页面,请问怎么实现

我开始是持久化一个对象来保存实现上面图示记录的 SQL语句,然后sjxx.jsp页面返回时再调用所保存的SQL语句再次执行。功能到是实现了

现在问题是:
如果多个人操作,当A 在打开 sjxx.jsp中查看的是 第一页的 第一个人 李XXX 的资料时
B操作人员在sj.jsp中点击翻到第二页或其他页了。
这个时候,A操作员从在查看 李XXX 的详细资料的sjxx.jsp页面上点击返回时,却到了B操作人员正翻到的第二页或其他页了,而不是他原来的第一页。
请问该 怎么解决。非常感谢,不知描述清楚没?

汗~~~!!~~!
====================
注:前端页面用的是 frame 框架 不打开到其他页面。

MVC使用的是struts1.2




...全文
126 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
monvay 2011-08-30
  • 打赏
  • 举报
回复
补充一下:

一个页面sj.jsp列出所查询出来的 商家简单信息比如下:

序号 姓名 联系电话 详情

1 李XXX 138****** 查看
2 张XXX 135****** 查看
................
20 赵XXXX 158****** 查看

第二页
21 王XXX 138****** 查看
22 陆XXX 135****** 查看
................


很多页

这个列出的信息 用户可根据输入的不同条件查出不同记录的 ,总页数 也是变化的。
把相应信息存到session中 就保证了多个用户操作时互不干扰。
第一次做,慢慢摸索
:)
monvay 2011-08-30
  • 打赏
  • 举报
回复
感谢 RainOnl 提供的思路,以前没做过

已经解决,将需要保存的信息如 要返回的sql,总页码 当前页等信息 put到 HashMap 中
然后 将hashmap 存储 到session中

当需要返回原来页面,调用返回原页面所操作的servlet 取得session中的相应信息,根据获取信息,再次查询出最初信息,并给JSP页面。

PS 我将分页 操作 专门做到一个类中的。

感谢 RainOnl !
monvay 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 feng3773216 的回复:]

查询啊。。。还存储过程干啥啊,用不着事务的,就找普通sql分页查询不就好了。。。
[/Quote]

哈哈,好象没提到用存储过程哦
^_^
monvay 2011-08-29
  • 打赏
  • 举报
回复
分不多,但希望能帮忙解决,感谢!!
dreamwangqing 2011-08-29
  • 打赏
  • 举报
回复
楼主,试试点查看的时候,把查询条件保存在 js 的 cookie 中,点 返回 的时候 重新读 cookie
weifubin 2011-08-29
  • 打赏
  • 举报
回复
不知所云~
monvay 2011-08-29
  • 打赏
  • 举报
回复
自己UP一下
monvay 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 rainonly 的回复:]

你的信息存储方式呢?
后台存储信息的方式可能不对,一般存储到session中 ,就不会出现这种情况了.
我看你的问题的感觉是,似乎所有用户都在对一个信息进行操作....
[/Quote]

我也想 应该这种方式,能否给一个例子,最好有代码的
感谢!
Phoenix Slade 2011-08-29
  • 打赏
  • 举报
回复
你分页的时候可以把页数带过去 啊
RainOnly 2011-08-29
  • 打赏
  • 举报
回复
你的信息存储方式呢?
后台存储信息的方式可能不对,一般存储到session中 ,就不会出现这种情况了.
我看你的问题的感觉是,似乎所有用户都在对一个信息进行操作....
RainOnly 2011-08-29
  • 打赏
  • 举报
回复
我就不从数据库读数据了 直接模拟数据了哈

小于1页和大于最大页数 我懒得判断了 重在理解...用的struts2


package com.zzab.action;

import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;

public class BaseAction {


public Map<String,Object> getRequest(){
return (Map)ActionContext.getContext().get("request");
}

public Map<String,Object> getApplication(){
return (Map)ActionContext.getContext().getApplication();
}

public Map<String,Object> getSession(){
return (Map)ActionContext.getContext().getSession();
}

public HttpServletResponse getResponse(){
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("uft-8");
response.setContentType("text/html;charset=utf-8");
return response;
}
}



package com.zzab.action;

import java.util.List;

import com.zzab.bean.Employee;
import com.zzab.service.EmployeeService;

public class EmployeeAction extends BaseAction {

private int nowPage;

public int getNowPage() {
return nowPage;
}

public void setNowPage(int nowPage) {
this.nowPage = nowPage;
}


public String showEmployee(){

List<Employee> list = EmployeeService.getEmployeeByPage(nowPage);
this.getSession().put("list", list);
return "success";
}


}




package com.zzab.bean;

public class Employee {
private int id;
private String name;
private String phone;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Employee() {
super();
// TODO Auto-generated constructor stub
}
public Employee(int id, String name, String phone) {
super();
this.id = id;
this.name = name;
this.phone = phone;
}
}



package com.zzab.service;

import java.util.ArrayList;
import java.util.List;

import com.zzab.bean.Employee;

public class EmployeeService {


public static List<Employee> getEmployees(){
List<Employee> employees = new ArrayList<Employee>();
for (int i = 0; i < 20; i++) {
Employee employee = new Employee(i, "张三" + i, "135" + i);
employees.add(employee);
}
return employees;
}


public static List<Employee> getEmployeeByPage(int nowPage){
List<Employee> employees = getEmployees();
List<Employee> list = new ArrayList<Employee>();
int index = 0;
for (int i = (nowPage * 10); i < employees.size(); i++) {

if(index == 10){
break;
}
list.add(employees.get(i));
index ++;
}
return list;
}



}


stru.xml文件的内容

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>

<package namespace="/test" name="default" extends="struts-default">
<action name="show" class="com.zzab.action.EmployeeAction" >
<result name="success">/employee.jsp</result>
</action>
</package>
</struts>



<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'employee.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<table>
<tr>
<td>id</td>
<td>name</td>
<td>phone</td>
<td>action</td>
</tr>
<s:iterator var="employee" value="#attr.list">
<tr>
<td>${employee.id }</td>
<td>${employee.name }</td>
<td>${employee.phone }</td>
<td></td>
</tr>
</s:iterator>

</table>
<a href="test/show!showEmployee?nowPage=${nowPage-1 }">上一页</a>
<a href="test/show!showEmployee?nowPage=${nowPage+1 }">下一页</a>
</body>
</html>



<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>

<body>
<a href="test/show!showEmployee">ccc</a>
</body>
</html>



这就是基本的全部了...web.xml就不用我发了吧 汗
休谱诺斯 2011-08-29
  • 打赏
  • 举报
回复
查询啊。。。还存储过程干啥啊,用不着事务的,就找普通sql分页查询不就好了。。。
monvay 2011-08-29
  • 打赏
  • 举报
回复
history用过,不行
现在就是用的location

<a href="javascript:void(0);" onclick="location.replace('customerSerch.do?method=backCustomerXx')">
2399 2011-08-29
  • 打赏
  • 举报
回复
最简单方法用location和history实现,再不你就传参数过去,例如当前第几页。然后换回的时候带个从第几页过来的。并且你说的这种情况是不会出现的,A,B不会在同一台机器上操作吧,互相是不会影响的

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧