powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с сессиями
13 сообщений из 13, страница 1 из 1
Проблема с сессиями
    #33065748
Oscar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
У меня серьезные (!!!) проблема с сессиями.
Короче при переходе на другой файл JSP у меня возникает ошибка.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
exception 

org.apache.jasper.JasperException: java.lang.ClassCastException
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java: 370 )
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java: 291 )
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java: 241 )
	javax.servlet.http.HttpServlet.service(HttpServlet.java: 802 )
	org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java: 693 )
	org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java: 660 )
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java: 808 )
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java: 781 )
	org.apache.jsp.dbsearch_jsp._jspService(org.apache.jsp.dbsearch_jsp: 471 )
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java: 97 )
	javax.servlet.http.HttpServlet.service(HttpServlet.java: 802 )
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java: 322 )
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java: 291 )
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java: 241 )
	javax.servlet.http.HttpServlet.service(HttpServlet.java: 802 )


root cause 

java.lang.ClassCastException: java.lang.ClassCastException
	org.apache.jsp.errorpage_jsp._jspService(org.apache.jsp.errorpage_jsp: 89 )
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java: 97 )
	javax.servlet.http.HttpServlet.service(HttpServlet.java: 802 )
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java: 322 )
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java: 291 )
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java: 241 )
	javax.servlet.http.HttpServlet.service(HttpServlet.java: 802 )
	org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java: 693 )
	org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java: 660 )
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java: 808 )
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java: 781 )
	org.apache.jsp.dbsearch_jsp._jspService(org.apache.jsp.dbsearch_jsp: 471 )
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java: 97 )
	javax.servlet.http.HttpServlet.service(HttpServlet.java: 802 )
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java: 322 )
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java: 291 )
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java: 241 )
	javax.servlet.http.HttpServlet.service(HttpServlet.java: 802 )
То есть при переходе по ссылке из main.jsp в dbsearch.jsp (and vice versa). Используемый код сессий следующий.
Код: plaintext
1.
2.
3.
4.
5.
HttpSession appsession = request.getSession();
EmployeeList EmpList = (EmployeeList) appsession.getAttribute("selectedEmp");  
 if  (EmpList ==  null ) {
	EmpList =  new  EmployeeList();  
	appsession.setAttribute("selectedEmp", EmpList); 
}; 
Что я делаю не так? Спасибо заранее!
...
Рейтинг: 0 / 0
Проблема с сессиями
    #33065771
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
EmployeeList EmpList = (EmployeeList) appsession.getAttribute("selectedEmp");  

похоже в сессии уже лежит объект другого класса с ключом selectedEmp

...точка с запятой после операторных скобок не нужна
...
Рейтинг: 0 / 0
Проблема с сессиями
    #33065780
Oscar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pitbull terrier[src java]EmployeeList EmpList = (EmployeeList)
похоже в сессии уже лежит объект другого класса с ключом selectedEmp

Спасибо за ответ. Я уверен, что используются объекты одного класса.
...
Рейтинг: 0 / 0
Проблема с сессиями
    #33065797
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм
вываливай целиком dbsearch.jsp, поглядим
...
Рейтинг: 0 / 0
Проблема с сессиями
    #33065820
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oscar Я уверен, что используются объекты одного класса.
Так проверь :))
Код: plaintext
1.
2.
3.
4.
5.
Object o = appsession.getAttribute("selectedEmp");
 if (o != null ) {
   log(o.getClass().getName()+":"+(o  instanceof  EmployeeList));
}
EmployeeList EmpList = (EmployeeList) o;  
...
Рейтинг: 0 / 0
Проблема с сессиями
    #33066023
Oscar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pitbull terrierхм
вываливай целиком dbsearch.jsp, поглядим
Спасибо далее идет код из dbsearch.jsp

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
<%
	request.setCharacterEncoding("windows-1251");
	String action = request.getParameter("action"); 
	String id = request.getParameter("id"); 
	
	HttpSession appsession = request.getSession();
	EmployeeList EmpList = (EmployeeList) appsession.getAttribute("selectedEmp");  
	 if  (EmpList ==  null ) {
		EmpList =  new  EmployeeList();  
		appsession.setAttribute("selectedEmp", EmpList); 
	} 

	String[] checks = request.getParameterValues("checkbox"); 

	StringTokenizer ST =  null ;  
	Employee temp =  null ; 
	 int  i; 

	 if  (action !=  null ) {
		 if  (action.equals("remove") && id !=  null )
				EmpList.removeEmployee(Integer.valueOf(request.getParameter("id")));
		 if  (action.equals("add"))  
				 if  (checks!= null ) 
				 for  (i= 0 ; i<checks.length; i++) {
					ST =  new  StringTokenizer(checks[i], "|", false); 
					 if  (ST.hasMoreTokens()) {
						temp =  new  Employee(Integer.valueOf(ST.nextToken()), ST.nextToken()); 
						EmpList.addEmployee(temp); 
					}
				}
		 if  (action.equals("removeAll")) EmpList.removeAll(); 		
	}

	ResultSet RS =  null ; 
	 boolean 	RShasData = false;
	StringBuffer SB =  new  StringBuffer("");  

	 if  (request.getParameter("searchFor") !=  null ) {
		 int  pos =  1 ; 
		SB =  new  StringBuffer(
		"SELECT id_column, ID, kgtu.get_resource_name (id_column, ID) was_found "+ 
				"FROM kgtu.fast_find " +
				"WHERE is_web = 1 AND id_column = 'id_emp'");
		ST =  new  StringTokenizer(request.getParameter("searchFor")," ",false); 
		 while  (ST.hasMoreTokens()) {
			SB.append(" AND content LIKE UPPER('%"+escapeSingleQuotes(ST.nextToken())+"%')"); 
		};
		SB.append(" ORDER BY id_column DESC, was_found"); 
		RS = SQLQuery(SB.toString(), ConnRecord); 
		RShasData = RS.next(); 
	} 

%>
...
Рейтинг: 0 / 0
Проблема с сессиями
    #33066029
Oscar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня также подключается (include) файл functions.jsp в котором находятся несколько функций такие как например SQLQuery(String Query, Connection Conn). И еще в нем объявлены 2 класса, это Employee и EmployeeList (за основу которого взят вектор). К сожалению я незнаю как еще можно делать, я не научился пока использовать servlet'ы, хотя с ними наверное было бы правильней. Помогите пожалуста решить с сессиями! Я ваще уже незнаю где рыть.
...
Рейтинг: 0 / 0
Проблема с сессиями
    #33066168
Oscar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может это из-за того что dbsearch открывается в новом окне??
...
Рейтинг: 0 / 0
Проблема с сессиями
    #33066252
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OscarУ меня также подключается (include) файл functions.jsp в котором находятся несколько функций такие как например SQLQuery(String Query, Connection Conn). И еще в нем объявлены 2 класса, это Employee и EmployeeList (за основу которого взят вектор).
Вот! Вот здесь собака порылась! :)
После включения functions.jsp в main.jsp и dbsearch.jsp, перегонки их Tomcat'ом в Java файл и компиляции получаются два разных класса EmployeeList : main_jsp.EmployeeList и dbsearch_jsp.EmployeeList.
Что делать:
1. Код из functions.jsp вынести в отедльные java файлы: Employee.java, EmployeeList.java.
2. В этих файлах классы объявить как public.
3. В этих файлах указать пакет, например package ru.sql.oscar; :)
4. Откомпилировать эти классы
5. Положить Employee.class, EmployeeList.class в имя-приложения/WEB-INF/classes/имя-пакета (т.е. например, myapp/WEB-INF/classes/ru/sql/oscar ).
6. В main.jsp и dbsearch.jsp импортировать классы ru.sql.oscar.Employee, ru.sql.oscar.EmployeeList

Должно помочь :)
...
Рейтинг: 0 / 0
Проблема с сессиями
    #33066556
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лихо сюжет закручен
:)
...
Рейтинг: 0 / 0
Проблема с сессиями
    #33066749
Oscar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Вам за ответы! Сейчас буду переделывать!
...
Рейтинг: 0 / 0
Проблема с сессиями
    #33066751
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всякие там if и for еще можно в jsp стерпеть, но чтобы там еще и классы объявлять !!!! Ай ай ай.
...
Рейтинг: 0 / 0
Проблема с сессиями
    #33068778
Oscar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XM ,
Спасибо Вам за помощь! Я вчера сделал как Вы сказали и все заработало. Это последнее, что я мог бы заподозрить. )) Сколько бессонных ночей, сколько пропущенных пар, зачетов (у меня сейчас сессия), :) ... Спасибо
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с сессиями
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]