一个小小的JSP聊天室代码问题

下面是我用JSP写的一个简单的聊天室,textarea为登陆者的发言区,能用方法得到另外一个页面登陆者的姓名,可却得不到他发言的内容(登陆者在聊天室页面发言),例:我在i... 下面是我用JSP写的一个简单的聊天室,textarea为登陆者的发言区,能用方法得到另外一个页面登陆者的姓名,可却得不到他发言的内容(登陆者在聊天室页面发言),例:我在index.jsp以zhangsan登陆,进入chat.jsp,textarea显示 zhangsan说:null,然后我在chat.jsp的text里输入"nihao",可textarea里却又在第二行显示zhangsan说:null
下面是代码:chat.jsp的代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'chat.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<%response.setIntHeader("Refresh",10); %>
</head>
<%
String name = request.getParameter("userName");
String word = request.getParameter("yourWords");
String chat = (String)application.getAttribute("chat");
if(session.getAttribute("name") == null)
{
session.setAttribute("name","");
session.setAttribute("name",session.getAttribute("name")+name);
}
if(session.getAttribute("word") == null)
{
session.setAttribute("word","");
session.setAttribute("word",session.getAttribute("word")+word);
}
%>
<body>
<textarea rows="15" cols="40" name="output">
<%
if(chat == null)
application.setAttribute("chat",session.getAttribute("name")+"说:"+session.getAttribute("word")+"\n");
else
application.setAttribute("chat",chat+session.getAttribute("name")+"说:"+session.getAttribute("word")+"\n");
out.println(application.getAttribute("chat"));
%>

</textarea><br>

你说:<br>
<form action="chat.jsp" method="post">
<input type="text" size="45" name="yourWords"><br>
<input type="submit" value="发送"/>
</form>

</body>
</html>
ukong,你的解决方案的确解决了一部分问题,可这是100分啊,你还是解决的完美一些哈!
展开
 我来答
ukong_
推荐于2016-07-25 · TA获得超过396个赞
知道小有建树答主
回答量:253
采纳率:0%
帮助的人:0
展开全部
1.登陆界面
<%@ page language="java" pageEncoding="gb2312"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>用户登陆</title>
</head>

<body>
<form action="chart.jsp" method="post">
帐号<input type="text" name="userName"/>
口令<input type="password" name="passwd"/>
<input type="submit" value="确认"/>
</form>
</body>
</html>
2.
<%@ page contentType="text/html; charset=gb2312" import="
com.san.db.UserId,
java.util.*"

%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>My JSP 'chart.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<%response.setIntHeader("Refresh",10); %>
</head>

<body>

<%
/**
程序目的:模拟一个聊天室程序
测试方法,请在本机上打开3个IE窗口,从登陆界面进去。再发言.
反应可能不是很快,你多等一会。我已经测试过了.
**/
try{
//获取从用户登陆界面传递过来的用户
String loginname = request.getParameter("userName");
//获取用户的sessionId
String userSessionId=(String)session.getAttribute("userSessionId");
//根据sessionId取出用户帐号
String name = (String)session.getAttribute(userSessionId+"user");
//如果loginnmae!=null,表明用户初次登陆
if(loginname!=null)
{ //初次登陆,创造一个sessionid,把系统当前时间作为sessionId
userSessionId=System.currentTimeMillis()+"";
session.setAttribute("userSessionId",userSessionId);
//存储帐号在session中
session.setAttribute(userSessionId+"user",loginname);

}
//获取用户发言
String word = request.getParameter("yourWords");
//从application中所有用户历史发言
String chart = (String)application.getAttribute("chart");
//当发言到一定长度就清空,以免耗尽内存
if(chart!=null&&chart.length()>10000) application.setAttribute("chart","");
if(name!=null&&word!=null){
//组装用户在屏幕上发言语句:
String userword=new Date()+" ["+name+"]说:"+word;
//将用户发言存入历史记录中
chart+=userword+"\r\n";
application.setAttribute("chart",chart);
}

%>
<textarea rows="15" cols="40" name="output" style="width:100%">
<% if(name!=null) out.print(chart);
%>
</textarea>
<% if(name!=null) out.print(name+"说");%>
<form action="" method="post">
<input type="text" size="45" name="yourWords">
<input type="hidden" name="chart"><br>
<input type="submit" value="发送"/>
</form>
</body>
</html>

<%}catch(Exception e){
e.printStackTrace();
}%>
Emily122228
2007-12-22
知道答主
回答量:78
采纳率:0%
帮助的人:2.8万
展开全部
public class SayServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");

//得到话
String say = request.getParameter("say");
//创建servletcontext
ServletContext sc = this.getServletContext();
//取钱包
List says = (List)sc.getAttribute("says");
//不存在就创建
if (says==null)
says= new ArrayList();
//把说的话放到list
String name = (String)request.getSession().getAttribute("name");
Date d=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String haha=sdf.format(d);
//PrintWriter out=response.getWriter();
//out.print(haha);

says.add(0,name+"说:"+say+"<br>"+"发言时间为:"+haha+"<hr>");
//list保存sc
sc.setAttribute("says", says);
//返回
response.sendRedirect("left_bottom.jsp");

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2023-05-11
展开全部

我无法确定您具体遇到了哪些问题。请提供更多详细信息和代码片段,以便我可以为您提供更好的帮助。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式