Model
2的规范来实现的。简而雹竖正言之,就是我们将绝大多数处理用户请求的任务交给Servlet来执行,而我们的JSP仅仅是用来完成显示。
在阅读我们的程序之前,你最好已经具备了Java和JSP的基础知识,但是如果你对纤芦Java和JSP不是太熟悉,你也可以直接阅读我们的程序,对于每一项涉及到Java和JSP的内容,在我们的程序中第一次出现时,我源悔们会作简要的说明。
当然,你还是需要阅读其他的相关教程,因为我们的这篇文章毕竟不是一个教程。
此外,我们的聊天室是挂接在另一个应用系统上的,对于其中一些特殊的命令方法,你可以不必太介意。
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/htmlcharset=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/htmlcharset=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/htmlcharset=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()
}%>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)