??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><link>http://www.aygfsteel.com/xiaoyi/articles/270526.html</link><dc:creator>可爱的小?/dc:creator><author>可爱的小?/author><pubDate>Wed, 13 May 2009 19:15:00 GMT</pubDate><guid>http://www.aygfsteel.com/xiaoyi/articles/270526.html</guid><wfw:comment>http://www.aygfsteel.com/xiaoyi/comments/270526.html</wfw:comment><comments>http://www.aygfsteel.com/xiaoyi/articles/270526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xiaoyi/comments/commentRss/270526.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xiaoyi/services/trackbacks/270526.html</trackback:ping><description><![CDATA[     摘要: js文g(yizhi_ajax.js)   1      /**//***  仅作为学习交之?  2         *  h勿用于商业用? &n...  <a href='http://www.aygfsteel.com/xiaoyi/articles/270526.html'>阅读全文</a><img src ="http://www.aygfsteel.com/xiaoyi/aggbug/270526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xiaoyi/" target="_blank">可爱的小?/a> 2009-05-14 03:15 <a href="http://www.aygfsteel.com/xiaoyi/articles/270526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>毅ȝ之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 />
  1. /**
  2. *@Author bromon
  3. *2004-6-12
  4. */
  5. package org.bromon.test;
  6. import javax.servlet.*;
  7. import javax.servlet.http.*;
  8. public class SessionCount implements HttpSessionListener
  9. {
  10.     private static int count=0;
  11.     public void sessionCreated(HttpSessionEvent se)
  12.     {
  13.         count++;
  14.         System.out.println(“session创徏Q?#8221;+new java.util.Date());
  15.     }
  16.     public void sessionDestroyed(HttpSessionEvent se)
  17.     {
  18.        count--;
  19.        System.out.println(“session销?”+new java.util.Date());
  20.     }
  21.     public static int getCount()
  22.     {
  23.        return(count);
  24.      }
  25. }

  怎么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 />
  1. //check.jsp
  2. <%
  3.     String name=request.getParameter(“name”);
  4.     Name=new String(name.getBytes(“ISO8859-1”));
  5.     session.setAttribute(“user”,name);
  6. %>


  做过jsp的兄弟应该对q段代码再熟悉不q了Q下面写个监听器来监听用L陆,把所有用LID保存C个List当中Q这个监听器实作HttpSessionAttributeListener接口Q?br />
  1. /**
  2. *@Author bromon
  3. *2004-6-12
  4. */
  5. package org.bromon.test;
  6. import javax.servlet.*;
  7. import javax.servlet.http.*;
  8. import java.util.*;
  9. public class OnlineList implements HttpSessionAttributeListener
  10. {
  11.     private static List list=new ArrayList();
  12.     public void attributeAdded(HttpSessionBindingEvent se)
  13.     {
  14.         if(“user”.equals(se.getName()))
  15.         {
  16.             list.add(se.getValue());
  17.          }
  18.     }
  19.     public void attributeRemoved(HttpSessionBindingEvent se)
  20.     {
  21.          if(“user”.equals(se.getName()))
  22.          {
  23.             list.remove(se.getValue());
  24.          }
  25.     }
  26.     public void attributeReplaced(HttpSessionBindingEvent se){}
  27.     public static List getList()
  28.     {
  29.          return(list);
  30.      }
  31. }


写个单的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 />
  1. <script language="javascript"
  2. xml = new ActiveXObject("Microsoft.XMLHTTP"); 
  3. var post=" ";//构造要携带的数?nbsp;
  4. xml.open("POST","http://localhost:7001/TestWL/index.jsp",false);//使用POSTҎ打开一个到服务器的q接Q以异步方式通信 
  5. xml.setrequestheader("content-length",post.length); 
  6. xml.setrequestheader("content-type","application/x-www-form-urlencoded"); 
  7. xml.send(post);//发送数?nbsp;
  8. var res = xml.responseText;//接收服务器返回的数据 
  9. document.write(res); 
  10. </script>



  豁然开朗,q段代码是打开一个HTTPq接Q以标准的HTTP格式传递数据,如果你喜Ƣ,可以用XML的格式来传递。更改一下xml对象的构造方式就可以兼容Mozilla和Netscape。下面来写一个轮询,每隔一D|间刷Cơ用户列表,当然Q是不需要刷新页面的Q?br />
  1. <html>
  2. <head><title>探测?lt;/title>
  3. <script language="javascript">
  4. function detect()
  5. {
  6. xml = new ActiveXObject("Microsoft.XMLHTTP"); 
  7. var post=" ";//构造要携带的数?nbsp;
  8. xml.open("POST","http://localhost:7001/TestWL/index.jsp",false);//使用POSTҎ打开一个到服务器的q接Q以异步方式通信 
  9. xml.setrequestheader("content-length",post.length); 
  10. xml.setrequestheader("content-type","application/x-www-form-urlencoded"); 
  11. xml.send(post);//发送数?nbsp;
  12. var res = xml.responseText;//接收服务器返回的数据 
  13. list.innerText=res;
  14. setTimeout(“detect()”,5000);//每隔5U钟轮询一?/font>
  15. </script>
  16. <body onload=”detect()”>
  17. <a id=”list”></a>
  18. </body>
  19. </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阅读全文

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