2012-09-07 4 views
0

다음 코드를 사용하여 ajax를 사용하여 다른 JSP 페이지에 요청을 게시합니다. 이미 요청한 곳의 현재 페이지에 세션 변수 (stdId)가 있습니다.ajax 요청 페이지에서 세션 변수를 가져 오는 방법은 무엇입니까?

xmlhttp.open("POST","ajaxAnsRun.jsp",true); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("notId="+we+""); 

이제 ajaxAnsRun.jsp 페이지에서 다음 코드를 사용하여 세션 변수를 가져 왔습니다.

<jsp:useBean id="obj" class="homePack.home" /> 
<% 
String notId=request.getParameter("notId"); 
if(request.getSession(false).getAttribute("stdId") == null) 
    { 
     out.println("Error"); 
    } 
else 
    { 
     stdId=String.valueOf(session.getAttribute("stdId")); 
    } 

String result=""; 
result= obj.hideAnsNotify(notId,stdId); 
%> 

나는

2012-09-06 17:22:25 StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception 
org.apache.jasper.JasperException: Unable to compile class for JSP 

An error occurred at line: 2 in the jsp file: /profiles/Home/ajaxAnsRun.jsp 

Generated servlet error: 
[javac] Compiling 1 source file 

C:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\Indus\profiles\Home\ajaxAnsRun_jsp.java:66: cannot find symbol 
symbol : variable stdId 
location: class org.apache.jsp.ajaxAnsRun_jsp 
    stdId=String.valueOf(session.getAttribute("stdId")); 
    ^



An error occurred at line: 2 in the jsp file: /profiles/Home/ajaxAnsRun.jsp 

Generated servlet error: 
C:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\Indus\profiles\Home\ajaxAnsRun_jsp.java:70: cannot find symbol 
symbol : variable stdId 
location: class org.apache.jsp.ajaxAnsRun_jsp 
result= obj.hideAnsNotify(notId,stdId); 
          ^
2 errors 


at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:130) 
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:293) 
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:340) 
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:352) 
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:474) 
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:184) 
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295) 
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260) 
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) 
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) 
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) 
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) 
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) 
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) 
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) 
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386) 
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534) 
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530) 
at java.lang.Thread.run(Thread.java:619) 

BTW 바람둥이를 사용하여 메신저 내 서버에 다음과 같은 오류가 발생했습니다.

어떻게 ajaxAnsRun.jsp 페이지에서 세션 변수를 가져올 수 있습니까?

+0

@ 자얀 당신은 단지 우리가 어떤 대답을 받아 들일 수있는 최소 시간을 알고 있습니까? ?? –

답변

0

아래에 다음과 같은 문자열로 stdId을 정의합니다. notId 변수 만 선언합니다. 코드가 있어야합니다. 그런 이유로 컴파일 오류가 발생합니다.

<jsp:useBean id="obj" class="homePack.home" /> 
<% 
String notId=request.getParameter("notId"); 
String stdId = null; 
if(request.getSession(false).getAttribute("stdId") == null) 
    { 
     out.println("Error"); 
    } 
else 
    { 
     stdId=String.valueOf(session.getAttribute("stdId")); 
    } 

String result=""; 
result= obj.hideAnsNotify(notId,stdId); 
%> 
+0

감사합니다 ypu .. 나는 어리석은 실수를 저렇게 만들었습니다. –

+0

나는 이것을 알아 채지 못했고 세션 물건을 다 쓰고있었습니다. –

1

여기서 문제는 stdId이 정의되지 않았습니다. 이것이 컴파일 시간 오류를주는 이유입니다. 귀하의 코드가 ajaxAnsRun.jsp에 stdId 변수를 선언하지 않는

String stdId=String.valueOf(session.getAttribute("stdId")); 
관련 문제