小弟在用Servlet作参数转发的时候出了问题,目标JSP无法接收到Servlet传得session的Attribute。
有效代码如下
Servlet:
session.setAttribute(AttributeName, AttributeValue);Jsp:
 <%! String UserName="";%>
 <%! String UserPassword=""; %> 
<%  UserName=(String)session.getAttribute("Name");
     UserPassword=(String)session.getAttribute("Password");
  %>
  <p>
  <%=UserName%>页面显示为null
本人估计是session没传过来Attribute。
急用,各位大虾帮忙啊!

解决方案 »

  1.   

    <%! String UserName="";%>换种方式写写看,我还没明白你的意思,程序应该没什么问题
    说具体一点,把所有的代码帖出来看看 
    (String)session.getAttribute("name");
      

  2.   

    <%
    session.setAttribute("username",username);
    %>
    --------------------------------------------------------
    <% 
    String username=(String)session.getAttribute("username");
    %>

    <% 
    String username=request.getSession().getAttribute("username");
    %>
      

  3.   

    Servlet:
    request.getSession().setAttribute(AttributeName, AttributeValue);Jsp:
     <%! String UserName="";%>
     <%! String UserPassword=""; %> 
    <%  UserName=(String)session.getAttribute("Name");
         UserPassword=(String)session.getAttribute("Password");
      %>
      <p>
      <%=UserName%>
      

  4.   

    session.setAttribute()后,然后通过resp.sendRedirect();跳转地叶面,是否能够接收到?即session.getAttribute("name")???
      

  5.   

    当然可以的啊,你再代码具体点看看
    <% 
    String username=(String)session.getAttribute("username");
    %>
    就这样看看行不行?
      

  6.   

    这个是Servlet: 
    package Controller;import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Enumeration;
    import java.util.Vector;import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;public class Controller extends HttpServlet {
    // Searching for the content matches String search
    private int findObject(Vector objVec, String search) {
    int i;
    if (objVec.equals(null) && search.equals(null)) {
    System.out.println("NullException");
    return -1;
    }
    for (i = 0; i < objVec.size(); i++) {
    if (objVec.get(i).toString().equals(search)) {
    break;
    }
    }
    return i;
    } // Get Parameter And Set Attribute
    private void CheckSetAttrProp(Vector AttributeName, Vector AttributeValue,
    HttpServletRequest req, int Counti) {
    for (int i = 0; i < Counti; i++) {
    System.out.println(i);
    System.out.println(AttributeName.get(i).toString() + "="
    + AttributeValue.get(i).toString());
    session.getServletContext().setAttribute(
    AttributeName.get(i).toString(), AttributeValue.get(i)); }
    } public void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    session = req.getSession(true);
    resp.setContentType("text/html");
    PrintWriter out = resp.getWriter();
    // Gain the parameter to Vector
    Enumeration attributeNames = req.getParameterNames();
    int i = 0;
    while (attributeNames.hasMoreElements()) {
    str_param = (String) attributeNames.nextElement().toString();
    System.out.println(str_param);
    param.add(str_param);
    str_value = req.getParameter(str_param).toString();
    System.out.println(str_value);
    value.add(str_value);
    i++;
    }
    // Get the first Keyword to know which page to sendRedirect
    String firstKey = value.get(this.findObject(this.param, "keyword"))
    .toString();
    if (firstKey.equals("Login")) {
    CheckSetAttrProp(param, value, req, i);
    out.println("System is now checking the service");
    resp
    .sendRedirect("http://localhost:8080/OnlineStore/LoginBean.jsp");
    // getServletConfig().getServletContext().getRequestDispatcher(
    // "../ROOT/LoginBean.jsp").forward(req, resp);
    } else if (firstKey.equals("Regist")) {
    CheckSetAttrProp(param, value, req, i); } else if (firstKey.equals("Search")) {
    CheckSetAttrProp(param, value, req, i);
    } else if (firstKey.equals("Mypub")) {
    CheckSetAttrProp(param, value, req, i);
    } else if (firstKey.equals("RecentScan")) {
    CheckSetAttrProp(param, value, req, i);
    } else if (firstKey.equals("Bought")) {
    CheckSetAttrProp(param, value, req, i);
    } else if (firstKey.equals("Ready2ModifyInfo")) {
    CheckSetAttrProp(param, value, req, i);
    } else if (firstKey.equals("Ready2ModifyPwd")) {
    CheckSetAttrProp(param, value, req, i);
    } else if (firstKey.equals("Fav")) {
    CheckSetAttrProp(param, value, req, i);
    } else if (firstKey.equals("Sum")) {
    CheckSetAttrProp(param, value, req, i);
    } else if (firstKey.equals("HistoryTrade")) {
    CheckSetAttrProp(param, value, req, i);
    } else if (firstKey.equals("Ready2MergeTrade")) {
    CheckSetAttrProp(param, value, req, i);
    } else if (firstKey.equals("HistoryScore")) {
    CheckSetAttrProp(param, value, req, i);
    } else if (firstKey.equals("LastComment")) {
    CheckSetAttrProp(param, value, req, i);
    } else if (firstKey.equals("MyComment")) {
    CheckSetAttrProp(param, value, req, i);
    } else {
    out.println("错误的请求 440");
    } } public void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    doGet(req, resp); } public void destroy() { } public void init(ServletConfig sc) throws ServletException { } private String str_param = ""; private Vector param = new Vector(); private String str_value = ""; private Vector value = new Vector(); private HttpSession session;
    }
    这个是Jsp:
      <% 
         String UserName=(String)session.getAttribute("Name");
         String UserPassword=(String)session.getAttribute("Password");
     out.println(UserName);
      %>
      <%= UserName%>
      

  7.   

    session.getServletContext().setAttribute(AttributeName.get(i).toString(),AttributeValue.get(i));
    你在servlet中就打印下session的值。。
    你代码看着很乱。。明天再看