チャットを作ってみました。
簡単な、チャットを作ってみました。
まー、あれです<とか>の対策してないんでそんな発言すると逝きます。
サンプルなんで我慢してください!
苦労したのがhttpリクエスト時にPOSTメソッドで送る方法で、
何故かPOSTする際は↓の用にしないといけないらしい。
dataset.setQueryType("POST");
chat.lzx
<?xml version="1.0" encoding="UTF-8" ?> <canvas width="600" height="400" debug="true" bgcolor="0xcccccc"> <dataset name="contacts" request="true" type="http" src="chat.xml.jsp" /> <debug x="0" y="250" height="150" width="580" /> <window x="5" y="5" width="550" height="250" resizable="true"> <form width="100%" inset_top="0" inset_right="0" inset_bottom="0" inset_left="0" > <submit name="survey" data="${contacts}"/> <view width="100%"> <edittext name="name" width="50"></edittext> <edittext name="message" options="releasetolayout"></edittext> <button width="50" isdefault="true" onclick="processData()">Send <method name="processData"> contacts.setQueryType("POST"); parent.parent.survey.submit(); </method> </button> <resizelayout axis="x" /> </view> </form> <grid datapath="contacts:/chat/" width="100%" bgcolor0="0xfff8ee" options="releasetolayout"> <gridcolumn width="80"> Name <text datapath="name/text()" /> </gridcolumn> <gridcolumn width="300"> Message <text datapath="message/text()" /> </gridcolumn> <gridcolumn width="100"> Date <text datapath="date/text()" /> </gridcolumn> <gridcolumn> Meta <text datapath="meta/text()" /> </gridcolumn> </grid> <resizelayout axis="y" /> </window> </canvas>
chat.xml.jsp
<%-- --%><%@ page contentType="application/xml; charset=utf-8" %><%-- --%><%@ page import="java.util.*" %><%-- --%><% String name=request.getParameter("name"); synchronized(session){ if(name==null || "".equals(name.trim())){ name=(String)session.getAttribute("name"); }else{ name=(new String(name.getBytes("iso-8859-1"), "utf-8")).trim(); session.setAttribute("name",name); } } //boolean isNew=(name==null); request.setCharacterEncoding("utf-8"); //request.setCharacterEncoding("Windows-31J"); List messages = (List)application.getAttribute("chat"); if(messages == null){ messages = new ArrayList(); application.setAttribute("chat",messages); } synchronized(messages){ String message=request.getParameter("message"); if( message!=null && !"".equals(message.trim()) ){ Map m = new HashMap(); m.put("name",name); m.put("message",new String(message.getBytes("iso-8859-1"), "utf-8")); m.put("date",new Date()); m.put("meta",request.getMethod()+"-"+session.getId()); messages.add(m); if(15<messages.size()){ messages.remove(0); } } } //Collections.reverse(messages); Object msgs[] = messages.toArray(); %> <chat> <% for(int i=msgs.length-1;i>=0;i--){ Map m = (Map)msgs[i]; %> <statement> <name><%= m.get("name") %></name> <message><%= m.get("message") %></message> <date><%= m.get("date") %></date> <meta><%= m.get("meta") %></meta> </statement> <% } %> </chat>