String  userid = (String) session.getAttribute("userid");
out.print("userid="+userid);
出错了,是这样才对
String  userid = (String) session.getAttribute("username");
out.prinln("userid="+userid);

解决方案 »

  1.   

    不好意思,刚才贴的时候太着急:tree.jsp里面用的就是:
             String  username = (String) session.getAttribute("username");
    out.print("username="+username);
     可是取出来的却是null ?!
    我把struts的配置文件struts_config.xml里面配置那个Action对应的forward的jsp该为指向tree.jsp,再执行时就可以输出来。难道Action里定义的session,只能再其forward指定的jsp里面用吗?
      

  2.   

    楼主还没解决这一问题?
    我在2003-8-26新版的JSPStudio(下载地址:ftp://210.36.70.51)上试了你的问题,如下做法没有问题:
        //HttpSession session = request.getSession();这行不要用
        session.setAttribute("username", username);mainframe.jsp中用(通过forward转发)
    <%
     String  userid = (String) session.getAttribute("username");
    out.print(userid); 
    %>
    没问题。
    tree.jsp中用(没有forward转发,另行开发的文件)<%
     String  userid = (String) session.getAttribute("username");
    out.print(userid); 
    %>
    也没问题。你不用下面这行再试一下:
    //HttpSession session = request.getSession();这行不要用如还有问题,请下载JSPStruts试一下。
      

  3.   

    楼主我试过了,按你方法是没有错误的,你仔细检查一下你的程序
    to:kui(kui)
    你的方法是肯定错误的,在action里面如果不声明HttpSession,哪里来session句柄作操作,你是jsp页面做的试验吧,只有jsp才把session做为内置对象的
      

  4.   

    楼主,你的request时那来的?在action里的perform方法默认是:public ActionForward perform(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
    你是不是自己定义了一个request?还是把perform方法改成:public ActionForward perform(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response),如果是这样的话就不会错呀!如果是自己定义的就有问题了,因为request.getSession()是获取现有的session,如果没有就建一个新的,会不会是这个情况?
      

  5.   

    楼主请试一下我的程序,包含有HttpSession session = request.getSession();
    lykAction.java:package  org.apache.struts.webapp.example;import java.lang.reflect.InvocationTargetException;
    import java.util.Locale;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.commons.beanutils.PropertyUtils;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionError;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionServlet;
    import org.apache.struts.util.ModuleException;
    import org.apache.struts.util.MessageResources;public final class lykAction extends Action 
    {
        // 变量定义:
        private Log log = LogFactory.getLog("org.apache.struts.webapp.Example");    //函数定义:
        public ActionForward execute(ActionMapping mapping,
     ActionForm form,
     HttpServletRequest request,
     HttpServletResponse response)
    throws Exception 
        {
    // Extract attributes and parameters we will need
    Locale locale = getLocale(request);
    MessageResources messages = getResources(request);
    HttpSession session = request.getSession();
    lykForm myform = (lykForm) form;
    String variable1= myform.getMybeanvariable1();
            try 
            {
               session.setAttribute("username", variable1);              if(variable1.trim().equals(""))
                  {    
                                          return new ActionForward(mapping.getInput());
                  }
                 //其它代码
                 return (mapping.findForward("success"));
            } 
            catch (Exception e) 
            {
                //log.error("出错", e);
                //log.trace("出错");
                throw new RuntimeException(e.getMessage());
            }
        }
    }lykForm.java:package  org.apache.struts.webapp.example;import javax.servlet.http.HttpServletRequest;
    import org.apache.struts.action.ActionError;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;public final class lykForm extends ActionForm  
    {
              private String mybeanvariable1;    //myfiledata;        public String getMybeanvariable1()
            {
                return (this.mybeanvariable1);
            }        public void setMybeanvariable1(String mybeanvariable1)
            {
                this.mybeanvariable1=mybeanvariable1;
            }}
    <%@ page contentType="text/html;charset=GB2312" language="java" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>lyk.jsp:
    <html:html>
    <head>
    <title></title>
    <html:base/>
    </head>
    <body bgcolor="white">
    <html:form  action="/lykAction.do"    method="post">
          <html:text property="mybeanvariable1" />
          <html:submit value="提交" />
          <html:reset value="重写" />
      </html:form>
    </body>
    </html:html><%@ page contentType="text/html;charset=GB2312" language="java" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    lykout.jsp
    <html:html >
    <head>
    <title>
    </title>
    <META http-equiv=Content-Type content="text/html; charset=GB18030">
    <META content="MSHTML 6.00.3790.0" name=GENERATOR>
    </head>
    <body bgColor=white>
    <html:base/>  <html:base/>  
     <bean:write 
    property="mybeanvariable1" name="lykForm" />
    <%
     String  userid = (String) session.getAttribute("username");
    out.print(userid); 
    %>
    </body>
    </html:html >
    lykout2.jsp
    <%@ page contentType="text/html;charset=GB2312" language="java" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %><html:html >
    <head>
    <title>
    </title>
    <META http-equiv=Content-Type content="text/html; charset=GB18030">
    <META content="MSHTML 6.00.3790.0" name=GENERATOR>
    </head>
    <body bgColor=white>
    <html:base/>  <html:base/>  <bean:write 
    property="mybeanvariable1" name="lyk1Form" />
    <%
     String  userid = (String) session.getAttribute("username");
    out.print(userid); 
    %>
    </body>
    </html:html >
    xml:<form-bean  name="lykForm"     
                         type="org.apache.struts.webapp.example.lykForm"      />--------------------------------------------------------------------------------
    <action  path="/lykAction"    
                    type="org.apache.struts.webapp.example.lykAction"    
                        name="lykForm"        
                scope="session"
                    input="/lyk.jsp">
           <forward name="success"    path="/lykOut.jsp"   /></action>
      

  6.   

    这是JSPStudio自动产生的,“HttpSession session = request.getSession();”也是自动产生的,我没注意看,就说错了。
    上述改一下,去掉“<bean:write 
    property="mybeanvariable1" name="lyk1Form" />
    ”:
    lykout2.jsp
    <%@ page contentType="text/html;charset=GB2312" language="java" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %><html:html >
    <head>
    <title>
    </title>
    <META http-equiv=Content-Type content="text/html; charset=GB18030">
    <META content="MSHTML 6.00.3790.0" name=GENERATOR>
    </head>
    <body bgColor=white>
    <html:base/>  <html:base/>  
    <%
     String  userid = (String) session.getAttribute("username");
    out.print(userid); 
    %>
    </body>
    </html:html >我试了几个例子,都没问题。
      

  7.   

    多谢,: kui(kui) 兄。
    你的例子我在项目中测试了,运行后lyk.jsp可以出来,lykout.jsp可以打印出来,但是在lykout2.jsp仍然打印不出来!