??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品一级二级三级,日韩欧洲国产,亚洲电影第1页http://www.aygfsteel.com/xiaoyi/category/33887.html阛_d风雨?让我们在雨中毅然前行,收获每一份喜悦的Ƣ笑o(∩_?o...zh-cnWed, 13 May 2009 19:21:17 GMTWed, 13 May 2009 19:21:17 GMT60- 毅原创?--无聊时心血来潮U手写ajaxh装c(ajaxh参数支持JSON对象Q?/title>http://www.aygfsteel.com/xiaoyi/articles/270526.html可爱的小?/dc:creator>可爱的小?/author>Wed, 13 May 2009 19:15:00 GMThttp://www.aygfsteel.com/xiaoyi/articles/270526.htmlhttp://www.aygfsteel.com/xiaoyi/comments/270526.htmlhttp://www.aygfsteel.com/xiaoyi/articles/270526.html#Feedback0http://www.aygfsteel.com/xiaoyi/comments/commentRss/270526.htmlhttp://www.aygfsteel.com/xiaoyi/services/trackbacks/270526.html阅读全文

]]> - 毅ȝ之JSON与AJAXhttp://www.aygfsteel.com/xiaoyi/articles/248530.html可爱的小?/dc:creator>可爱的小?/author>Fri, 26 Dec 2008 11:12:00 GMThttp://www.aygfsteel.com/xiaoyi/articles/248530.htmlhttp://www.aygfsteel.com/xiaoyi/comments/248530.htmlhttp://www.aygfsteel.com/xiaoyi/articles/248530.html#Feedback0http://www.aygfsteel.com/xiaoyi/comments/commentRss/248530.htmlhttp://www.aygfsteel.com/xiaoyi/services/trackbacks/248530.html什么是JSON?
一U轻量的数据传送格式,{}对象,[]数组,"属性名":"属性?,用逗号隔开。废话少_看代码更直接Q以下自己写的例子?/p>
<script type="text/javascript">
//U字W串+eval

define = "{
}{name:'Michael',email:'17bity@gmail.com'}";
eval("data = "+define);
alert("name:"+data.name);
alert("email:"+data.email);
//U对?br />

var user ={
}{
"name":"yizhi",
"age":22,
"belive":"阛_d风雨?
};
alert(user.name);
alert(user.age);
alert(user.belive);
//U数l?br />
var color =
[

{
}{"colorName":"red","symbol":"喜庆"},

{
}{"colorName":"green","symbol":"希望"}
]
;
alert(color[0].colorName+"------>"+color[0].symbol);
alert(color[1].colorName+"------>"+color[1].symbol);
//对象+属?数组+属?br />

var jsonObj ={
}{
"myProperty":"我的属?,
"myObject":{
"name":{
"firstName":"?,
"familyName":"?,
"fullName":"易志"
},
"age":"myObject的年?
},
"myFriends":[

{
}{
"name":"我的W①个朋友的名字",
"age":"我的W①个朋友的q龄"
},

{
}{
"name":"我的W②个朋友的名字",
"age":"我的W②个朋友的q龄"
}
]
}
alert("jsonObje----------->复杂的json对象");
alert(jsonObj.myProperty);
alert(jsonObj.myObject.name.firstName);
alert(jsonObj.myObject.name.familyName);
alert(jsonObj.myObject.name.fullName);
alert(jsonObj.myObject.age);
alert(jsonObj.myFriends[0].name);
alert(jsonObj.myFriends[0].age);
alert(jsonObj.myFriends[1].name);
alert(jsonObj.myFriends[1].age);

</script>
可通过ajax把json字符串传到后?nbsp;后台可以把json字符串{为对象,也可以把对象或者数l{为json字符Ԍ必须天就爱json的jar包,测试:

public class User extends ActionForm
{
private int id;
private String name;


.

package com.yz.jsonTest;

import java.util.*;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONString;


public class JsonTest
{

public static void main(String[] args) throws JSONException
{
Collection c = getList();
//数组
JSONArray jary = new JSONArray(c);
System.out.println(jary); //[0,1,2,3,4]
String jsonStr2 ="[{'a':'1','b':'2'},{'a':'3','b':'4'}]";
JSONArray jary2 = new JSONArray(jsonStr2);
System.out.println(jary2.getJSONObject(1).get("a")); //3
//对象
String jsonStr="{'name':'yizhi','age':'19'}";
JSONObject jobj = new JSONObject(jsonStr);
System.out.println(jobj.get("name")); //yizhi
System.out.println(jobj.get("age")); //19
Map mp = new HashMap();
mp.put("happy", "开?/span>");
mp.put("sad", "悲伤");
JSONObject jobj2 = new JSONObject(mp);
System.out.println(jobj2.get("happy")); //开?/span>
}

public static List getList()
{
List lst = new ArrayList();

for (int i = 0; i < 5; i++)
{
lst.add(i);
}
return lst;
}
}

Action中。?br />


package com.yz.jsonTest;

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 org.apache.struts.actions.DispatchAction;
import org.json.JSONArray;


public class JsonTestAction extends DispatchAction
{

public List<User> getUserList()
{
List<User> lst = new ArrayList<User>();

for(int i=0;i<3;i++)
{
User u = new User();
u.setId(i);
u.setAge(i+20);
u.setName(i+"?/span>");
lst.add(u);
}
return lst;
}
public ActionForward TestJson(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)

throws Exception
{
JSONArray jary = new JSONArray(getUserList());
System.out.println(jary);
return null;
}
}


]]> - 使用xmlhttp和Java session监听改善站内消息pȝhttp://www.aygfsteel.com/xiaoyi/articles/227391.html可爱的小?/dc:creator>可爱的小?/author>Sat, 06 Sep 2008 04:58:00 GMThttp://www.aygfsteel.com/xiaoyi/articles/227391.htmlhttp://www.aygfsteel.com/xiaoyi/comments/227391.htmlhttp://www.aygfsteel.com/xiaoyi/articles/227391.html#Feedback0http://www.aygfsteel.com/xiaoyi/comments/commentRss/227391.htmlhttp://www.aygfsteel.com/xiaoyi/services/trackbacks/227391.html
q个题目含有许多需要解释的概念Q最Ҏ说明的是“站内消息”Q这是很多论坛都有的功能Q可以通过web向其他的在线用户发送消息,很多用户都用过。站内消息的W一个好处是大家都不需要安装客LQ你不用知道Ҏ的MSN或者QQQ就能与他联p,U赞他的观点或者是l他一臭骂。第二个好处是客L理方便,利用session来维护在U名单,各种脚本都已l把session操作装得很易用了,不用像其他无状态的x通信工具Q比如用UDP通信的工P一P要费一些脑l胞来解军_U名单的问题。缺点嘛Q就是实时性不好,一般是在用戯转或者刷新页面才能探消息、更新在U名单?br />
Session监听嘛,没什么好解释的,java提供了很灉|的事件机制来监听sessionQ可以监听session的创建和销毁,监控session所携带数据的创建、变化和销毁,可以监听session的锐化和钝化Q了解对象序列化的兄弟应该知道这个)Q其他的q_是个什么情冉|不太清楚Q估计也差不多吧。如果能够对所有客Lsessionq行监控Q就不用再去操作ȝ而危险的Application了?br />
Xmlhttp是MS推的一Ҏ术,功能很复杂,可以做很多事情,比如客户端可以在单的HTML中打开HTTPq接Q主动向serverh数据q获得返回数据,是DOM技术一个非帔R要的应用Q利用它来写无刷新的动态页面简直是so easyQ做qweb开发的兄弟应该明白它的意义有多么重大?br />
一?nbsp;session监听
servlet中对session的监听有很多接口Q功能很灉|Q最常用的是监听Session和Attribute。这里要澄清一下概念,servlet中的session监听和Attribute监听含义有差别,session监听指的不是我们一般所理解的放|一个session或者销毁一个sessionQ这是Attribute监听的功能,因ؓservlet中放|session的语法是session.setAttribute(“session?#8221;,要放入的对象)。而session监听Q监听的是HTTPq接Q只要有用户与serverq接Q就连接的是一个空白的jsp面Q也会触发session事gQ所以此处的session实际上指的是connectionQ用来统计当前在U用h最合适了。不知道我说清楚了没有。下面分别讲解这两种监听方式?br />
1?nbsp;session监听
首先~写一个session监听c,实作HttpSessionListener接口Q它的作用是计算当前有多个在线用户Q?br />
- /**
- *@Author bromon
- *2004-6-12
- */
- package org.bromon.test;
-
- import javax.servlet.*;
- import javax.servlet.http.*;
-
- public class SessionCount implements HttpSessionListener
- {
- private static int count=0;
-
- public void sessionCreated(HttpSessionEvent se)
- {
- count++;
- System.out.println(“session创徏Q?#8221;+new java.util.Date());
- }
-
- public void sessionDestroyed(HttpSessionEvent se)
- {
- count--;
- System.out.println(“session销?”+new java.util.Date());
- }
-
- public static int getCount()
- {
- return(count);
- }
- }
怎么P是不是一目了Ӟcount被定义ؓstaticQ是因ؓ要保证整个系l只有这一个count。如果你实在不放心,可以把它写成一个单例类?br />
然后在web.xml中声明这个监听器Q?br />
<listener>
<listener-class>
org.bromon.test.SessionCount
</listener-class>
</listener>
~写一个测试页面test.jspQ内Ҏ获得countQ?br />
<%
int count=org.bromon.test.SessionCount.getCount();
out.println(count);
%>
需要注意的是,q里Ҏ不涉及Q何session的操作。重启动App serverQ试着q接test.jspQ可以看到监听器已经开始工作?br />
2?nbsp;Attribute监听
作ؓ一个站内消息系l,肯定要获得所有登陆者的IDQ才有可能互发消息。这涉及Attribute监听。假设我们写了个用户登陆的模块,用户通过w䆾验证之后会生一个sessionQ保存它的相关信息,比如Q?br />
- //check.jsp
- <%
- String name=request.getParameter(“name”);
- Name=new String(name.getBytes(“ISO8859-1”));
- session.setAttribute(“user”,name);
- %>
做过jsp的兄弟应该对q段代码再熟悉不q了Q下面写个监听器来监听用L陆,把所有用LID保存C个List当中Q这个监听器实作HttpSessionAttributeListener接口Q?br />
- /**
- *@Author bromon
- *2004-6-12
- */
- package org.bromon.test;
-
- import javax.servlet.*;
- import javax.servlet.http.*;
- import java.util.*;
-
- public class OnlineList implements HttpSessionAttributeListener
- {
- private static List list=new ArrayList();
-
- public void attributeAdded(HttpSessionBindingEvent se)
- {
- if(“user”.equals(se.getName()))
- {
- list.add(se.getValue());
- }
- }
-
- public void attributeRemoved(HttpSessionBindingEvent se)
- {
- if(“user”.equals(se.getName()))
- {
- list.remove(se.getValue());
- }
- }
-
- public void attributeReplaced(HttpSessionBindingEvent se){}
-
- public static List getList()
- {
- return(list);
- }
- }
写个单的jsp来得到用户列表:
<%
java.util.List list=org.bromon.test.OnlineList.getList();
out.println(“共有”+list.size()+”名用户已登陆Q?#8221;);
for(int I=0;I<lise.size();i++)
{
out.println(list.get(i));
}
%>
也许你说Q这有什么神奇呢Q监听session而已Q不着急,看看xmlhttp?br />
二?nbsp;XMLHTTP
XMLHTTP的用处很多,q里只说我们需要的Q就是无h的与server通信Q看q段代码Q?br />
- <script language="javascript">
- xml = new ActiveXObject("Microsoft.XMLHTTP");
- var post=" ";//构造要携带的数?nbsp;
- xml.open("POST","http://localhost:7001/TestWL/index.jsp",false);//使用POSTҎ打开一个到服务器的q接Q以异步方式通信
- xml.setrequestheader("content-length",post.length);
- xml.setrequestheader("content-type","application/x-www-form-urlencoded");
- xml.send(post);//发送数?nbsp;
- var res = xml.responseText;//接收服务器返回的数据
- document.write(res);
- </script>
豁然开朗,q段代码是打开一个HTTPq接Q以标准的HTTP格式传递数据,如果你喜Ƣ,可以用XML的格式来传递。更改一下xml对象的构造方式就可以兼容Mozilla和Netscape。下面来写一个轮询,每隔一D|间刷Cơ用户列表,当然Q是不需要刷新页面的Q?br />
- <html>
- <head><title>探测?lt;/title>
- <script language="javascript">
- function detect()
- {
- xml = new ActiveXObject("Microsoft.XMLHTTP");
- var post=" ";//构造要携带的数?nbsp;
- xml.open("POST","http://localhost:7001/TestWL/index.jsp",false);//使用POSTҎ打开一个到服务器的q接Q以异步方式通信
- xml.setrequestheader("content-length",post.length);
- xml.setrequestheader("content-type","application/x-www-form-urlencoded");
- xml.send(post);//发送数?nbsp;
- var res = xml.responseText;//接收服务器返回的数据
- list.innerText=res;
- setTimeout(“detect()”,5000);//每隔5U钟轮询一?/font>
- }
- </script>
- <body onload=”detect()”>
- <a id=”list”></a>
- </body>
- </html>
q样的通信方式数据量很,不用重新传递整个页面,5U钟轮一ơ,普通PC也能承受较大的在U数。构造一个探器来监听在U列表和消息Q效果是很好的,即你的客户坐在电脑前袖手旁观,键鼠都不C下,也能保证数据x传递,面也不会发生蟩转和h?br />
Session监听加上XMLHTTP通信Q开发一个较为完善的站内消息pȝ实在易如反掌

]]>- ajax上传下蝲http://www.aygfsteel.com/xiaoyi/articles/227390.html可爱的小?/dc:creator>可爱的小?/author>Sat, 06 Sep 2008 04:53:00 GMThttp://www.aygfsteel.com/xiaoyi/articles/227390.htmlhttp://www.aygfsteel.com/xiaoyi/comments/227390.htmlhttp://www.aygfsteel.com/xiaoyi/articles/227390.html#Feedback0http://www.aygfsteel.com/xiaoyi/comments/commentRss/227390.htmlhttp://www.aygfsteel.com/xiaoyi/services/trackbacks/227390.html首先要说的就?ajax 是无法实C传文件的Q可以想一下ajax与后台通信都是通过传递字W串Q怎么能传递文件呢Q其实出于安全考虑js是不能操作文件的Q所以就不要再说用ajax来实现文件的上传了,q是不可能的?br />
而本文实现的文g上传也是无页面刷新的Q可以说是一U?cMAJAX"Ҏ?br />
开始之前先说两句无关的Q其实在ajax出现之前Qweb应用也可以是无刷新的Q那时大多通过IFrame来做到这一炏V当然Ajax出现之后Qh们一H?蜂地投奔Ajax 的阵营了QiFrame ׃人问z了。但是用iFrame来实现无h上传文g实一个很好的选择。psQAjax技术基本上可以说是由google公司带v来的Q但?Gmail中上传文件用的还?IFrameQ所以说使用IFrame来上传文件是最好的选择?br />
我在q里q里用的技术是jspQ其实aspQphp{也是一样可以这么实现的
一׃个文件就可实玎ͼindex.html ?upload.jsp.
index.html
<html>
<body>
<form action="upload.jsp" id="form1" name="form1" encType="multipart/form-data" method="post" target="hidden_frame" >
<input type="file" id="file" name="file" style="width:450">
<INPUT type="submit" value="上传文g"><span id="msg"></span>
<br>
<font color="red">支持JPG,JPEG,GIF,BMP,SWF,RMVB,RM,AVI文g的上?/span></font>
<iframe name='hidden_frame' id="hidden_frame" ></iframe>
</form>
</body>
</html>

<script type="text/javascript">
function callback(msg)


{
document.getElementById("file").outerHTML = document.getElementById("file").outerHTML;
document.getElementById("msg").innerHTML = "<font color=red>"+msg+"</font>";
}
</script>
index.html 中主要要做的是写一?form ?iframe Qƈ?form ?target 设ؓ iframe 的名字,注意要把 iframe 设ؓ不可见,其他的都是正常的文g上传的写法,q样h的页面就是这个隐藏的 Iframe Q而在 index.html 中是不会有页面刷新的Qjs?callback Ҏ是回调方法。用于清I文件上传框和显C后C息,注意清空文g上传框的ҎQ和普通方法有点不一栗?/span>
<%@ page language="java" contentType="text/html; charset=gb2312" %>
<%@ page import="com.jspsmart.upload.SmartUpload"%>
<%
//新徏一个SmartUpload对象

SmartUpload su = new SmartUpload();
//上传初始?nbsp;

su.initialize(pageContext);
// 讑֮上传限制

//1.限制每个上传文g的最大长度?nbsp;

su.setMaxFileSize(10000000);
//2.限制M传数据的长度?nbsp;

su.setTotalMaxFileSize(20000000);
//3.讑֮允许上传的文Ӟ通过扩展名限Ӟ,仅允许doc,txt文g?nbsp;

su.setAllowedFilesList("doc,txt,jpg,rar,mid,waw,mp3,gif");
boolean sign = true;
//4.讑֮止上传的文Ӟ通过扩展名限Ӟ,止上传带有exe,bat,jsp,htm,html扩展名的文g和没有扩展名的文件?nbsp;


try
{
su.setDeniedFilesList("exe,bat,jsp,htm,html");
//上传文g

su.upload();
//上传文件保存到指定目录

su.save("c:\\");

} catch (Exception e)
{
e.printStackTrace();
sign = false;
}
if(sign==true)

{
out.println("<script>parent.callback('upload file success')</script>");
}else

{
out.println("<script>parent.callback('upload file error')</script>");
}
%>
upload.jsp 中只要注意最后输出的格式可以了。其实原理就是输ZDjs代码?iframe 中,然后在iframe中来控制它的爉面?br />
OKQ至此一个无h的页面上传组件就做好了,不要忘了?WEB-INF/lib 下加上必ȝ jspSmartUpload.jar ?/font>?br />
需要说明的是用Iframe来上传,状态栏q是会有h的,因ؓiframe 中的面h了嘛Q但是外部页面,是你所看到的页面是没有h的,所以也可以说是cMAjax上传?/font>
下蝲
String filePath = "/文g?/文g?/JAVA教程.doc";
String fileName = "JAVA教程";
String serverPath = request.getRealPath("");


response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-disposition","attachment;filename=" + new String(fileName.getBytes(),"iso8859-1"));

java.io.FileInputStream fileInputStream = null;
PrintWriter out = null;

try {
}{
fileInputStream = new java.io.FileInputStream(serverPath + filePath);
out = response.getWriter();

int i;
while ((i=fileInputStream.read()) != -1) {
out.write(i);
}

} catch(FileNotFoundException fe){
}{
fe.printStackTrace();
System.out.println(errMsg= "file is not exist");
}

catch (Exception e) {
}{
e.printStackTrace();
System.out.println(errMsg= "download failed");

} finally{
}{
if(fileInputStream != null)
fileInputStream.close();
if(out != null)
out.close();
}


]]> - Dwr框架在客Lq程调用Ҏq回自定义类型的例子http://www.aygfsteel.com/xiaoyi/articles/223817.html可爱的小?/dc:creator>可爱的小?/author>Fri, 22 Aug 2008 17:19:00 GMThttp://www.aygfsteel.com/xiaoyi/articles/223817.htmlhttp://www.aygfsteel.com/xiaoyi/comments/223817.htmlhttp://www.aygfsteel.com/xiaoyi/articles/223817.html#Feedback2http://www.aygfsteel.com/xiaoyi/comments/commentRss/223817.htmlhttp://www.aygfsteel.com/xiaoyi/services/trackbacks/223817.html阅读全文

]]> - dwr入门http://www.aygfsteel.com/xiaoyi/articles/223603.html可爱的小?/dc:creator>可爱的小?/author>Thu, 21 Aug 2008 13:15:00 GMThttp://www.aygfsteel.com/xiaoyi/articles/223603.htmlhttp://www.aygfsteel.com/xiaoyi/comments/223603.htmlhttp://www.aygfsteel.com/xiaoyi/articles/223603.html#Feedback0http://www.aygfsteel.com/xiaoyi/comments/commentRss/223603.htmlhttp://www.aygfsteel.com/xiaoyi/services/trackbacks/223603.html阅读全文

]]>
վ֩ģ壺
ƽ|
|
|
|
ӳ|
|
Ƽ|
|
ƽ|
|
|
|
|
|
|
|
|
ͨ|
|
찲|
|
̶|
ƽ|
ƽ̶|
|
|
|
տ|
|
|
ˮ|
|
|
|
Ͻ|
˶|
̨ʡ|
п|
|
Ϫ|
ء|