Servlet中userName显示为 null

angelcm51 2009-04-16 10:35:50
TopServlet中代码段

out.println("<frameset cols='80%,*'>");
out.println("<frame src='display'>");
String usrName=request.getParameter("userName");
out.println("<frame src='userlist?name="+usrName+"'>");

浏览器一直交替显示
http://localhost:8080/talk/servlet/display和http://localhost:8080/talk/servlet/userlist?name=null
name一直为空,我点MessageServlet中的提交按钮后,name会一瞬间等于正确的账号,然后又变为null

userlist为main框架右边的页面,里面显示正常,所以userlist中的名字应该是正常获取了。可是为什么会显示userlist?name=null呢?不明白.

display为main框架左边的页面,里面message正常显示,name不能正常显示,一直显示为null

main框架下有个message框架,里面有一个输入框和提交按钮,提交后内容正常显示,名字无法正常显示
MessageServlet中主要代码

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html;charset=GB2312");
response.setCharacterEncoding("GBK");
PrintWriter out = response.getWriter();
String strMsg=null;
request.setCharacterEncoding("GBK");
strMsg=request.getParameter("message");
if (strMsg==null||strMsg.equals("")) {
displayHtml(out);
} else {
ServletContext app=getServletContext();
StringBuffer objMsg=(StringBuffer)app.getAttribute("objMessage");
if(objMsg==null){
objMsg=new StringBuffer("");
}
String UserName=request.getParameter("name");//因为UserName控制名字输出,所以
//估计问题在这里,试过将name换为userName,一样没效果,不明白为什么,一直显示为null
objMsg.append("<b>"+UserName+"说:</b>"+strMsg+"<br>");//这些是要在display中显示的
app.setAttribute("objMessage", objMsg);
displayHtml(out);
}
out.flush();
out.close();
}

public void displayHtml(PrintWriter out){
out.println("<html>");
out.println("<head><title>MessageServlet</title></head>");
out.println("<body bgcolor=\"#00ffff\" onload='javascript:frm.message.focus();'>");
out.println("<form method='post' name='frm'>");
out.println("<input type='textbox' name='message' size='40'>");
out.println("<input type='submit' value='发送'>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
}


问题就是String UserName=request.getParameter("name");获取不到名字,在display中显示为null
名字在最初的userServlet时就输入了。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html;charset=GBK");
response.setCharacterEncoding("GBK");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>UserServlet</TITLE></HEAD>");
out.println(" <BODY bgcolor=\"#ffffff\" onload='javascript:frm.userName.focus();'>");
out.println("<FORM method=post action='/talk/servlet/main'name='frm'><center>请输入您的昵称<br><input type='text' name='userName'><input type='submit' value='聊天'></center></form>");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
...全文
162 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jourqel 2009-04-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 huguang 的回复:]
你没搞明白http请求的生命周期
userName提交给了main,main并没有提交给MessageServlet
看你这个感觉比较乱
解决思路就是,main包含MessageServlet的时候,将userName再传给它
[/Quote]

顶ls的~如果嫌这样传值麻烦~那就把name存到session中~session就用来存用户名什么的~不建议都使用session来存值~
huguang 2009-04-17
  • 打赏
  • 举报
回复
你没搞明白http请求的生命周期
userName提交给了main,main并没有提交给MessageServlet
看你这个感觉比较乱
解决思路就是,main包含MessageServlet的时候,将userName再传给它

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧