Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с сессиями / 13 сообщений из 13, страница 1 из 1
15.05.2005, 12:07
    #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
15.05.2005, 13:04
    #33065771
Pitbull terrier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с сессиями
Код: plaintext
EmployeeList EmpList = (EmployeeList) appsession.getAttribute("selectedEmp");  

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

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

Спасибо за ответ. Я уверен, что используются объекты одного класса.
...
Рейтинг: 0 / 0
15.05.2005, 14:00
    #33065797
Pitbull terrier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с сессиями
хм
вываливай целиком dbsearch.jsp, поглядим
...
Рейтинг: 0 / 0
15.05.2005, 14:53
    #33065820
XM
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
15.05.2005, 21:56
    #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
15.05.2005, 22:00
    #33066029
Oscar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с сессиями
У меня также подключается (include) файл functions.jsp в котором находятся несколько функций такие как например SQLQuery(String Query, Connection Conn). И еще в нем объявлены 2 класса, это Employee и EmployeeList (за основу которого взят вектор). К сожалению я незнаю как еще можно делать, я не научился пока использовать servlet'ы, хотя с ними наверное было бы правильней. Помогите пожалуста решить с сессиями! Я ваще уже незнаю где рыть.
...
Рейтинг: 0 / 0
16.05.2005, 03:42
    #33066168
Oscar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с сессиями
Может это из-за того что dbsearch открывается в новом окне??
...
Рейтинг: 0 / 0
16.05.2005, 09:13
    #33066252
XM
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
16.05.2005, 11:17
    #33066556
Pitbull terrier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с сессиями
лихо сюжет закручен
:)
...
Рейтинг: 0 / 0
16.05.2005, 12:16
    #33066749
Oscar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с сессиями
Спасибо Вам за ответы! Сейчас буду переделывать!
...
Рейтинг: 0 / 0
16.05.2005, 12:17
    #33066751
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с сессиями
Всякие там if и for еще можно в jsp стерпеть, но чтобы там еще и классы объявлять !!!! Ай ай ай.
...
Рейтинг: 0 / 0
17.05.2005, 10:22
    #33068778
Oscar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с сессиями
XM ,
Спасибо Вам за помощь! Я вчера сделал как Вы сказали и все заработало. Это последнее, что я мог бы заподозрить. )) Сколько бессонных ночей, сколько пропущенных пар, зачетов (у меня сейчас сессия), :) ... Спасибо
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с сессиями / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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