0 0

关于并发访问求教3

我的应用是通过JSP+SELVET+Oracle做的,但当我的应用被多人同时时候使用的时候就会时不时的出现混乱的现象,例如跳转到不该出现的页面里等等现象。不知道为什么
问题补充:
其中的一个servlet类

public class OtherConvertAction implements ManageService {

	private HttpSession session = null;

	private List objects = null;

	private TurnPage goPage = null;

	private RequestDispatcher rd = null;

	private String state = null;

	private String pageNum = null;

	private DimCoefPriceImpl dcpDao = null;
	
	private String contextPath = null;

	private static Logger logger = Logger.getLogger(OtherConvertAction.class);

	private void findDefault(DimCoefPriceImpl dcpDao2, String Code) {
		try {
			List otherConvert = dcpDao2.findAllData(Code);
			goPage.setList(otherConvert);
			goPage.setCurrentPage("1");
			session.setAttribute("otherConvert", goPage.getPage());
			session.setAttribute("page", goPage);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	private void init(HttpServletRequest request) {
		rd = request.getRequestDispatcher(Config.QTT_CQ_PATH);
		String Code = request.getParameter("class");
		state = request.getParameter("state");
		session = request.getSession(false) == null ? request.getSession(true)
				: request.getSession(false);
		state = request.getParameter("state");
		pageNum = request.getParameter("gopage") == null ? "1" : request
				.getParameter("gopage");
		goPage = (TurnPage) session.getAttribute("page");
		dcpDao = new DimCoefPriceDAO();

		contextPath = request.getContextPath();
		
		if (session.getAttribute("meta_cq") == null) {
			List meta_cq;
			try {
				meta_cq = DimCodeDAO.findMeta();
				session.setAttribute("meta_cq", meta_cq);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		logger.debug("State:"+state);
	}

	// private void jumpReqPage(String Code, HttpServletRequest request,
	// HttpServletResponse response) throws ServletException, IOException {
	// if ("austenite".equals(Code)) {
	// rd = request.getRequestDispatcher(Config.QTT_AU_PATH);
	// rd.forward(request, response);
	// } else if ("doublesteel".equals(Code)) {
	// rd = request.getRequestDispatcher(Config.QTT_DOU_PATH);
	// rd.forward(request, response);
	// } else if ("ferrite".equals(Code)) {
	// rd = request.getRequestDispatcher(Config.QTT_FER_PATH);
	// rd.forward(request, response);
	// } else if ("martensite".equals(Code)) {
	// rd = request.getRequestDispatcher(Config.QTT_MAR_PATH);
	// rd.forward(request, response);
	// } else {
	// logger.debug("Request Code is "+Code);
	// }
	// }

	public void execute(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		init(request);

		if (Config.ISGOPAGE.equals(state)) {
			goPage.setCurrentPage(pageNum);
			session.setAttribute("otherConvert", goPage.getPage());
			response.sendRedirect(contextPath+"/ME/jsp/convertquotiety/cqshopsign.jsp");
		} else if (Config.ISFIND.equals(state)) {
			String midCode = request.getParameter("midItems");
			String fromDate = request.getParameter("fromDate");
			String toDate = request.getParameter("toDate");
			String detail = request.getParameter("detail");
			String shopSign = request.getParameter("shopSign");
			String metaStr = request.getParameter("mate_cq");
			String Code = request.getParameter("class");

			try {
				List otherConvert = dcpDao.find(Code, fromDate, toDate,
						midCode, detail, shopSign, metaStr);
				goPage.setList(otherConvert);
				goPage.setCurrentPage("1");
				session.setAttribute("otherConvert", goPage.getPage());
				request.setAttribute("message", "查询成功!");
			} catch (SQLException e) {
				e.printStackTrace();
				request.setAttribute("message", "查询失败!");
			}
//			response.sendRedirect(contextPath+"/ME/jsp/convertquotiety/cqshopsign.jsp");
			rd.forward(request, response);
		} else if (Config.ISUPDATE.equals(state)) {
			DimCoefPrice coefPrice = new DimCoefPrice();
			coefPrice.setId(request.getParameter("u-0-rowid"));
			// coefPrice.setFMLY_CODE(request.getParameter("u-0-fmlyCode"));
			// coefPrice.setFMLY_NAME(request.getParameter("u-0-fmlyName"));
			// coefPrice.setMID_CODE(request.getParameter("u-0-midCode"));
			// coefPrice.setMID_NAME(request.getParameter("u-0-midName"));
			// coefPrice.setDETAIL_CODE(request.getParameter("u-0-detailCode"));
			coefPrice.setDETAIL_NAME(request.getParameter("u-0-detailName"));
			coefPrice.setSG_CODE(request.getParameter("u-0-shopSignCode"));
			coefPrice.setSHOP_SIGN(request.getParameter("u-0-shopSign"));
			coefPrice.setMETA_STR_ID(request.getParameter("u-0-metaStuCode"));
			coefPrice
					.setMETA_STRUCTURE(request.getParameter("u-0-metaStuName"));
			coefPrice.setCR_QTY(request.getParameter("u-0-crContent"));
			coefPrice.setNI_QTY(request.getParameter("u-0-niContent"));
			// coefPrice.setCR_PRICE(request.getParameter("u-0-crPrice"));
			// coefPrice.setNI_PRICE(request.getParameter("u-0-niPrice"));
			coefPrice.setNY_FROM(request.getParameter("u0fromDate"));
			coefPrice.setNY_TO(request.getParameter("u0toDate"));
			coefPrice.setREMARK(request.getParameter("u-0-remark"));
			int rows = dcpDao.doUpdate(coefPrice).intValue();
			if (rows > 0) {
				request.setAttribute("message", "更新成功!");
			} else {
				request.setAttribute("message", "更新失败!");
			}
			findDefault(dcpDao, request.getParameter("class"));
			rd.forward(request, response);
		} else {
			findDefault(dcpDao, request.getParameter("class"));
			response.sendRedirect(contextPath+"/ME/jsp/convertquotiety/cqshopsign.jsp");
		}

	}
}
2008年11月05日 17:05

4个答案 按时间排序 按投票排序

0 0

采纳的答案

#   private HttpSession session = null;  
#   
#     private List objects = null;  
#   
#     private TurnPage goPage = null;  
#   
#     private RequestDispatcher rd = null;  
#   
#     private String state = null;  
#   
#     private String pageNum = null;  
#   
#     private DimCoefPriceImpl dcpDao = null;  
#       
#     private String contextPath = null;  

这些变量,能定义到方法内部的就写到方法里面去。如果是多个现场公用的变量,那么在读取和修改该变量时需要加锁。

2008年11月10日 13:06
0 0

首先,没看到这个类继承servlet
如果这个类是servlet的,你那一堆成员变量变来变去,肯定要出错。
execute方法不能修改成员变量

2008年11月10日 11:07
0 0

举一处例子把代码贴出来吧,你给的这样的信息不能判断问题所在。

2008年11月05日 18:48
0 0

没代码只能猜一下了
servlet是并发访问的,如果你有成员变量,并且在处理的时候改变了这个变量,就会引起并发访问的问题

2008年11月05日 17:52

相关推荐

    提高IIS的并发访问量,达到十万的并发

    提高 IIS 的并发访问量达到十万的并发 IIS(Internet Information Services)是微软推出的 Web 服务器,性能较之前有很大的提升。但是,IIS 的默认设置并不适合高并发的请求。为了提高 IIS 的并发访问量,达到十万...

    模拟高并发访问

    在IT行业中,高并发访问是网站和应用程序设计中不可或缺的一部分,尤其对于大型互联网服务来说,如何有效处理大量的并发请求是一项关键技术挑战。本话题将聚焦于如何利用PHP自带的函数进行批处理URL访问,以模拟高...

    优化nginx大并发——轻松应对上万并发访问

    在现代互联网服务中,高并发访问处理能力是衡量一个Web服务器性能的关键因素之一。Nginx作为一款广泛应用的反向代理和负载均衡服务器,其高效的性能和低资源消耗使其成为处理高并发场景的首选。本文将详细探讨如何...

    阿里云实验录屏:高并发访问时流量分发和会话保持的实现

    阿里云实验录屏:高并发访问时流量分发和会话保持的实现

    java统计高并发首页访问量,记录客户登录信息

    在Java开发中,统计高并发环境下首页访问量并记录客户登录信息是一项常见的需求,这涉及到系统性能优化、数据持久化以及并发控制等多个方面。在这个项目中,开发框架选择了Spring,这是一个广泛使用的Java企业级应用...

    http并发访问 java源码

    当我们需要从服务器获取大量数据或者执行批量操作时,并发访问能够显著减少整体的等待时间。本项目提供了一个用Java语言实现的HTTP并发访问模拟工具,名为HttpClient。 HttpClient是一个流行的Java库,由Apache软件...

    大并发量访问架构分析

    ### 大并发量访问架构分析 #### 一、系统并发访问量的等级 在信息系统开发过程中,确保数据核心的安全性和高效性是至关重要的技术考量。为了实现这一目标,需要科学地管理和组织客户连接以及数据库连接,并构建...

    redis百万并发访问数据库测试

    由于其数据结构丰富、响应速度快,处理高并发访问能力出色,因此在互联网行业中广泛应用于解决大数据量、高访问频率的问题。 在"redis百万并发访问数据库测试"中,我们关注的核心知识点主要包括以下几个方面: 1. ...

    基于分布式B树编译的高效并发访问控制算法.pdf

    总之,黄正鹏提出的基于分布式B树编译的高效并发访问控制算法,为云计算环境下的云存储系统提供了一个创新的解决方案,它不仅提高了数据访问的效率,也保证了数据的安全性和系统的稳定性。随着云计算技术的不断发展...

    ORACLE数据库并发访问控制机制及访问冲突的解决方法.pdf

    在介绍ORACLE数据库并发访问控制机制及访问冲突的解决方法之前,首先需要了解ORACLE数据库的基础知识。作为全球知名的关系型数据库产品,ORACLE数据库具备出色的数据库管理能力、超强的稳定性和良好的并发控制机制,...

    TSS并发访问性能分析.docx

    《TSS并发访问性能分析》 在信息技术领域,TSS(Trusted Service System,可信服务系统)是一个关键组件,用于确保安全性和隐私性。在多线程或并发环境下,为了保证数据的一致性和完整性,TSS并发访问方案采用了C++...

    Mongodb的并发访问性能测试的java客户端

    在这个场景中,我们关注的是一个Java客户端,它被设计用于并发访问MongoDB数据库并进行性能测试。这个客户端涵盖了三个主要操作:查询、修改和插入,这些都是数据库操作中的基本且重要的功能。 首先,让我们深入...

    计算并发访问数据库的执行时间

    在IT领域,尤其是在Java开发中,处理数据库并发访问是一个关键环节,特别是在高负载的应用系统中。本主题将深入探讨如何计算并发访问数据库的执行时间,以及如何衡量每个SQL语句的性能。我们将主要关注Java、DB2...

    php 使用redis锁限制并发访问类

    在PHP开发中,当面临高并发访问同一资源的情况时,为避免数据冲突和不一致,我们需要采取并发控制策略。一种常见的方法是使用分布式锁,这里我们关注的是利用Redis实现的锁。Redis是一种高效的键值存储系统,支持...

    关于并发的书籍

    千万级规模高性能、高并发的网络架构经验分享;亿级流量网站架构核心技术,并发编程经典实例

    IIS并发数测试,IIS并发数测试压力测试

    1. **并发用户模拟**:测试工具如httptest.exe可以模拟多个并发用户同时访问服务器,以观察IIS在不同并发量下的响应时间、吞吐量和错误率。 2. **性能指标**:主要关注CPU使用率、内存占用、网络带宽消耗以及磁盘I/...

    Http服务器并发访问压力测试工具(修正版,免积分)

    因为自己需要写一个Http服务器,不知道能接受多少并发和性能,于是自己写了一个简单的Http Post/Get并发访问测试软件。 项目是基于.Net Framework4 C#开发的,所以运行设备需事先安装该环境,也就40M,自己百度一下...

    用c实现的并发式访问

    用c实现的并发式访问(信号量控制)的代码,模拟售票系统

    帆软7.0.4并发补丁

    【帆软7.0.4并发补丁】是一款针对帆软报表软件FineReport 7.0.4版本的优化工具,其主要目的是解决在多用户同时访问时可能出现的并发访问限制问题。在企业环境中,特别是在大数据量处理和高并发访问的情况下,系统的...

Global site tag (gtag.js) - Google Analytics