JSP实现简易的聊天功能(Session机制)

JSP实现简易的聊天功能(Session机制)

基于服务器端全局应用空间 application 的简易聊天室实现

1.login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>聊天室登录</title>
</head>
<style>
.div1{background-color:skyblue;border:solid 1px black;width:300px;height:170px;text-align:center;line-height:150%
}
</style>
<body>
<div class="div1">
<%
StringBuffer view=new StringBuffer("");
session.setAttribute("view",view);
String color="balck";
session.setAttribute("Color",color);
%>
<h3>聊天室登录</h3>
<form action="cotainer.jsp" method="post">
用户名:<input type="text" name="userName"><br>
<br>
<input type="submit" value="登录"></form>
</div>
</body>
</html>

在这里插入图片描述
2.container.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html><head><style>
.div3{background-color:lightgreen;border:solid 1px black;width:700px;height:600px;line-height:150%
}
img{width:15px;height:20px;
}
</style></head><body><div class="div3"><%request.setCharacterEncoding("utf-8");if(request.getParameter("userName")!=null){session.setAttribute("userName",request.getParameter("userName").toString());}String sessionID=session.getId();StringBuffer users=new StringBuffer();//确定用户数量if(application.getAttribute("count")!=null){users=users.append(application.getAttribute("users").toString());if(users.indexOf(sessionID)==-1){session.setAttribute("isNew","true");int  userCount= Integer.parseInt(application.getAttribute("count").toString());userCount++;application.setAttribute("count",new Integer(userCount));users=users.append("<br>"+sessionID);application.setAttribute("users",users.toString());}}else{users=users.append("<br>"+sessionID);application.setAttribute("users", users.toString());application.setAttribute("count", "1");}//获取默认颜色String select="black";if(request.getParameter("Color")!=null)select=request.getParameter("Color").toString();request.setAttribute("select",select);//确定用户次序int userId=1;String[]userss=users.toString().split("<br>");for(int i=0;i<userss.length;i++){if(userss[i].equals(sessionID)){userId=i;break;}}%>您是第<img src="数字/<%=userId%>.png">位访问者!<jsp:include page="view.jsp" /><form action="cotainer.jsp" method="post"><input type="text" name="message"><input type="hidden" name="send" value="true">选择我的颜色:<select name="color"><option value="red" ${select=="red"?'selected':''}>红色</option><option value="blue" ${select=="blue"?'selected':''}>蓝色</option><option value="green" ${select=="green"?'selected':''}>绿色</option><option value="black" ${select=="black"?'selected':''}>黑色</option><option value="yellow" ${select=="yellow"?'selected':''}>黄色</option><option value="purpole" ${select=="purpole"?'selected':''}>紫色</option></select><input type="submit" value="发送"> </form><form action="cotainer.jsp"><input type="hidden" name="clear" value="true"><input type="submit" value="清空"></form><form action="cotainer.jsp"><input type="hidden" name="flush" value="true"><input type="submit" value="刷新"></form><form action="login.jsp"><input type="submit" value="退出聊天"></form></div> </body>
</html>

在这里插入图片描述
view.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" import="java.util.*" import="java.text.SimpleDateFormat"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>聊天</title>
<style>
.div2{border:solid 1px black;width:500px;height:400px;overflow-y:scroll; 
}</style>
</head>
<body><%request.setCharacterEncoding("utf-8");String userName = session.getAttribute("userName").toString();if(request.getParameter("color")!=null)session.setAttribute("Color",request.getParameter("color").toString());String color=session.getAttribute("Color").toString();request.setAttribute("select",color);StringBuffer view=new StringBuffer();view.append(session.getAttribute("view").toString());String chatTexts="";//判断是不是新用户String isNew="false";if(session.getAttribute("isNew")!=null){isNew=session.getAttribute("isNew").toString();session.setAttribute("isNew","false");}if(isNew.equals("false")){ //发送String send="false";if (request.getParameter("send") != null)send = "true";if(send.equals("true")){if (request.getParameter("message") != null) {String message = request.getParameter("message").toString();Date time = new Date();SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");String time1 = sdf.format(time);String chatText ="<br>"+ userName + "["+time1 + "]:" + message;view.append(chatText);session.setAttribute("view",view.toString());//view存到application中if (application.getAttribute("chatText") != null) {String ss=application.getAttribute("chatText").toString();					StringBuffer ssb=new StringBuffer();ssb.append(ss);ssb.append(chatText);application.setAttribute("chatText",ssb.toString());}else{application.setAttribute("chatText",view.toString());}}}//清空String clear="false";if (request.getParameter("clear") != null)clear = "true";if(clear.equals("true")){view.delete(0,view.length());}session.setAttribute("view",view.toString());//刷新String flush="false";if (request.getParameter("flush") != null)flush ="true";if (flush.equals("true")) {if (application.getAttribute("chatText") != null) {chatTexts=application.getAttribute("chatText").toString();view.delete(0,view.length());view.append(chatTexts);session.setAttribute("view",view.toString());}}//加颜色String scolor=view.toString();String[]a=scolor.split("<br>");for(int i=0;i<a.length;i++){						if(a[i].contains((userName+"["))){if(a[i].contains("<span")){//问题一:字符串取子串a[i]=a[i].substring(0,a[i].length()-7);int index=a[i].lastIndexOf(">");a[i]=a[i].substring(index+1);}a[i]="<br><span style='color:"+color+"'>"+a[i]+"</span>";}else{a[i]="<br>"+a[i];}}StringBuffer sb=new StringBuffer();for(String s:a){sb.append(s);}view.delete(0,view.length());view.append(sb.toString());}%>
<div class="div2">
<%=view.toString() %>
</div>
</body>
</html>

在这里插入图片描述
通过切换不同的浏览器可以实现在本机进行聊天。
(2)聊天室网站建好后,若尝试和同学一块开展聊天,你分享给他人的网站地址的构成应该是什么?
网址的构成:http://localhost:8080/项目名/…
(3)如果该网站只在本机能够使用,而其他同学无法访问,请分析原因是什么?应如何解决这个问题?
运行的项目不再同一局域网内。
解决办法:
一般我们想在别人电脑上运行本机tomcat项目,不考虑服务器的话,必须在同一局域网中,而网线连接和无线网络连接之间还是有很多不同的,流程基本都是在本机将项目运行起来,然后找到本机ip,将http://localhost:8080/项目名/…中的localhost换成本机ip(注意:必须在同一局域网中)。

在这里插入图片描述
好了。今天的分享就到这里了。点个赞吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36127.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在本地使用远程服务器的Jupyter Notebook

问题 python项目含有ipynb文件&#xff0c;用Pycharm打开&#xff0c;提示安装jupyter。于是转到jupyter notebook中运行项目&#xff0c;这就引出了一个问题&#xff0c; 即如何在本地使用远程服务器上的jupyter notebook。  这里提供一种方法。 解决方法 1 在服务器上安装…

硅基罗丹明-小分子聚乙二醇-叠氮 SiR-PEG4-azide

科研实验中大家比较常见硅基罗丹明&#xff0c;对于其性质应用&#xff0c;大家有所了解吗&#xff1f;今天瑞禧小编通过对SiR-PEG4-azide 硅-罗丹明-四聚乙二醇-叠氮来为大家介绍硅基罗丹明的应用。 下面是瑞禧小编整理的SiR-PEG4-azide 硅-罗丹明-四聚乙二醇-叠氮的产品详情&…

硅基罗丹明荧光染料小分子聚乙二醇修饰反式环辛烯SiR-PEG3-TCO

硅基罗丹明-三聚乙二醇-反式环辛烯 SiR-PEG3-TCO 硅基罗丹明SIR(siliconrhodamine)染料是一种深红色近红外荧光染料、细胞渗透性强、高特异性的DNA探针。具有优异光物理性质、良好的生物相容性&#xff0c;在保留了罗丹明荧光染料优越的光学性质的同时&#xff0c;光谱发生明显…

英特尔正式宣布:All in硅基自旋量子比特

&#xff08;图片来源&#xff1a;英特尔&#xff09; 最近&#xff0c;在美国物理学会&#xff08;APS&#xff09;的三月会议上&#xff0c;英特尔不仅介绍了公司最新发表的14篇论文成果&#xff0c;并透露了公司的量子战略计划。 在英特尔看来&#xff0c;实用的量子计算未来…

给小朋友讲故事——科学课,地球,太阳和月亮

在2022年05月19日按照九迁的课程表&#xff0c;给他上了一节科学课&#xff0c;内容是&#xff1a;地球&#xff0c;太阳和月亮。 但是因为当天发生的事情&#xff08;关于校园霸凌&#xff0c;刚刚发生&#xff08;2022年05月20日教育局加三个校长的到来&#xff09;&#xff…

硅基生命之漫谈-4:意识是电流的运动?还是量子的运动?

核磁共振成像是一种利用核磁共振原理的最新医学影像新技术&#xff0c;对脑、甲状腺、肝、胆、脾、肾、胰、肾上腺、子宫、卵巢、前列腺等实质器官以及心脏和大血管有绝佳的诊断功能。与其他辅助检查手段相比&#xff0c;核磁共振具有成像参数多、扫描速度快、组织分辨率高和图…

澳大利亚科学家开发出可用于脑机接口的新型碳基生物传感器

澳大利亚悉尼科技大学的科学家团队开发出一种新型碳基生物传感器&#xff0c;该传感器由外延石墨烯制成&#xff0c;作为一种碳基材料&#xff0c;可以直接种植在硅基碳化物基板上。研究人员将石墨烯的优点&#xff08;生物相容性和导电性&#xff09;与硅技术的优点结合起来&a…

生物计算机的主要原材料是(),新材料为生物计算机打造“神经元”和“突触”...

一项最新研究利用复杂的氧化物&#xff0c;打造出了与神经元和突触相似的元件。 图片来自pixabay.com 虽然电脑的计算速度比人脑快&#xff0c;但在物体识别任务等方面&#xff0c;人脑还是更胜一筹。除此之外&#xff0c;人脑耗费的能量也远低于电脑。大脑的运作方式可以在一定…

SiR-PEG4-NHS ester 硅基罗丹明-四聚乙二醇-活化脂 |SIR荧光探针

SiR-PEG4-NHS ester硅基罗丹明近红外荧光探针 产品英文名称:SiR-PEG4-NHS ester 产品中文名称:硅基罗丹明-四聚乙二醇-琥珀酰亚胺酯 外观:实心 分子式:C42H50N4O10Si 分子量:798.97 储存条件:-20C,在黑暗中 结构式: 相关产品&#xff1a; SDS-AgNCs 水溶性荧光十二烷基磺…

SiR-alkyne/azide 硅基罗丹明-炔基/叠氮 |SIR荧光染料

英文名称&#xff1a;SiR-alkyne 中文名称&#xff1a;硅基罗丹明-炔基 分子式&#xff1a;C30H31N3O3Si 分子量&#xff1a;509.68 纯 度&#xff1a;≥ 95% 存储条件&#xff1a;-20C&#xff0c;避光&#xff0c;避湿 结构式&#xff1a; 相关产品 SiR-alkyne SiR-a…

SiR-BCN 硅基罗丹明-环丙烷环辛炔 | SIR荧光染料

产品英文名称&#xff1a;SiR-BCN 产品中文名称&#xff1a;硅基罗丹明-环丙烷环辛炔 外观&#xff1a;实心 分子式&#xff1a;C44H54N4O7Si 分子量&#xff1a;779.02 储存条件&#xff1a;-20C&#xff0c;在黑暗中 结构式&#xff1a; 我们供应的几类常见的近红外小分…

硅基罗丹明-四嗪SiR-tetrazine SiR-TZ SIR荧光染料

硅基罗丹明SIR&#xff08;silicon rhodamine&#xff09;染料是一种深红色近红外荧光染料、细胞渗透性强、高特异性的DNA探针。具有优异光物理性质,在保留了罗丹明荧光染料优越的光学性质的同时,光谱发生明显红移,满足了近红外荧光检测的要求,具有良好的生物相容性&#xff0c…

生物芯片硅(Si)基片晶体基片|硅基晶体基片(Silicon)

生物芯片硅(Si)基片晶体基片|硅基晶体基片&#xff08;Silicon&#xff09; 硅&#xff08;Silicon&#xff09;&#xff0c;是一种化学元素&#xff0c;化学符号是Si&#xff0c;旧称矽。原子序数14&#xff0c;相对原子质量28.0855&#xff0c;有无定形硅和晶体硅两种同素异形…

fastadmin+python+mysql +wxbot实现万能模糊查询(和chatgpt一起完成的)

废话不多说直接上代码&#xff1a; 功能&#xff0c;fastadmin后台管理这些机房服务器的信息&#xff0c;wxbot 通过/指令任意字段的信息查询 让wxbot去数据库里查询相关的信息&#xff0c;在通过wx发送给你。 1.创建数据库 CREATE TABLE fa_databank (ID INT AUTO_INCREMEN…

关于Chat GPT的一些简单思考

许久未更新&#xff0c;这个也没有太多的技术分享&#xff0c;而是一篇关于Chat GPT的一些简单思考&#xff1b;目前公众号也已经接入GPT3.5了&#xff1b;但是目前也有部分比较麻烦的事情&#xff0c;回复偶尔会出现超时的情况。&#xff08;GPT-4申请未通过&#xff0c;待后续…

一棵迷人的 GPT 和 LLM 树揭示了chatgpt背后的故事

Yann LeCun,杰出的深度学习先驱,现在就职于Meta,在上周对 LLM 进行了抨击之后,本周将向我们介绍它们。 从侧面图中跟踪的版本数量来看,您会认为Meta和Google在 LLM 方面领先于OpenAI。但当然数量不等于性能:OpenAI 的GPT-4 被普遍认为大大领先于谷歌的 Bard。最近的测试报…

递归回溯法经典——组合(python)

关于递归&#xff0c;虽然每次看代码都能明白别人代码的大体意思&#xff0c;但实际上当自己动手写的时候&#xff0c;往往没有头绪。 为了解决这个问题&#xff0c;我感觉我们需要深入探究模拟别人代码的全过程&#xff0c;了解递归回溯的基本像树一样的全过程&#xff0c;才…

[云炬ThinkPython阅读笔记]1.4 算术运算符

最后&#xff0c;运算符 * 执行乘方运算&#xff1b;也就是说&#xff0c;它将某个数字乘以自身相应的次数&#xff1a; ✞ >>> 6**2 6 42 ✆ 某些语言使用 ^ 运算符执行乘方运算&#xff0c;但是在 Python 中&#xff0c;它却属于一种位运算符&#xff0c;叫 做 XOR…

《蓝桥小记》 2018-04-01

蓝桥杯省赛从9:00-13:00历时4个小时&#xff0c;今年的题和去年的题差不多有易有难&#xff0c;整体来说今年出的题即使做不出来也会让你觉得比较生动有趣味性&#xff0c;可能是为了吸引更多的人参加吧。 第一题:求2000/5/4是一年的第几天&#xff0c;这道题用excel稍微计算一…