index.jsp
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<html:html>
<head>
<title></title>
<script type="text/javascript">
function check(){
var name=document.getElementById("name").value;
if(name==""){
alert("请填写您的昵称。");
return false;
}
document.getElementById("sign").value="into";
document.chatForm.submit();
}
</script>
</head>
<body>
<html:form action="chat" method="post">
<html:hidden property="sign" />
昵称:<html:text property="name"></html:text>
<br>
<html:button property="button" value="进入聊天室" onclick="check()"></html:button>
</html:form>
</body>
</html:html>
chat.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<html:html>
<head>
<title></title>
<script type="text/javascript">
var xhr;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
}
function sendRequest() {
createXMLHttpRequest();
var name = document.chatForm.name.value;
var chating = document.chatForm.chating.value;
if (chating == "") {
alert("发言不能为空");
return false;
}
document.chatForm.chating.value = "";
xhr.open("GET", "chat.do?sign=chating&name=" + name + "&chating="
+ encodeURI(encodeURI(chating)), true);
xhr.onreadystatechange = callBack;
xhr.send(null);
}
function sendEmptyRequest() {
var t = document.getElementById('chat');
t.scrollTop = t.scrollHeight;//让新发言总在层的最后一行显示
createXMLHttpRequest();
var name = document.chatForm.name.value;
xhr.open("POST","chat.do?sign=empty", true);
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.onreadystatechange = callBack;
xhr.send(null);
window.setTimeout("sendEmptyRequest()", 1000);
}
function callBack() {
if (xhr.readyState == 4) {
document.getElementById("chat").innerHTML = xhr.responseText;
}
}
</script>
</head>
<body onload="sendEmptyRequest()">
<table>
<tr>
<td width="650" height="400">
<div id="chat"></div>
</td>
<td width="150" height="400">
<div id="user"></div>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<html:form action="chat" method="post">
<html:hidden property="sign" />
<html:text property="name" readonly="true"></html:text>
<br>
<html:textarea property="chating" cols="60" rows="5"></html:textarea>
<br>
<html:button property="button" value="发言" onclick="sendRequest()"></html:button>
</html:form>
</td>
</tr>
</table>
</body>
</html:html>
ChatForm.java
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.king.struts.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
/**
* MyEclipse Struts
* Creation date: 06-18-2009
*
* XDoclet definition:
* @struts.form name="chatForm"
*/
public class ChatForm extends ActionForm {
/*
* Generated fields
*/
/** sign property */
private String sign;
private String name;
private String chating;
/*
* Generated Methods
*/
/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
}
/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}
/**
* Returns the sign.
* @return String
*/
public String getSign() {
return sign;
}
/**
* Set the sign.
* @param sign The sign to set
*/
public void setSign(String sign) {
this.sign = sign;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getChating() {
return chating;
}
public void setChating(String chating) {
this.chating = chating;
}
}
ChatAction.java
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.king.struts.action;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.king.bean.Chating;
import com.king.bean.User;
import com.king.struts.form.ChatForm;
public class ChatAction extends BaseAction {
List list = new ArrayList();
List c = new ArrayList();
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
ChatForm chatForm = (ChatForm) form;
if (chatForm.getSign().equals("into")) {
String name = chatForm.getName();
User user = new User();
user.setName(name);
list.add(user);
request.setAttribute("user", user);
return mapping.findForward("chat");
}
if (chatForm.getSign().equals("chating")) {
try {
String chating=java.net.URLDecoder.decode(chatForm.getChating(), "UTF-8");
Chating chat = new Chating();
chat.setChating(chating);
chat.setName(chatForm.getName());
if (chatForm.getChating() != null
&& chatForm.getChating() != "") {
c.add(chat);
String cs = "";
for (int i = 0; i < c.size(); i++) {
Chating ch = (Chating) c.get(i);
cs = cs + "<br>" + ch.getName() + "说:"
+ ch.getChating();
}
PrintWriter out = response.getWriter();
out.print(cs);
}
} catch (Exception e) {
e.printStackTrace();
}
}
if (chatForm.getSign().equals("empty")) {
try {
String cs = "";
for (int i = 0; i < c.size(); i++) {
Chating ch = (Chating) c.get(i);
cs = cs + "<br>" + ch.getName() + "说:" + ch.getChating();
}
PrintWriter out = response.getWriter();
out.print(cs);
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
}
Chating.java
package com.king.bean;
public class Chating {
private String name;
private String chating;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getChating() {
return chating;
}
public void setChating(String chating) {
this.chating = chating;
}
}
user.java
package com.king.bean;
public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}