实验4 内置对象使用

一、实验目的

1、掌握各个内置对象的含义;

2、理解并熟练应用sessionapplication对象。

二、实验内容

1、设计聊天室,在聊天室中,需要通过JSP内置对象application来实时保存特定数量的当前聊天信息。

聊天室的设计包括:用户进行登录,选择聊天室,进行聊天,退出聊天室。在聊天室中,用户只需输入一个用户名就可以进入聊天室,但是如果当前有人在使用该用户名,那么就必须换一个唯一的用户名。

    具体要求:

n 用户登录成功后,程序会要求用户选择聊天室。可以不设置用户自行建立聊天室的功能,而且在聊天中途不能从一个聊天室切换到另一个聊天室。

n 进入聊天室后,用户可以从用户信息窗口看到该聊天室中所有用户的用户名,也可以在聊天窗口中看到随时更新的聊天信息。用户可以给所有人或某一个聊天用户发送公共的聊天信息,这个聊天内容大家都可以看到。用户也可以给某个用户发送私人的聊天信息,这种信息属于私聊信息,只有发送者和接收者可以看到。此外,聊天窗口还会出现一些系统公告,比如某某上站、某某离开等消息,另外用户还可以自己定义聊天信息和聊天用户信息刷新的时间间隔。

n  在用户单击退出按钮后,页面关闭,同时applicationsession中保存的信息都将丢失。

 

三、实验方法

1、用户登录信息使用request对象getParameter()方法得到用户登陆的一些信息;

2、公聊信息可以使用application对象,私聊信息使用session对象。

3、聊天的信息要不断刷新页面,使用户实时看到聊天信息。

4、用户退出时,有两种情况需要考虑:一是用户点击“退出”按钮,二是关闭浏览器,强制退出窗口,可查阅windows感知浏览器关闭的事件的相应方法。

四、实验学时:6学时
五、实验代码
  1、登录界面:login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"  
    pageEncoding="UTF-8"%>  
<!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>title</title>
<style type="text/css">  
table {  
    background: url(image/1.jpg) no-repeat;  
}  
</style>  
  
<script language="javascript">    
    function check() {  
        if (document.form.username.value == '') {  
            alert("用户昵称不能为空!");  
            document.form.username.focus();  
            return false;  
        } 
        else  
            return true;  
    }  
</script>  
</head>  
<%   request.setCharacterEncoding("utf-8");  %>  
<body>  
    <form action="login_check.jsp" method="post" name="form"  
        onSubmit="return check()">  
        <table align="center" cellpadding="0" cellspacing="0" border="0"  
            width="500">  
            <tr>  
                <td height="100" colspan="2" style="font-size: 30px; font-weight: bold;" align="center">  
                                     用户登录
                </td>  
            </tr>  
            <tr>  
                <td width="180" align="right" height="30">用户名:</td>  
                <td><input type="text" name="username"></td>  
            </tr>   
            <tr>  
                <td colspan="2" align="center" height="30"><input type="submit"  
                    value="登录"> <input type="reset" value="取消"></td>  
            </tr>  
            <tr>  
                <td height="50" align="center" colspan="2" style="color: red">  
                   	无须注册,直接登录。
                </td>  
            </tr>  
        </table>  
    </form>  
</body>  
</html>  
  2、登录检查 login_check.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"  
    pageEncoding="UTF-8"%>  
<%@ page import="java.util.*"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>  
<%@page import="java.text.SimpleDateFormat"%>
<!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>聊天用户登录</title>  
</head>  
<body>  
<%  
        request.setCharacterEncoding("utf-8");  
    %>  
    <%! List<String> list=new ArrayList<String>();%>  
    <%  
        //获取用户昵称  
        String username = request.getParameter("username");  
        //记录登录时间 
        for(int i=0;i<list.size();i++){
            if(username.equals(list.get(i))){
            %>
             <jsp:forward page="login.jsp"></jsp:forward>
            <%
          }
        } 
        Date d = new Date();  
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dd=format.format(d);
        session.setAttribute("loginDate", dd); 
        //登录成功将昵称保存到session中     
        session.setAttribute("name",username);
        list.add(username);  
        //登录成功将昵称保存list中       
        application.setAttribute("username",list);            
        //转到聊天室选择页面  
        response.sendRedirect("chatroom.jsp"); 
       
    %>  
</body>  
</html>
  3、聊天室chatroom.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"  
    pageEncoding="UTF-8"%>  
<%@ page import="java.util.*"%>  
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<!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>网页聊天室</title>
<style type="text/css">
#header {
    background-color:black;
    color:white;
    text-align:center;
    padding:5px;
}
#left {
    line-height:30px;
    background-color:#eeeeee;
    height:400px;
    width:300px;
    float:left;
    padding:5px;	      
}
#middle {
    width:350px;
    float:left;
    padding:10px;	 	 
}
#footer {
    background-color:#FFD700;
    color:white;
    clear:both;
    text-align:center;
    padding:50px;	 	 
}

</style>
</head>
<script type="text/javascript">
function reset() {
	  window.location.reload();
	}
</script>
<body>
<%request.setCharacterEncoding("utf-8");%>  
<%  
    /*获取聊天时间*/
	Date data=new Date();
	SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	String dd=format.format(data);
	String name=(String) session.getAttribute("name");
	String loginDate = session.getAttribute("loginDate").toString();
	Date logintime = format.parse(loginDate);
	response.setHeader("refresh", "20");
%>
<%!	List<String> sllist = new ArrayList<String>();
	List<String> qllist = new ArrayList<String>();
%>
<%
try {
	String liaotian = request.getParameter("lt");
	if (liaotian.equals("siliao")) { //私聊
	String sln = request.getParameter("slname");
	sllist.add(name + "#对#" + sln + "#说:"+ request.getParameter("chatcontent") + "  "+ dd);
	} 
	else {  						//群聊
	qllist.add(name + ":#" + request.getParameter("chatcontent") + "#"+ dd);
	}
} 
catch (Exception e) {
}
session.setAttribute("siliao", sllist);
application.setAttribute("qunliao", qllist);
%>
							<!--某某上线-->
<div id="header">
<%=name+"上线" %>
</div>

							<!--在线人数-->
<div id="left">
<% List<String> Oluser = (List) application.getAttribute("username");%>
在线人数:<%=Oluser.size() %><br>
在线用户:<br>
<%
for (int i = 0; i < Oluser.size(); i++) {
%>
<%=Oluser.get(i)%>
<br>
<%
}
%>
</div>

							<!--聊天信息界面-->
<div id="middle">
<%try{
List<String> list1 = (List<String>) session.getAttribute("siliao");
	if (list1 == null || list1.isEmpty()) {
	} 
	else {
		for (int i = 0; i < list1.size(); i++) {
			String[] sp = list1.get(i).split("#");
		if (sp[0].equals(name)||sp[2].equals(name)) {
		out.print(sp[0] + sp[1] + sp[2]+sp[3]);
%>
<br>
<%
		}
	  }		
	}
}
catch(Exception e){
}
%>
<% 
List<String> list = (List) application.getAttribute("qunliao");
	if (list == null) {
		out.print("欢迎来到聊天室!");
	} 
	else {
		for (int i = 0; i < list.size(); i++) {
		String[] sp = list.get(i).split("#");
		Date time1 = format.parse(sp[2]);
		  if (logintime.getTime() <= time1.getTime()) {%>
   			<%= sp[0]+ " " %>
			<input type="text" value="<%= sp[1]%>" style="background-color: blue;">
			<%= " "+ format.format(time1) %><br>
<%
		  }
		}
	}
%>
</div>
							<!--选择聊天方式-->
<div id="footer">
<table align="center">
	<form action="chatroom.jsp" method="post">
	<td>
<textarea name=chatcontent rows="1" cols="15" >
  </textarea>
	</td>
	<td>
	<input type="radio" name="lt" value="qunliao">群聊 
	<input type="radio" name="lt" value="siliao">私聊 
	
	
<select name="slname" >
<option selected="selected" ></option>
<%
for (int i = 0; i < Oluser.size(); i++) {
%>
<option><%=Oluser.get(i)%></option>
<%
}
%>
</select>
</td>
<td>
<input TYPE="submit" name="submit" VALUE="发送">
</td>
<td>
<input type="reset" name="sx" value="刷新/重置" οnclick="reset();">
</td>
<td>
<a href="leave.jsp?name1=<%=session.getAttribute("name").toString()%>"
target="_parent" ">退出</a>

</td>
	</form>
  </table>
</div>
</body>
</html>
  4、退出leave.jsp
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>聊天室退出</title>
</head>
<body>
成功退出!
<%
String name1 = request.getParameter("name1");
Object name2 = (Object) name1;
List<String> list = (List) application.getAttribute("username");
list.remove(name2);
%>
<a href="login.jsp">请重新登录</a>
</body>
</html>
5、登录界面

6、聊天室

7、退出界面




  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值