在一个Input。jsp里定义
HttpSession session = pageContext.getSession();
out.println(session.getAttribute(Constants.PERSON_KEY));
为什么会错误? (这里 java的form里定义session。setattribute(。。))<%@ include file="taglibs.jsp" %>
<%@ page import javax.servlet.http.HttpServletResponse %>
<%@ page import javax.servlet.http.HttpSession %>
<%@ page import addressbook.Constants %>
<html:errors/>
<logic:present name="personbean" scope="request">
<h2>
<bean:write name="personbean" property="userName"/>!!<p>
</h2>
</logic:present>
<html:form action="/hello2" focus="userName">
<% out.println("43545534454");
HttpSession session = pageContext.getSession();
out.println(session.getAttribute(Constants.PERSON_KEY));
 //Constants.PERSON_KEY,
%><html:text property="userName" size="16" maxlength="16" ></html:text>"/><br>
<html:submit property="submit" value="Submit" /></html:form>

解决方案 »

  1.   

    VERE: Servlet.service() for servlet jsp threw exception
    org.apache.jasper.JasperException: /hello.jsp(13,66) attribute for %>" is not properly terminated
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:132)
    at org.apache.jasper.compiler.Parser.parseAttributeValue(Parser.java:247)
    at org.apache.jasper.compiler.Parser.parseAttribute(Parser.java:212)
    at org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:155)
    at org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1252)
    at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1467)
    at org.apache.jasper.compiler.Parser.parseBody(Parser.java:1675)
    at org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:1022)
    at org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1290)
    at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1467)
    at org.apache.jasper.compiler.Parser.parse(Parser.java:138)
    at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:216)
    at org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:154)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:315)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)
    load hello form class
    Sep 22, 2009 11:29:27 AM org.apache.catalina.core.StandardWrapperValve invoke
    SEVERE: Servlet.service() for servlet jsp threw exception
    org.apache.jasper.JasperException: /hello.jsp(2,16) equal symbol expected
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:88)
    at org.apache.jasper.compiler.Parser.parseAttribute(Parser.java:200)
    at org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:155)
    at org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:167)
    at org.apache.jasper.compiler.ParserController.getPageEncodingForJspSyntax(ParserController.java:451)
    at org.apache.jasper.compiler.ParserController.determineSyntaxAndEncoding(ParserController.java:392)
    at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:173)
    at org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:154)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:315)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)
      

  2.   

    jsp页面中可以直接使用session的,
    即直接使用session.getAttribute()都没问题。你用了下面这个与jsp隐式对象session发生重复定义错误了
    HttpSession session = pageContext.getSession(); 
      

  3.   

    楼上说的对呀! 楼主你不知道session在JSP里是隐藏属性么?直接用哦!汗
      

  4.   

    out.println(request.getSession("personbean"))
    不可以  (质疑为社么?)out.println(session.getAttribute("personbean"));成功
      

  5.   

    out.println(session.getAttribute("personbean"));
    取到的值为  null---------质疑原因 如何解决?
    <logic:present name="personbean" scope="request"> 
    <h2> 
    <bean:write name="personbean" property="userName"/>!! <p> 
    </h2> 
    </logic:present>   得到了正确的值 
      

  6.   

    scope为request能得到正确的值,在session里面是null很正常.
      

  7.   

    lxxzhy请问该用什么语句解决这个问题
    out.println(request.getSession("personbean")) 是失败拉拉!!
      

  8.   


    request.getSession().getAttribute("personbean");request对象没有getSession(String)方法
      

  9.   

    jsp下面用了
    request.getSession().getAttribute("personbean");发现还是为空???
      

  10.   

    你在action中对session加对象了吗
    request.getSession().setAttribute("personbean",对象名);
      

  11.   

    提示session can't be resolved to a type
    session session = request.getSession().setAttribute("k5456456y",pb);session 编译通不过
      

  12.   

    action代码 里 request.getSession().setAttribute("personbean",pb); 
    jsp 里  out.println(request.getSession().getAttribute("personbean"));编译运行通过
    现有新问题
    这个网页上得到文字是 addressbook.model.PersonBean@951a0很奇怪 不是我输入的文字 我输入的是bb
    <logic:present name="personbean" scope="request"> 
    <h2> 
    <bean:write name="personbean" property="userName"/>!! <p> 
    </h2> 
    </logic:present>  得到了正确的值 很奇怪
    jsp 里  out.println(request.getSession().getAttribute("personbean"));为什么会得到不合适的值
      

  13.   

    这是个set方法,不需要也不能放在 = 右边。
    Action中:public ActionForward execute(ActionMapping mapping, ActionForm form,
                        HttpServletRequest request, HttpServletResponse response) {
    request.getSession().setAttribute("k5456456y",pb); 
    }jsp页面中:
    <%
        out.println(session.getAttribute("k5456456y")); 
        out.println(request.getSession().getAttribute("k5456456y"));  
        //二者是一样的效果 
    %>
    注意,action中没有隐式对象,request是execute方法接到的参数。
    jsp页面中request和session是隐式对象,不需要声明就能使用,如果声明回出错。
      

  14.   


    改为: out.println(request.getSession().getAttribute("personbean"))就可以了
    其实直接用第二句就可以啊
      

  15.   


    out.println(objcct)方法,如果object是基本类型或者String类,回打印原信息,如果是其他类,回打印object.toString()方法返回的字符串。
    addressbook.model.PersonBean@951a0就是request.getSession().setAttribute("personbean",pb);这里的pb对象的toString()方法的而返回值,即pb.toString()=addressbook.model.PersonBean@951a0<bean:write name="personbean" property="userName"/>解析后等同于
    (addressbook.model.PersonBean)(pageContext.getAttribute("personbean")).getUserName();
    其中类型是addressbook.model.PersonBean自动找到的,如果pageContext.getAttribute("personbean")是null则依次寻找request.getAttribute("personbean")、session.getAttribute("personbean")、application.getAttribute("personbean"),找到后就停止寻找,如果找不到jsp页面回显示空或报错(具体我也忘了)。
      

  16.   

    在jsp文件究竟该如何才能得到action 的java代码的  session值action代码 里 request.getSession().setAttribute("personbean",pb);

    jsp   (目前是失败的) 
    里  out.println(request.getSession().getAttribute("personbean"));

    我直接用方法编译不能过 out.println(request.getSession().getAttribute("personbean")).getUserName();
    很困惑???
      

  17.   

    基本解决 传递的是string是ok的 如果是类不可以的在jsp定义1个类  
    在类接受这个类, 在类。方法取值
      

  18.   

    在servlet里面request.getSession在jsp直接session
      

  19.   

    out.println(request.getSession().getAttribute("personbean")).getUserName();
    把这句话改成下面这样
    out.println((addressbook.model.PersonBean)(request.getSession().getAttribute("personbean")).getUserName());session.getAttribute方法返回的Object对象,需要强制转换后才能使用。
    String类的toString方法返回的就是对象代表的字符串,所以可以直接通过out.println打印出来。普通类是不可以的