摆渡人,外婆桥!
            ----只要路选对了,就不怕有多远!

含有中文字符串的截取问题!
问题:
    字符串:music<<美丽的草原我的家>>。该字符串的长度即str.length()为:17,而目前需要存入数据库对应的字段长度为:16。所以必须对字符串进行截取。而前16个字节中,“原”字只有半个。这样存入数据库确对会出现“?”。所以必须判断是否是半个汉字,即只能存入“music<<美丽的草”。

分析:
    汉字是双字节编码,它为了能够与英文字符分开,每个字节的最高位一定为1。如果是汉字,那么这个字节就是小于0的。这个函数就是通过这一原理实现的。所以要通过getBytes()转化为byte型,再比较与零的大小。  
getBytes()是把一个字符串转成一个byte数组,因为计算机的数据都是基于字符的,也就是说一个字符串实际上就是一个字符流,因此可以转为字符数组。

程序:
    public  static  String  getStr(String  src,  int  len)  {  
       if  (src  ==  null)              return  null;  
       if  (src.getBytes().length  <=  len)    return  src;  
 
       byte[]  s  =  src.getBytes();  
       int  flag  =  0;  
       for(int  i=0;i<len;++i){  
         if(s[i]  <  0)  flag++;    
       }  
       if(flag%2!=0)  len--;          
 
       byte[]  d  =  new  byte[len];  
       System.arraycopy(s,  0,  d,  0,  len);  
       return  new  String(d);  
   }  
posted @ 2005-12-28 09:18 swingboat 阅读(396) | 评论 (0) | 编辑 收藏
 
软件工程中的经典案例!

案例背景:
1、A small business called the ABC Company.
 a、Three sectors: software sector (SS); commercial sector (CS); finance sector (FS).
2、The SS was a team with less than 15 people.
 a、Mission: to develop and supply high quality business software products and services.
3、The SS was chaotic
 a、Although significant experience had accumulated over the years, there was no internal or external co-ordination.
 b、No managerial or engineering procedures or policies had been reinforced, and no administrative support existed.
 c、Quality was low. No one knew exactly what the other people working on
4、The other sectors of the business also had their own problems.
 a、Negotiation and sale of software contracts by the CS were based on insufficient knowledge about the
    corresponding products. This often led to last minute changes and adaptations that had not been planned nor
    managed.
 b、The financial situation of the firm was very fragile.
 c、All those factors contributed to increase the instability and confusion within the SS.
5、The ABC Company has made a strategic decision that it wants to improve its competency in software development to meet its vision.


案例情况:
1、SS提出了一个称为销售奖励程序SBP(用来管理支付地区代理佣金的软件)的单机版软件产品建议书,预计开发周期为1年。
2、公司决策层审批通过,但要求实现网络通讯功能,将工期缩短为6个月,尽管SS认为没有多大可能在6个月内完成,但公司决策层主意已定,认为只要技术人员加倍努力应没问题,允许扩大项目组规模。
3、SS试图:
   (1)采用C++和面向对象的设计方法;
   (2)采用一种报表自动生成工具;
   (3)拥有更新、更快的硬件设备;
   (4)雇佣到顶尖的开发人员。
   公司进一步要求加班加点拼命工作,将项目计划压缩到6个月内。
4、SS组建了项目组,由于公司内部固定的开发成员无法完成一些特定任务,招聘了1个合同制开发成员,该合同开发者被面试人员建议不宜雇佣,但项目经理急于用人,而且觉得他具备了相应开发技能,还是雇佣了他。
5、在项目组的第一次会议上,公司高管向项目组阐明了ABC公司对于SBP项目的关注,如果项目取得成功,会获得丰厚的奖赏。接着,项目经理与成员粗略讨论了项目计划,并与测试经理约定5个月后交付功能完备并通过测试的版本。
6、项目组用不到1个月时间完成了需求分析报告和设计工作,似乎很好地发挥了C++的功能优势。然后开始了疯狂的编码,以满足在第4个月时发布第一个测试版本的要求。
7、项目进展并非一帆风顺,大家都不喜欢那个合同工,抱怨他不让任何人靠近他的代码,项目经理将这些归结于由于人们长时间工作所导致的个性冲突。
8、然而到了第4个月中旬,CS通知新的销售奖励制度已经发布,项目组发现他们必须改变输入对话框、数据库设计以及数据存取对象和通信对象,以适应新的结构。
   ※陷入修改的混乱当中
9、转眼间数周过去了,预计第5个月初交付测试通过的完全版的日期到来并过去了,项目组还是没能提交第1个测试版,存在许多遗留问题
   ※报表生成程序不如预想那样工作;人员互相埋怨和不协作;…
10、公司高管又召开了项目组会议,要求项目组努力工作以按时交付产品,每天工作10小时。每个人为了按期交付而加班加点,终于在在第7个月初提交第一个完整版本供测试。一个半月每周60小时的工作几乎压垮了他们,这期间个别开发人员被他以前的项目组经常叫去做一些技术支持工作(大约每天得为他们工作2小时)。
   ※2天后,测试经理发布了第1个问题报告,在程序中发现了200多个问题,包括必须处理的一类严重错误数十个。
   ※测试组每小时还在发现新的错误。
11、经过1天的讨论并估算修正每个错误所需要的时间,公司高管被迫同意项目计划延期4周,要求每个人被要求每天工作12小时,每周工作6天,高管则开始了自己为期1个月的年假去度假了。
12、接下的1个月时间里,项目组每天都要在办公室呆上12小时,但他们会花许多时间看杂志、电话聊天,他们每处理一个错误,测试人员就会发现2个新的错误,一些本来估计花几分钟就可以解决的问题由于牵扯到项目各方,变成需花数天时间才能解决。
13、这期间,那名合同工接受了另外一家公司的合约而离职,项目经理只好又紧急雇佣了一个程序员来帮助处理其所编代码,但经过1周的“鏖战”,发现程序中存在一些深层缺陷,被迫重新设计和编写程序。由于新人不了解团队的工作规则,经常覆盖其他成员的工作文件,导致工作的重复与时间的浪费。
14、半年后,项目终于正式发布,得到了市场及用户的认可。
   ※ABC公司向项目组每位成员颁发了250元的奖金,以感谢他们辛勤的工作。
   ※几周以后,部分人员跳槽到另外一家公司去了。

posted @ 2005-12-28 09:17 swingboat 阅读(541) | 评论 (0) | 编辑 收藏
 
在struts框架下实现文件的上传

由于jspsmartupload上传文件,当前端页面没有file控件时,后端用jspsmartupload控件upload时将会走入一个死循环。现在采用struts自己提供的功能实现文件的上传。
1、前端页面upload.jsp
<html:form action="/filesave.do" styleId="formItem" method="post"  enctype="multipart/form-data">
<INPUT  class='input-file' type="file" name="theFile">
</html:form>
2、struts-config.xml文件配置
<form-bean name="UploadForm" type="yhp.test.web.UploadForm" />
<action input="/upload.jsp" name="UploadForm"   path="/filesave" scope="request" type="yhp.test.web.UploadAction" validate="false">
      <forward name="success" path="/success.jsp" />
      <forward name="error" path="/error.jsp" />
    </action>
3、UploadForm.java文件
package yhp.test.web;

import org.apache.struts.upload.FormFile;
import org.apache.struts.action.ActionForm;

public class UploadForm extends ActionForm {
  protected String theText;   //使用protected ,其它需要上传的form可以继承此form
  protected boolean writeFile = true;
  protected FormFile theFile;
  protected String filePath;

  public String getTheText() {
    return theText;
  }
  public void setTheText(String theText) {
    this.theText = theText;
  }
  public FormFile getTheFile() {
    return theFile;
  }
  public void setTheFile(FormFile theFile) {
    this.theFile = theFile;
  }
  public void setWriteFile(boolean writeFile) {
    this.writeFile = writeFile;
  }
  public boolean getWriteFile() {
    return writeFile;
  }
  public void setFilePath(String filePath) {
    this.filePath = filePath;
  }
  public String getFilePath() {
    return filePath;
  }
  public void reset() {
    writeFile = false;
  }
}

4、UploadAction.java文件
package yhp.test.web;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;


public class UploadAction extends Action {
  public ActionForward execute(ActionMapping actionMapping,
                               ActionForm actionForm,
                               HttpServletRequest httpServletRequest,
                               HttpServletResponse httpServletResponse) throws
      Exception {
    if (actionForm instanceof UploadForm) {
      // 获取上传的目录
      String path = getServlet().getServletContext().getInitParameter("UPLOADPATH");
      File f = new File(path);
      if (!f.isDirectory()) {
        f.mkdir();
      }

      UploadForm theForm = (UploadForm) actionForm;
      String text = theForm.getTheText();
      FormFile file = theForm.getTheFile();
      String fileName = file.getFileName();
      String contentType = file.getContentType();
      boolean writeFile = theForm.getWriteFile();
      String desFileName=path fileName ;
      String size = (file.getFileSize() + " bytes");
      try {
          InputStream stream = file.getInputStream();
   OutputStream bos = new FileOutputStream(strFileName);         
          byte[] buffer = new byte[file.getFileSize()];
          stream.read(buffer);
          bos.write(buffer);
   stream.close(); 
          bos.close();
          return actionMapping.findForward("success");
      }
      catch (FileNotFoundException fnfe) {
          return actionMapping.findForward("success");
      }
      catch (IOException ioe) {
          return actionMapping.findForward("success");
      }
      catch(Exception eo){
          return actionMapping.findForward("error");
      } 
    }else{
      return actionMapping.findForward("error");
    }
  }
}

posted @ 2005-12-28 09:16 swingboat 阅读(316) | 评论 (0) | 编辑 收藏
 
struts及jstl使用问题集(一)

1、ActionForm中的属性必须在<html:form></html:form>块中输出
struts-config.xml文件配置:
  <form-beans>
    <form-bean name="TestForm" type="yhp.test.struts.TestForm" />
  </form-beans>
<action-mappings>
    <action input="/test/teststruts.jsp" name="TestForm" path="/test/teststruts" scope="request" type="yhp.test.struts.TestAction" validate="false">
      <forward name="success" path="/test/teststruts.jsp" />
    </action> 
</action-mappings>
TestForm.java文件(两个属性):
package yhp.test.struts;
import org.apache.struts.action.*;
public class TestForm extends ActionForm{
    private String message;
    private String data;
    public String getData() {
        return data;
    }
    public void setData(String data) {
        this.data = data;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
}
TestAction.java文件:
public ActionForward execute(ActionMapping actionMapping,
            ActionForm actionForm, HttpServletRequest httpServletRequest,
            HttpServletResponse httpServletResponse) throws Exception {
        if(actionForm instanceof TestForm){
         TestForm form=(TestForm)actionForm;
         form.setMessage("Test Struts!");
         form.setData("Return data is YHP");
        }
        return actionMapping.findForward("success");       
    }
teststruts.jsp文件:
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%
String contextPath = request.getContextPath();
response.setLocale(java.util.Locale.CHINA);
%>
<html>
 <head>
 </head> 
<body>
<html:form action="/test/teststruts.do" styleId="formItem" method="post">
   <html:text  property="message"/><br>
   <html:text  property="data"/><br>
</html:form>
</body>
</html>
说明:没有红色部分代码,后台会报出Cannot find bean org.apache.struts.taglib.html.BEAN in any scope的错误信息。这样说明struts中ActionForm的数据是基于html中对应form的数据。
2、不利用struts标签输出ActionForm的属性值
<%@ page import="yhp.test.struts.TestForm"%>
<%
TestForm form=(TestForm)request.getAttribute("TestForm");//ActionForm类名
%>
<html>
 <head>
 </head> 
<body>
<html:form action="/test/teststruts.do" styleId="formItem" method="post">
   <html:text  property="message"/><br>
   <html:text  property="data"/><br>
 <%=form.getMessage()%><br>
</html:form>
</body>
</html>
3、通过JSTL输出ActionForm中的属性值
利用JSTL输出AcitonForm中的属性值:<c:out value="${TestForm.data}" /><br>
利用JSTL输出AcitonForm中的属性值:<c:out value="${requestScope.TestForm.data}" /><br> 
红色的字是ActionForm类名,两句的结果是一样的
说明:struts把ActionForm写入了requestScope中,类名作为requestScope的名字。
即:httpServletRequest.setAttribute("TestForm",actionForm);
<c:out value="${requestScope.TestForm.data}" />  也就是输出一个bean的属性值。

posted @ 2005-12-28 09:15 swingboat 阅读(480) | 评论 (0) | 编辑 收藏
 
利用html中的div标签实现网页中某一块区域的自动滚动
在web页面中,有一块固定大小的区域。在此区域中显示的数据由于条件不同而显示的数据也不同,有的时候显示的数据非常的多,会超出此区域的大小范围,而有的时候很少。所以希望有一种设置,能根据数据的多少,在固定区域中自动产生滚动条。在web页面中div标签就可以满足此要求。
html代码如下:
<html>
<body>
<div style="height:400;overflow:auto ">
<table width="543" height="300" border="1">
  <tr>
    <td width="59"><div align="center"></div></td>
    <td width="59"><div align="center"></div></td>
    <td width="403"><div align="center"></div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>
</div>
</body>
</html>
说明:div的高度为400,而table的高度为300,此种情况不会出现滚动条。div的高度为300,而table的高度为400,此种情况下,在table的旁边就会出现滚动条。主要是利用了div的overflow属性。
posted @ 2005-12-28 09:15 swingboat 阅读(1250) | 评论 (0) | 编辑 收藏
 
junit的使用

背景:当我们写完一个类的时候,需要对类的某些方法进行测试。我以前的做法是在类的main函数中,new一个类的实例,然后调用类的方法进行测试。当需要测试的方法越来越较多的时候,main函数也在逐渐的变大,最后连自己都糊涂了。这时候就需要junit了。
编码原则:
        从技术上强制你先考虑一个类的功能,也就是这个类提供给外部的接口,而不至于太早陷入它的细节。这是面向对象提倡的一种设计原则。
如果你要写一段代码:
1. 先用 junit 写测试,然后再写代码
2. 写完代码,运行测试,测试失败
3. 修改代码,运行测试,直到测试成功
编写步骤:如下图

测试代码:
package yhp.test.junit;

import junit.framework.*;
public class TestCar extends TestCase {
    protected int expectedWheels;
    protected Car myCar;
    public TestCar(String name) {
        super(name);
    }
    protected void setUp(){  //进行初始化任务
        expectedWheels = 4;
        myCar = new Car();
    }
    public static Test suite()    {//JUnit的TestRunner会调用suite方法来确定有多少个测试可以执行
        return new TestSuite(TestCar.class);
    }
    public void testGetWheels(){//以test开头,注意命名
        assertEquals(expectedWheels, myCar.getWheels());
    }
}

以下是通过eclipse自带的junit工具产生的代码:
package yhp.test.junit;
import junit.framework.TestCase;
public class TestCar2 extends TestCase {
    protected int expectedWheels;
    protected Car myCar;
    public static void main(String[] args) {
        junit.textui.TestRunner.run(TestCar2.class);//TestCar是个特殊suite的静态方法
    }
    protected void setUp() throws Exception {
        super.setUp();
        expectedWheels = 4;
        myCar = new Car();
    }
    protected void tearDown() throws Exception {
        super.tearDown();
    }
    public TestCar2(String arg0) {
        super(arg0);
    }
    public final void testGetWheels() {
        assertEquals(expectedWheels, myCar.getWheels());
    }
}

当有多个测试类的时候,系统能进行统一测试,这时可以利用TestSuite来实现。可以将TestSuite看作是包裹测试的一个容器。
通过eclipse自带的工具生成的代码如下:
package yhp.test.junit;
import junit.framework.Test;
import junit.framework.TestSuite;

public class AllTests {
     public static Test suite() {
        TestSuite suite = new TestSuite("Test for yhp.test.junit");
        //$JUnit-BEGIN$
        suite.addTest(TestCar.suite());         //调用的方法,参数不一样,实际是一致的。
        suite.addTestSuite(TestCar2.class);  //
        //$JUnit-END$
        return suite;
    }
}

posted @ 2005-12-28 09:14 swingboat 阅读(500) | 评论 (0) | 编辑 收藏
 
在jboss4环境下,URL查询参数中支持中文
在jboss4环境下,使URL参数中支持中文,例如:
http://site.net?name=中国
找到jboss4的deploy\jbossweb-tomcat50.sar\server.xml,编辑该文件,在下面的XML节点中增加红色的字
<Connector port="8080" address="${jboss.bind.address}"
         maxThreads="150" maxHttpHeaderSize="8192"
         minSpareThreads="25" maxSpareThreads="75"
         enableLookups="false" redirectPort="8443" acceptCount="100"
         connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" />
posted @ 2005-12-28 09:13 swingboat 阅读(306) | 评论 (0) | 编辑 收藏
 
jsp页面,以excel的方式输出
在jsp页面中加入以下的语句,就可以使jsp以excel的形式输出。
response.setHeader("Content-Type", "application/vnd.ms-excel;charset=GBK");
response.setContentType("application/vnd.ms-excel;charset=GBK");
posted @ 2005-12-28 09:13 swingboat 阅读(304) | 评论 (0) | 编辑 收藏
 
有限状态机的实现
有限状态机(Finite State Machine或者Finite State Automata)是软件领域中一种重要的工具,很多东西的模型实际上就是有限状态机。

最近看了一些游戏编程AI的材料,感觉游戏中的AI,第一要说的就是有限状态机来实现精灵的AI,然后才是A*寻路,其他学术界讨论比较多的神经网络、模糊控制等问题还不是很热。

FSM的实现方式:
1) switch/case或者if/else
这无意是最直观的方式,使用一堆条件判断,会编程的人都可以做到,对简单小巧的状态机来说最合适,但是毫无疑问,这样的方式比较原始,对庞大的状态机难以维护。

2) 状态表
维护一个二维状态表,横坐标表示当前状态,纵坐标表示输入,表中一个元素存储下一个状态和对应的操作。这一招易于维护,但是运行时间和存储空间的代价较大。

3) 使用State Pattern
使用State Pattern使得代码的维护比switch/case方式稍好,性能上也不会有很多的影响,但是也不是100%完美。不过Robert C. Martin做了两个自动产生FSM代码的工具,for java和for C++各一个,在http://www.objectmentor.com/resources/index上有免费下载,这个工具的输入是纯文本的状态机描述,自动产生符合State Pattern的代码,这样developer的工作只需要维护状态机的文本描述,每必要冒引入bug的风险去维护code。

4) 使用宏定义描述状态机
一般来说,C++编程中应该避免使用#define,但是这主要是因为如果用宏来定义函数的话,很容易产生这样那样的问题,但是巧妙的使用,还是能够产生奇妙的效果。MFC就是使用宏定义来实现大的架构的。
在实现FSM的时候,可以把一些繁琐无比的if/else还有花括号的组合放在宏中,这样,在代码中可以3)中状态机描述文本一样写,通过编译器的预编译处理产生1)一样的效果,我见过产生C代码的宏,如果要产生C++代码,己软MFC可以,那么理论上也是可行的。
posted @ 2005-12-28 09:02 swingboat 阅读(2438) | 评论 (1) | 编辑 收藏
 
cache模式的两种构成方式
在我们系统开发中,有一些数据变动比较少,但是会经常对它进行访问。为了提高访问的性能,我们首先会把数据从数据库中读出,放入到一个Hashtable中。以后数据的访问都是从Hashtable中获取,这样起到了一个cache的作用。从数据库中获取数据有两种方式:
1、系统第一次访问,从数据中获取所有的数据放入到Hashtable。
      这种方式比较适合数据量比较小的数据,例如:模块的管理。一个系统中不可能有太多的模块,一次从数据库中获取出所有的模块数据,放入到Hashtable中。以后对模块的访问都只用对Hashtable访问就可以了。
 2、系统第一次访问,只获取需要访问的数据,然后把它们放入到Hashtable中
       这种方式比较适合数据量还是比较大的数据。需要访问数据时,首先检测Hashtable中有没有需要的数据,如果有就直接从Hashtable中获取,如果没有就从数据库中获取需要的数据,然后再把这些数据放入到Hashtable中。

注意:两种方式,当数据被改动的时候(add,update,del)同时也需要更新Hashtable中的数据。
posted @ 2005-12-28 09:01 swingboat 阅读(397) | 评论 (0) | 编辑 收藏
 
仅列出标题
共6页: 上一页 1 2 3 4 5 6 下一页 
 
<2025年6月>
日一二三四五六
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

 公告


 导航

  • BlogJava
  • 首页
  • 发新随笔
  • 发新文章
  • 联系
  • 聚合
  • 管理

 统计

  • 随笔: 51
  • 文章: 1
  • 评论: 50
  • 引用: 0

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿(4)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类

  • JAVA(21) (rss)
  • javascript&DHTML&CSS(15) (rss)
  • Oracle/MySQL(6) (rss)
  • SOA(1) (rss)
  • WEB2.0(4) (rss)
  • WorkFlow&BPEL(1) (rss)
  • 名词概念(1) (rss)
  • 架构模式 (rss)
  • 汽车&甲壳虫 (rss)
  • 设计模式(3) (rss)
  • 软件工程(1) (rss)

随笔档案

  • 2007年9月 (1)
  • 2007年8月 (3)
  • 2007年7月 (1)
  • 2007年5月 (2)
  • 2007年4月 (4)
  • 2007年3月 (1)
  • 2007年2月 (1)
  • 2006年12月 (1)
  • 2006年11月 (2)
  • 2006年10月 (1)
  • 2006年8月 (1)
  • 2006年4月 (1)
  • 2006年3月 (2)
  • 2006年2月 (4)
  • 2005年12月 (26)

文章档案

  • 2006年1月 (1)

IT

  • Delver 's Study BLOG
  • 竹笋炒肉

搜索

  •  

积分与排名

  • 积分 - 133135
  • 排名 - 466

最新随笔

  • 1. IE对select的处理,又一怪现象:innerHTML竟然不起作用。
  • 2. 在IE下,页面只有一个text的时候,回车将自动submit。
  • 3. 设置input的内容居中?
  • 4. 可恶的“本页不但包含安全的内容,也包含不安全的内容。是否显示不安全的内容”对话框?
  • 5. 利用JGroups同步两台server之间的cache。
  • 6. 有关“+”和“_”的search。
  • 7. synchronized的作用
  • 8. HTML的特殊字符
  • 9. 不同时区之间,时间的转换?
  • 10. javascript在IE和Firefox中的区别1

最新评论

  • 1. re: javascript转换日期字符串为Date对象
  • 大牛
  • --sfafa
  • 2. re: synchronized的作用[未登录]
  • 把100换成1000就好了!
  • --xyz
  • 3. re: synchronized的作用
  • 晦涩难懂!
  • --无知者
  • 4. re: synchronized的作用
  • 好
  • --白河夜歌
  • 5. re: 可恶的“本页不但包含安全的内容,也包含不安全的内容。是否显示不安全的内容”对话框?
  • 评论内容较长,点击标题查看
  • --老梁

阅读排行榜

  • 1. javascript转换日期字符串为Date对象(47715)
  • 2. synchronized的作用(16408)
  • 3. 可恶的“本页不但包含安全的内容,也包含不安全的内容。是否显示不安全的内容”对话框?(11093)
  • 4. 不同时区之间,时间的转换?(7455)
  • 5. 利用JGroups同步两台server之间的cache。(6606)

评论排行榜

  • 1. synchronized的作用(18)
  • 2. 可恶的“本页不但包含安全的内容,也包含不安全的内容。是否显示不安全的内容”对话框?(7)
  • 3. javascript在IE和Firefox中的区别1(6)
  • 4. javascript转换日期字符串为Date对象(4)
  • 5. 在IE下,页面只有一个text的时候,回车将自动submit。(3)

Powered by: 博客园
模板提供:沪江博客
Copyright ©2025 swingboat