LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 785|回复: 8

无法理解的现象

[复制链接]
发表于 2005-4-28 00:26:57 | 显示全部楼层 |阅读模式
先贴出来代码
这个是ask.jsp

  1. <%@page import= "java.lang.Number"%>
  2. <html>
  3. <head>
  4. <title></title>
  5. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  6. </head>

  7. <body>
  8. <%
  9. String to=request.getParameter("saidTo");
  10. String nick=request.getParameter("nick");
  11. request.getSession(true);
  12. session.setAttribute("to",to);
  13. if(nick!=null)
  14. {
  15.     session.setAttribute("nick",nick);
  16.     session.setAttribute("idInPage",new Integer(0));
  17.     session.setAttribute("currNoteId",new Integer(0));
  18.     session.setAttribute("idInPage",new Integer(0));


  19.     response.sendRedirect("sender.jsp");
  20. }
  21. else
  22. {
  23.     //该处需要导向err page
  24. }
  25. %>
  26. 请输入用户名
  27. <form action="ask.jsp" method="post">
  28. <table border=0>
  29. <tr><td>
  30. <input type="text" name="nick">
  31. </td></tr>
  32. <tr><td>
  33. <input type="submit" name="submit" value="ok">
  34. </td></tr>
  35. </table>
  36. </body>
  37. </html>
复制代码


这个是sender.jsp

  1. <html>
  2. <head>
  3. <title></title>
  4. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  5. </head>
  6. <body>
  7. <jsp:useBean class= "db.link" id="dbwork" scope="page"/>
  8. <%
  9. String note=request.getParameter("note");
  10. String to=(String)session.getAttribute("to");
  11. out.print("saidTo="+to);
  12. String nick=(String)session.getAttribute("nick");
  13. out.print("nick="+nick);
  14. String sessionId=(String)session.getId();
  15. if(note!=null)
  16. {
  17.     try
  18.     {
  19.         dbwork.executeUpdate("insert into chatlist(sessionId,note,saidTo) values('"+sessionId+"','"+note+"','"+to+"')");
  20.     }
  21.     catch(Exception e)
  22.     {
  23.         out.print("sender err");
  24.     }
  25. }
  26. %>


  27. <form method="post" action="sender.jsp">
  28. <input type="text" name="note">
  29. <input type="submit" value="发送">
  30. </form>
  31. </body>
  32. </html>
复制代码

ask.jsp输入用户名之后,sendRedirect到sender.jsp,现在比较奇怪的现象是,ask.jsp在session中增加了nick和to两个参数.参数to是另一个session的ID,比方说像这样“4E59C67F1E0943F4DBD5B8390912BE9E”一个字符串。sendRedirect到sender.jsp之后,session.getAttribute("nick")时nick仍然存在,但是session.getAttribute("to")时to却是null。
如果直接在ask.jsp中session.getAttribute("to")是能够找到to的

我快要晕倒了。。。。 :confused:
发表于 2005-4-28 10:32:36 | 显示全部楼层
String to=request.getParameter("saidTo"); saidTo哪里来的 估计这里就是null了
你的form根本就没有提交这个参数
<input type="hidden" name="saidTo" value="<%=to%>">就可以了
我多句嘴这种问题不该问
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-28 13:14:00 | 显示全部楼层
saidTO是index.jsp页面中这一句提交的
out.print("<a href='ask.jsp?saidTo="+id+"'>"+nick+" </a>");
  1. <%@page import= "java.sql.*"%>
  2. <%@page import= "java.lang.Number"%>
  3. <html>
  4. <head>
  5. <title></title>
  6. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  7. </head>

  8. <body>
  9. <jsp:useBean class="db.link" scope="page" id="dbwork"/>
  10. <%
  11. String nick=null;
  12. String id=null;
  13. ResultSet       rsOnline=null;
  14. try
  15. {
  16.     rsOnline=dbwork.executeQuery("select * from onlineuser");
  17. }
  18. catch(Exception e)
  19. {
  20. }
  21. if(rsOnline.next())
  22. {
  23.     out.print("当前在线:");
  24.     do
  25.     {
  26.         nick=rsOnline.getString("nick");
  27.         id=rsOnline.getString("sessionId");
  28.         if(nick!=null)
  29.         {
  30.             out.print("<a href='ask.jsp?saidTo="+id+"'>"+nick+" </a>");
  31.         }
  32.     }while(rsOnline.next());
  33. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-4-28 13:50:10 | 显示全部楼层
你连最基础的还没有搞明白 index.jsp提交的只在 他自己的request中有效。
<form method="post" action="sender.jsp">
<input type="text" name="note">
<input type="submit" value="发送">
</form>
</body>
</html>
你在这里 提交后他就没有了。这是最基本的知识了。自己好好学学
回复 支持 反对

使用道具 举报

发表于 2005-4-28 13:55:28 | 显示全部楼层
抱歉我脾气不好但是 这个是最基本的东西了。我不知道你在做什么但是我是在浪费时间。
回复 支持 反对

使用道具 举报

发表于 2005-4-28 13:58:34 | 显示全部楼层
我说句实话如果一个职业程序员的水平到这个地步我真的没有话说了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-28 14:54:15 | 显示全部楼层
多谢,呵呵,我只看过1星期的jsp书,当然不会那么熟悉
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-28 15:30:28 | 显示全部楼层
Post by tong0711
String to=request.getParameter("saidTo"); saidTo哪里来的 估计这里就是null了
你的form根本就没有提交这个参数
<input type="hidden" name="saidTo" value="<%=to%>">就可以了
我多句嘴这种问题不该问


终于看明白了,原来我的ask.jsp运行了两次,第一次已经提交了to,第二次提交的时候用null把to覆盖,我可能没有把过程说清楚,不好意思,呵呵

可是你刚开是这么说我没看明白
回复 支持 反对

使用道具 举报

发表于 2005-4-28 15:48:03 | 显示全部楼层
我脾气比较暴躁
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表