主题:一个简单的聊天室登陆界面出错!
zhangheng77
[专家分:5510] 发布于 2007-01-19 15:53:00
两个jsp页面
login.jsp chatroom.jsp
第一个用户a进入,显示没问题,现在聊天室里有1 位访问者 现在有访问者分别是: a,
第2个用户b,进入,就会显示 现在聊天室里有1 位访问者 现在有访问者分别是: b,(第一个a没了)
第三个c,就会显示 现在聊天室里有2 位访问者 现在有访问者分别是: b,c
后面都没问题,就是第一个显示的a没了,是不是初始化哪里有问题啊
login.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%--
The taglib directive below imports the JSTL library. If you uncomment it,
you must also add the JSTL library to the project. The Add Library... action
on Libraries node in Projects view can be used to add the JSTL 1.1 library.
--%>
<%--
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
--%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>欢迎进入任你聊聊天室</h1>
<form name="login" method="post" action="chatroom.jsp" accept-charset="GB2312">
<input type="txt" name=name value="">
<input type="radio" name=sex value="先生"> 男
<input type="radio" name=sex value="女士"> 女
<input type="submit" name=submit value="登陆">
<input type="reset" name=reset value="取消">
</form>
</body>
</html>
///////////////////////////////
chatroom.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="GB2312"%>
<%@page import="java.util.Calendar"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>welcome</title>
</head>
<body>
<%! int count=0;
Object talk=null;
int i=1;%>
<%
String iStr=String.valueOf(i);
String countStr=(String)application.getAttribute("count");
if (countStr==null)
application.setAttribute("count","1");
else {
count+=1;
application.setAttribute("count",String.valueOf(count));}
String talkStr=(String)application.getAttribute("talk");
if (talkStr==null)
application.setAttribute("talk","talk");
else {
}
%>
现在聊天室里有<%= count %> 位访问者
<% i=count;
request.setCharacterEncoding("UTF-8");
String name=(String)request.getParameter("name");
String sex=(String)request.getParameter("sex");
application.setAttribute("talk"+i,name);
%>
<%for (int j=1;j<=count;j++)
{%>
现在有访问者分别是:<%= application.getAttribute("talk"+j) %>,
<%} %>
<% Calendar cal=Calendar.getInstance();
String yr= String.valueOf(cal.get(Calendar.YEAR));
String mon=String.valueOf(cal.get(Calendar.MONTH)+1);
String dat=String.valueOf(cal.get(Calendar.DATE));
String tim=yr+"/"+mon+"/"+dat;
%>
<% if ( sex!=null) {
out.println("<h1>欢迎 "+name+sex+"光临 !"+tim +"</h1>"); %>
<% }else {%>
<h1>欢迎 <%= name %> 光临 !<%= tim %></h1><%} %>
<%-- application.setAttribute("talk",name)--%>
</body>
</html>
最后更新于:2007-01-19 16:00:00
回复列表 (共10个回复)
沙发
yexin218 [专家分:4070] 发布于 2007-01-19 18:50:00
<%@page contentType="text/html"%>
<%@page pageEncoding="GB2312"%>
<%@page import="java.util.Calendar"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>welcome</title>
</head>
<body>
<%! int count=0;
Object talk=null;
int i=0;%>
<%
String iStr=String.valueOf(i);
//String countStr= (String)application.getAttribute("count");
count+=1;
application.setAttribute("count",String.valueOf(count));
String talkStr=(String)application.getAttribute("talk");
if (talkStr==null)
application.setAttribute("talk","talk");
else {
}
%>
现在聊天室里有<%= count %> 位访问者
<% i=count;
request.setCharacterEncoding("UTF-8");
String name=(String)request.getParameter("name");
String sex=(String)request.getParameter("sex");
application.setAttribute("talk"+i,name);
%>
<%for (int j=1;j<=count;j++)
{%>
现在有访问者分别是:<%= application.getAttribute("talk"+j) %>,
<%} %>
<% Calendar cal=Calendar.getInstance();
String yr= String.valueOf(cal.get(Calendar.YEAR));
String mon=String.valueOf(cal.get(Calendar.MONTH)+1);
String dat=String.valueOf(cal.get(Calendar.DATE));
String tim=yr+"/"+mon+"/"+dat;
%>
<% if ( sex!=null) {
out.println("<h1>欢迎 "+name+sex+"光临 !"+tim +"</h1>"); %>
<% }else {%>
<h1>欢迎 <%= name %> 光临 !<%= tim %></h1><%} %>
<%-- application.setAttribute("talk",name)--%>
</body>
</html>
改了一下,可以跑,你再看看...
现在聊天室里有1 位访问者 现在有访问者分别是:dsfds,
欢迎 dsfds??光临 !2007/1/19
...
现在聊天室里有2 位访问者 现在有访问者分别是:dsfds, 现在有访问者分别是:dsewweew,
欢迎 dsewweew??光临 !2007/1/19
板凳
zhangheng77 [专家分:5510] 发布于 2007-01-19 19:13:00
好像还是那个问题哈,第一个总是显示不了,第二个老是变成了第一个。
//一个叶面中的自定义变量,也用getAttribute()?,学得不好,想问一下。
我每次打开login.jsp.就表示有一个用户登陆,所以用application对象来保存聊天室里的人数
3 楼
yexin218 [专家分:4070] 发布于 2007-01-19 19:28:00
我不知道啊,好像我只看到一个叶面中有setSttribute(..),然后如果信息在不同叶面之间传递,用getAttribute(..)来拿到前个页面设置的值。
还是那个问题啊? 怎么在我这里就可以啊?
现在聊天室里有1 位访问者 现在有访问者分别是:dsfwewe,
欢迎 dsfwewe??光临 !2007/1/19
现在聊天室里有2 位访问者 现在有访问者分别是:dsfwewe, 现在有访问者分别是:dsfds,
欢迎 dsfds??光临 !2007/1/19
我就输入两个啊!你再找资料看看,我帮不上了.
还有你这个页面,还要做好多事,防止刷新....
4 楼
zhangheng77 [专家分:5510] 发布于 2007-01-19 19:34:00
谢谢。
可能是我的浏览器这里有点问题,呵。
后面确实还有好多东西没写,我后来把这两个页面改成了5个页面。
5 楼
linxuanxu [专家分:9360] 发布于 2007-01-19 21:38:00
一点小问题,我看是疏忽了。呵呵,捡了个便宜... 呵呵~
//问题在处理页面上。
<%@page contentType="text/html"%>
<%@page pageEncoding="GB2312"%>
<%@page import="java.util.Calendar"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>welcome</title>
</head>
<body>
<%! int count=0;
Object talk=null;
int i=1;%>
<%
String iStr=String.valueOf(i);
String countStr=(String)application.getAttribute("count");
if (countStr==null)
application.setAttribute("count","1");
else {
count+=1;
application.setAttribute("count",String.valueOf(count));}
String talkStr=(String)application.getAttribute("talk");
if (talkStr==null)
application.setAttribute("talk","talk");
else {
}
%>
现在聊天室里有<%= count %> 位访问者
<% i=count;
request.setCharacterEncoding("UTF-8");
String name=(String)request.getParameter("name");
String sex=(String)request.getParameter("sex");
application.setAttribute("talk"+i,name);
%>
<%for (int j=0;j<=count;j++)
{%>
现在有访问者分别是:<%= application.getAttribute("talk"+j) %>,
<%} %>
<% Calendar cal=Calendar.getInstance();
String yr= String.valueOf(cal.get(Calendar.YEAR));
String mon=String.valueOf(cal.get(Calendar.MONTH)+1);
String dat=String.valueOf(cal.get(Calendar.DATE));
String tim=yr+"/"+mon+"/"+dat;
%>
<% if ( sex!=null) {
out.println("<h1>欢迎 "+name+sex+"光临 !"+tim +"</h1>"); %>
<% }else {%>
<h1>欢迎 <%= name %> 光临 !<%= tim %></h1><%} %>
<%-- application.setAttribute("talk",name)--%>
</body>
</html>
6 楼
linxuanxu [专家分:9360] 发布于 2007-01-19 21:45:00
我借地方问个小问题行么?
77的login.jsp页面,<%@page pageEncoding="UTF-8"%>
我的机子跑起来为什么是乱码?改成<%@page pageEncoding="gb2312"%>
才OK.请问这是为什么?
字符集没有的话,请问你们的机子都是后装的么?我的机子为什么没有。
7 楼
zhangheng77 [专家分:5510] 发布于 2007-01-19 21:49:00
[quote]我借地方问个小问题行么?
77的login.jsp页面,<%@page pageEncoding="UTF-8"%>
我的机子跑起来为什么是乱码?改成<%@page pageEncoding="gb2312"%>
才OK.请问这是为什么?
字符集没有的话,请问你们的机子都是后装的么?我的机子为什么没有。
[/quote]
我都晕了,为什么我还是那个问题,好奇怪!
我用的是netbeans,UTF-8是自动加上的,我没管,实在懒得配置那些环境了,麻烦,所以直接用了捆绑的netbeans。
8 楼
linxuanxu [专家分:9360] 发布于 2007-01-19 21:58:00
哦~不会吧?还有问题?????????不可能~
那我真没辙了!是不是,以前编译过的类文件留在缓冲里了。重新建个项目。或者直接先不用netbeans直接手动调试。不可能的!
9 楼
linxuanxu [专家分:9360] 发布于 2007-01-19 22:00:00
可能 netbean 捆绑的那个 tomcat 没停下!
我刚才又试了一遍
<%@page contentType="text/html"%>
<%@page pageEncoding="GB2312"%>
<%@page import="java.util.Calendar"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>welcome</title>
</head>
<body>
<%! int count=0;
Object talk=null;
int i=1;%>
<%
String iStr=String.valueOf(i);
String countStr=(String)application.getAttribute("count");
if (countStr==null)
application.setAttribute("count","1");
else {
count+=1;
application.setAttribute("count",String.valueOf(count));}
String talkStr=(String)application.getAttribute("talk");
if (talkStr==null)
application.setAttribute("talk","talk");
else {
}
%>
现在聊天室里有<%= count %> 位访问者
<% i=count;
request.setCharacterEncoding("UTF-8");
String name=(String)request.getParameter("name");
String sex=(String)request.getParameter("sex");
application.setAttribute("talk"+i,name);
%>
<%for (int j=0;j<=count;j++)
{%>
现在有访问者分别是:<%= application.getAttribute("talk"+j) %>,
<%} %>
<% Calendar cal=Calendar.getInstance();
String yr= String.valueOf(cal.get(Calendar.YEAR));
String mon=String.valueOf(cal.get(Calendar.MONTH)+1);
String dat=String.valueOf(cal.get(Calendar.DATE));
String tim=yr+"/"+mon+"/"+dat;
%>
<% if ( sex!=null) {
out.println("<h1>欢迎 "+name+sex+"光临 !"+tim +"</h1>"); %>
<% }else {%>
<h1>欢迎 <%= name %> 光临 !<%= tim %></h1><%} %>
<%-- application.setAttribute("talk",name)--%>
</body>
</html>
在不行,就真见鬼了!
10 楼
zhangheng77 [专家分:5510] 发布于 2007-01-20 13:04:00
谢谢各位!
我把下面的这个int count=0;去掉了,就好了,我想是不是因为int count和application.setAttribute("count","1");里的count一样的名称,编译器弄混了。
或者改为
<%! int int c=1;
Object talk=null;
int i=1;%>
application.setAttribute("count",c);这样也是没问题的
我来回复