随笔 - 15, 文章 - 0, 评论 - 5, 引用 - 0
数据加载中……

2008年7月27日

4xx - 客户端错误

发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。 ·400 - 错误的请求。
·401 - 访问被拒绝。IIS 定义了许多不同的 401 错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在 IIS 日志中显示: ·401.1 - 登录失败。
·401.2 - 服务器配置导致登录失败。
·401.3 - 由于 ACL 对资源的限制而未获得授权。
·401.4 - 筛选器授权失败。
·401.5 - ISAPI/CGI 应用程序授权失败。
·401.7 – 访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。

·403 - 禁止访问:IIS 定义了许多不同的 403 错误,它们指明更为具体的错误原因: ·403.1 - 执行访问被禁止。
·403.2 - 读访问被禁止。
·403.3 - 写访问被禁止。
·403.4 - 要求 SSL。
·403.5 - 要求 SSL 128。
·403.6 - IP 地址被拒绝。
·403.7 - 要求客户端证书。
·403.8 - 站点访问被拒绝。
·403.9 - 用户数过多。
·403.10 - 配置无效。
·403.11 - 密码更改。
·403.12 - 拒绝访问映射表。
·403.13 - 客户端证书被吊销。
·403.14 - 拒绝目录列表。
·403.15 - 超出客户端访问许可。
·403.16 - 客户端证书不受信任或无效。
·403.17 - 客户端证书已过期或尚未生效。
·403.18 - 在当前的应用程序池中不能执行所请求的 URL。这个错误代码为 IIS 6.0 所专用。
·403.19 - 不能为这个应用程序池中的客户端执行 CGI。这个错误代码为 IIS 6.0 所专用。
·403.20 - Passport 登录失败。这个错误代码为 IIS 6.0 所专用。

·404 - 未找到。 ·404.0 -(无) – 没有找到文件或目录。
·404.1 - 无法在所请求的端口上访问 Web 站点。
·404.2 - Web 服务扩展锁定策略阻止本请求。
·404.3 - MIME 映射策略阻止本请求。

·405 - 用来访问本页面的 HTTP 谓词不被允许(方法不被允许)
·406 - 客户端浏览器不接受所请求页面的 MIME 类型。
·407 - 要求进行代理身份验证。
·412 - 前提条件失败。
·413 – 请求实体太大。
·414 - 请求 URI 太长。
·415 – 不支持的媒体类型。
·416 – 所请求的范围无法满足。
·417 – 执行失败。
·423 – 锁定的错误。

posted @ 2008-08-04 14:16 zhouzhou@ 阅读(306) | 评论 (1)编辑 收藏

小结 Commons BeanUtils

 

Commons BeanUtils 的官方网址:http://commons.apache.org/beanutils/

Commins BeanUtils是针对JavaBeans一般性操作的组件,可以用来对JavaBeans进行复制,属性的读取,设置,修改,还以动态构造JavaBeans对象。

使用这个组件需要三个Jar文件
其中两个是 commons-logging-1.1.1下的commons-logging-1.1.1.jar 和commons-logging-api-1.1.1.jar
剩下一个是   commons-beanutils-1.8.0-BETA   下的commons-beanutils-1.8.0-BETA.jar
把这三个加入到项目的构件路径下即可。

下面为一个简单的例子

新建User Profile Address BeanUtilsExample 四个类


1 User.java

package com.v503.zhouzhou;

public class User {
 private Long userId;
 private String username;
 private String password;
 private Profile profile;

 public Long getUserId() {
  return userId;
 }

 public  void setUserId(Long userId) {
  this.userId = userId;
 }

 public String getUsername() {
  return username;
 }

 public void setUsername(String username) {
  this.username = username;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 public Profile getProfile() {
  return profile;
 }

 public void setProfile(Profile profile) {
  this.profile = profile;
 }

}

2 Profile.java

package com.v503.zhouzhou;

import java.util.Date;
import java.util.Map;

 

public class Profile {
 private Map<String, String> phone;
 private Address[] address;
 private Date birthDate;
 private String email;

 public Map<String, String> getPhone() {
  return phone;
 }

 public void setPhone(Map<String, String> phone) {
  this.phone = phone;
 }

 public Address[] getAddress() {
  return address;
 }

 public void setAddress(Address[] address) {
  this.address = address;
 }

 public Date getBirthDate() {
  return birthDate;
 }

 public void setBirthDate(Date birthDate) {
  this.birthDate = birthDate;
 }

 public String getEmail() {
  return email;
 }

 public void setEmail(String email) {
  this.email = email;
 }

}



3 Address.java

package com.v503.zhouzhou;

public class Address {
 private String postCode;
 private String country;
 private String city;
 private String addr;

 public Address() {

 }

 public Address(String postCode, String country, String city, String addr) {
  this.postCode = postCode;
  this.country = country;
  this.city = city;
  this.addr = addr;
 }

 public String getPostCode() {
  return postCode;
 }

 public void setPostCode(String postCode) {
  this.postCode = postCode;
 }

 public String getCountry() {
  return country;
 }

 public void setCountry(String country) {
  this.country = country;
 }

 public String getCity() {
  return city;
 }

 public void setCity(String city) {
  this.city = city;
 }

 public String getAddr() {
  return addr;
 }

 public void setAddr(String addr) {
  this.addr = addr;
 }

}



4 BeanUtilsExample.java


package com.v503.zhouzhou;

import java.lang.reflect.InvocationTargetException;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils;


public class BeanUtilsExamples {

 @SuppressWarnings("unused")
 private User prepareData() {
  Address[] address = { new Address("111111", "中国", "保定", "河北大学"),
    new Address("22222", "中国", "保定", "河北大学工商学院") };
  Profile profile = new Profile();
  profile.setBirthDate(new GregorianCalendar(1987, 04, 17).getTime());
  profile.setEmail("aa1987417@126.com");
  Map<String, String> phone = new HashMap<String, String>();
  phone.put("mobilephone", "1532222706");
  phone.put("home", "110");
  profile.setPhone(phone);
  profile.setAddress(address);

  User user = new User();
  user.setUserId(new Long(503));
  user.setUsername("zhouzhou");
  user.setProfile(profile);
  user.setPassword("hicc");
  return user;

 }

 public static void main(String[] args) {
  BeanUtilsExamples a = new BeanUtilsExamples();
  User user = a.prepareData();
  System.out.println("输出对象的属性值---------------------------------");
  try {
   System.out.println(BeanUtils.getProperty(user, "userId"));       //BeanUtils中读取属性的方法getProperty()
   System.out.println(BeanUtils.getProperty(user, "username"));
   System.out.println(BeanUtils.getProperty(user, "password"));
   System.out.println(BeanUtils.getProperty(user, "profile.email"));
   System.out.println(BeanUtils.getProperty(user, "profile.birthDate"));
   System.out.println(BeanUtils.getProperty(user, "profile.phone(home)"));
   System.out.println(BeanUtils.getProperty(user, "profile.phone(mobilephone)"));
   System.out.println(BeanUtils.getProperty(user, "profile.address[0].city"));
   System.out.println(PropertyUtils.getProperty(user, "profile.address[1].country"));
   
   User user2 = new User();
   BeanUtils.copyProperties(user2, user); //BeanUtils中复制属性的方法getProperty()

   System.out.println("输出复制属性的属性值-------------------------------");
   System.out.println(BeanUtils.getProperty(user, "username"));
   System.out.println(BeanUtils.getProperty(user, "profile.birthDate"));
   System.out.println(BeanUtils.getProperty(user, "profile.phone(home)"));
   System.out.println(BeanUtils.getProperty(user, "profile.address[0].city"));
   
   
   System.out.println("输出复制属性修改以后的属性值---------------------");
   BeanUtils.setProperty(user2, "userId", new Long(8888888));   //设置属性的方法
   PropertyUtils.setProperty(user2, "username", "周旭");
   BeanUtils.setProperty(user2, "profile.email", "549748067@qq.com");
   BeanUtils.setProperty(user2, "profile.birthDate", new GregorianCalendar(2008, 8, 1).getTime());
   BeanUtils.setProperty(user2, "profile.address[0]", new Address("6666666", "中国","紫园","保定"));
   System.out.println(BeanUtils.getProperty(user2, "userId"));
   System.out.println(BeanUtils.getProperty(user2, "username"));
   System.out.println(BeanUtils.getProperty(user2, "profile"));
   System.out.println(BeanUtils.getProperty(user2, "profile.email"));
   System.out.println(BeanUtils.getProperty(user2, "profile.birthDate"));
   System.out.println(BeanUtils.getProperty(user2, "profile.address[0].city"));

   System.out.println("与被复制属性值的对象的比较-------------------------------");
   System.out.println(BeanUtils.getProperty(user, "userId"));
   System.out.println(BeanUtils.getProperty(user, "username"));
   System.out.println(BeanUtils.getProperty(user, "profile"));
   System.out.println(BeanUtils.getProperty(user, "profile.email"));
   System.out.println(BeanUtils.getProperty(user, "profile.birthDate"));
   System.out.println(BeanUtils.getProperty(user, "profile.address[0].city"));
  } catch (IllegalAccessException e) {

   e.printStackTrace();
  } catch (InvocationTargetException e) {

   e.printStackTrace();
  } catch (NoSuchMethodException e) {

   e.printStackTrace();
  }

 }

}


 




 

posted @ 2008-08-01 10:38 zhouzhou@ 阅读(588) | 评论 (0)编辑 收藏

JavaBeans对象的作用范围

        作用范围            对应的对象         对象的类型
         page                    pageContext          pagetext
         request                request                  servletRequest
         session                session                   HttpSession
         application           application             servletContext


page:只对当前页面有效

request:在当前页面有效,同时当这个页面通过forward方式转向另外页面或通过include方式包含另外页面,在这些另外的页面也有效

session:可以访问其他的jsp页面中,作用范围跨页面,但只针对一个特定的用户

application:任何用户创建一个JavaBeans对象,所用户都可以使用这个对象

posted @ 2008-07-30 17:12 zhouzhou@ 阅读(170) | 评论 (0)编辑 收藏

JS验证方法

 <!--  
  说明:每个校验函数默认都不校验要求的输入长度,只有当用户有输入的时候才开始校验;  
              这样设计的目的是因为实际应用中有的表单是可以不要输入的,如果某个表单域要求一定输入,  
      那就可以象最后那个表单域一样加入长度校验。  
  -->  
  <HTML><HEAD><TITLE>FormCheck</TITLE>  
  <META   http-equiv=Content-Type   content="text/html;   charset=gb2312">  
  <STYLE>TD   {FONT-SIZE:   12px;   COLOR:   #333333}</STYLE>  
  <SCRIPT   language=JavaScript   type=text/JavaScript    
   >

 /*焦点放置在第一个表单域*/  
  function   focusInFirst(){  
    document.forms[0].elements[0].focus();}  
   
  /*判断用户输入是否为空*/  
  function   isEmpty(ui)   {  
    return   (ui==null||ui=="");}  
   
  /*取得用户输入的字符串的长度*/  
  function   getLength(ui)   {  
    var   i,sum=0;  
    for(i=0;i<ui.length;i++)   {  
      if   ((ui.charCodeAt(i)>=0)   &&   (ui.charCodeAt(i)<=255))  
        sum++;  
          else  
    sum+=2;}  
    return   sum;}  
   
  /*是否为数字、字母或下划线*/  
  function   isNLU(ui)   {  
      var   valid=/^\w*$/;  
      return   (valid.test(ui));}  
   
  /*判断是否为身份证号码*/  
  function   isIdno(ui){  
      var   valid=/(^\d{16}$)|(^\d{18}$)/;  
      return   (isEmpty(ui)||valid.test(ui));}  
   
  /*判断是否为邮政编码*/  
  function   isPostCode(ui){  
      var   valid=/^\d{6}$/;  
      return   (isEmpty(ui)||valid.test(ui));}  
   
  /*判断是否为固定电话*/  
  function   isChinaTel(ui){  
      var   valid=/^0\d{2,3}\-\d{7,8}$/;  
      return   (isEmpty(ui)||valid.test(ui));}  
   
  /*判断是否为移动电话*/  
  function   isChinaMob(ui){  
      var   valid=/^0?13[0,1,3,5,6,8,9]\d{8}$/;  
      return   (isEmpty(ui)||valid.test(ui));}  
   
  /*判断是否为电话,只能为固定电话或移动电话*/  
  function   isTel(ui){  
      var   valid=/(^0\d{2,3}\-\d{7,8}$)|(^0?13[0,1,3,5,6,8,9]\d{8}$)/;  
      return   (isEmpty(ui)||valid.test(ui));}  
   
  /*判断是否为邮件*/  
  function   isMail(ui){  
    if(isEmpty(ui)){return   true;}  
      var   notValid=/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(^\-)|(\-\.)|(\.\-)/;  
      var   valid=/^.+\@[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}$/;  
    return   (!notValid.test(ui)&&valid.test(ui));}  
   
  /*用户输入字符串长度是否在两值之间*/  
  function   isLenBetween(ui,minl,maxl)   {  
      return   (ui>=minl&&ui<=maxl);}

 


</SCRIPT>  
   
  <SCRIPT   language=JavaScript>  
  <!--  
  function   formCheck(){  
  if(!isIdno(document.testForm.id.value)){  
    alert("身份证号码输入有误!要求只能输入数字,长度为16或18位。");  
    document.testForm.id.focus();  
    return   false;}  
  if(!isChinaTel(document.testForm.tel.value)){  
    alert("固定电话号码输入有误!合法的格式为:区号-电话号码。");  
    document.testForm.tel.focus();  
    return   false;}  
  if(!isChinaMob(document.testForm.mobi.value)){  
    alert("移动电话号码输入有误!");  
    document.testForm.mobi.focus();  
    return   false;}  
  if(!isMail(document.testForm.mail.value)){  
    alert("邮箱输入有误!");  
    document.testForm.mail.focus();  
    return   false;}  
  if(!isPostCode(document.testForm.post.value)){  
    alert("邮政编码输入有误!要求只能输入数字,长度为6位。");  
    document.testForm.post.focus();  
    return   false;}  
  if(!isNLU(document.testForm.nlu.value)){  
    alert("该域只能输入数字、字母或下划线!");  
    document.testForm.nlu.focus();  
    return   false;}  
  var   len=getLength(document.testForm.leng.value);  
  if(len<4||len>6){  
    alert("该域要求输入长度范围是4至6个字符!");  
    document.testForm.leng.focus();  
    return   false;}  
  }  
  //-->  
  </SCRIPT>  
   
  <BODY   text=#000000   bgColor=#ffffff   onload=focusInFirst()>  
  <CENTER><B><FONT   face="Geneva,   Arial,   Helvetica,   san-serif"   color=#ff6600    
  size=4>The   sample   of   FormCheck</FONT></B>   <FONT    
  face="Arial,   Helvetica,   sans-serif"   size=2>(By   Roczhao)   </FONT>  
  <HR   width="60%"   color=#000000   noShade   SIZE=1>  
   
  <FORM   name=testForm   onsubmit="return   formCheck();"   method=post>  
  <TABLE   cellSpacing=0   cellPadding=0   width=500   border=1>  
      <TBODY>  
      <TR>  
          <TD   width=182   height=25>身份证:</TD>  
          <TD   width=312><INPUT   name=id>   </TD></TR>  
      <TR>  
          <TD   width=182   height=25>固定电话:</TD>  
          <TD   width=312><INPUT   name=tel>   </TD></TR>  
      <TR>  
          <TD   width=182   height=25>手机号码:</TD>  
          <TD   width=312><INPUT   name=mobi>   </TD></TR>  
      <TR>  
          <TD   width=182   height=25>邮箱:</TD>  
          <TD   width=312><INPUT   name=mail>   </TD></TR>  
      <TR>  
          <TD   width=182   height=25>邮编:</TD>  
          <TD   width=312><INPUT   name=post>   </TD></TR>  
      <TR>  
          <TD   width=182   height=25>只能输入数字、字母、下划线:</TD>  
          <TD   width=312><INPUT   name=nlu>   </TD></TR>  
      <TR>  
          <TD   width=182   height=25>输入长度在4-6之间:</TD>  
          <TD   width=312><INPUT   name=leng>   </TD></TR>  
      <TR   align=center>  
          <TD   colSpan=2   height=25><INPUT   type=submit   value="     点击测试     "   name=Submit>    
          </TD></TR></TBODY></TABLE></FORM></CENTER></BODY></HTML>  
   
   
   
  /*js函数文件   formcheck.js*/  
   
  /*------------------------------------------------------------------------------  
    *   File:   formcheck.js   
    *   Description:FormCheck组件的函数库文件(部分),共计110个方法  
    *------------------------------------------------------------------------------*/  
  /*焦点放置在第一个表单域*/  
  function   focusInFirst(){  
    document.forms[0].elements[0].focus();}  
   
  /*判断用户输入是否为空*/  
  function   isEmpty(ui)   {  
    return   (ui==null||ui=="");}  
   
  /*取得用户输入的字符串的长度*/  
  function   getLength(ui)   {  
    var   i,sum=0;  
    for(i=0;i<ui.length;i++)   {  
      if   ((ui.charCodeAt(i)>=0)   &&   (ui.charCodeAt(i)<=255))  
        sum++;  
          else  
    sum+=2;}  
    return   sum;}  
   
  /*是否为数字、字母或下划线*/  
  function   isNLU(ui)   {  
      var   valid=/^\w*$/;  
      return   (valid.test(ui));}  
   
  /*判断是否为身份证号码*/  
  function   isIdno(ui){  
      var   valid=/(^\d{16}$)|(^\d{18}$)/;  
      return   (isEmpty(ui)||valid.test(ui));}  
   
  /*判断是否为邮政编码*/  
  function   isPostCode(ui){  
      var   valid=/^\d{6}$/;  
      return   (isEmpty(ui)||valid.test(ui));}  
   
  /*判断是否为固定电话*/  
  function   isChinaTel(ui){  
      var   valid=/^0\d{2,3}\-\d{7,8}$/;  
      return   (isEmpty(ui)||valid.test(ui));}  
   
  /*判断是否为移动电话*/  
  function   isChinaMob(ui){  
      var   valid=/^0?13[0,1,3,5,6,8,9]\d{8}$/;  
      return   (isEmpty(ui)||valid.test(ui));}  
   
  /*判断是否为电话,只能为固定电话或移动电话*/  
  function   isTel(ui){  
      var   valid=/(^0\d{2,3}\-\d{7,8}$)|(^0?13[0,1,3,5,6,8,9]\d{8}$)/;  
      return   (isEmpty(ui)||valid.test(ui));}  
   
  /*判断是否为邮件*/  
  function   isMail(ui){  
    if(isEmpty(ui)){return   true;}  
      var   notValid=/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(^\-)|(\-\.)|(\.\-)/;  
      var   valid=/^.+\@[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}$/;  
    return   (!notValid.test(ui)&&valid.test(ui));}  
   
  /*用户输入字符串长度是否在两值之间*/  
  function   isLenBetween(ui,minl,maxl)   {  
      return   (ui>=minl&&ui<=maxl);}

posted @ 2008-07-30 10:57 zhouzhou@ 阅读(349) | 评论 (0)编辑 收藏

一个简单js验证的例子

<html>
 <head>
  <title>潜在用户网络调查</title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <script language="javascript">
 function validate(myform){
    if(myform.name.value.length==0){
       alert("请填写用户名!");
       myform.name.focus();
       return false;
    }
   
   
    if(myform.password.value.length==0){
       alert("密码不能为空!");
       myform.password.focus();
       return false;
    }
 } 
 </script>
 </head>
 <body>
  <form name="form1" method="POST" action="/servlet/loginlorm1"
   id="form1" onsubmit="return validate(this)">
   <table border="0">
    <tr>
     <td align="right">
      姓名:
     </td>
     <td colspan="2" align="left">
      <input type="text" name="name" size="40">
     </td>
    </tr>
    <tr>
     <td align="right">
      密码:
     </td>
     <td colspan="2" align="left">
      <input type="password" name="password" size="40">
     </td>
     <td>
      <input type="reset" value="reset">
      <input type="submit" value="submit">
     </td>
    </tr>

   </table>
  </form>
 </body>
</html>

 

posted @ 2008-07-30 10:51 zhouzhou@ 阅读(268) | 评论 (0)编辑 收藏

处理隐藏表单的方法

实例名称:  满意度调查表


HTML页面代码

<html>
<head>
<title> 网站使用满意度调查 </title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>

<form method="post" action="/webproject1/servlet/loginlorm1">
<input type="hidden" name="survey_type" value="满意度调查">
<table border="0">
 <tr>
  <td align="right">您对本网站提供的所有服务满意吗?</td> 
 </tr>
  <tr>
   <td>
   <input type="submit" name="attitude" value="满意">
   <input type="submit" name="attitude" value="不满意">
    </td>
  </tr>
</table>
</form>
</body>
</html>


servlet中的代码

package com.v503.zhouzhou;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class LoginForm1 extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

                  doPost(request,response);
 }


 @SuppressWarnings("unchecked")
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("text/html;charset=utf-8");
  PrintWriter out = response.getWriter();
  out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
  request.setCharacterEncoding("utf-8");
  out.println("<HTML>");
  out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
  out.println("  <BODY>");
 // 处理方法
  @SuppressWarnings("unused")
  Enumeration  e=request.getParameterNames();
  @SuppressWarnings("unused")
  String parameter=null;
  while(e.hasMoreElements()){
   parameter=(String)e.nextElement();
   @SuppressWarnings("unused")
   String value[]=request.getParameterValues(parameter);
   out.println(parameter+"<br>");
   out.println("<ul>");
  for(int i=0;i<value.length;i++)
  out.println("<li>"+value[i]+"</li>"); 
  out.println("</ul>"); 
  }

  out.println("  </BODY>");
  out.println("</HTML>");
  out.flush();
  out.close();
 }
 public String filterHtml(String value){
  value=value.replaceAll("&","&amp");
  value=value.replaceAll("<", "&lt;");
  value=value.replaceAll(">", "&gt;");
  value=value.replaceAll(" ","&nbsp;");
  value=value.replaceAll("'","value39;");
  value=value.replaceAll("\"","value;");
  value=value.replaceAll("\n", "value");
  return value;
 }

}





posted @ 2008-07-29 21:22 zhouzhou@ 阅读(545) | 评论 (0)编辑 收藏

一个servlet处理表单的简单例子

  实例名称:    潜在用户网络调查表


HTML页面代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

 <head>
  <title>潜在用户网络调查</title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
 </head>

 <body>
  <h1>
   潜在用户网络调查
  </h1>
  <br>
  <form method="post" action="/webproject1/servlet/loginform">
   <table border="0">
    <tr>
     <td align="right">
      姓名:
     </td>
     <td colspan="2" align="left">
      <input type="text" name="name" size="40">
     </td>
    </tr>
    <tr>
     <td align="right">
      EMAIL:
     </td>
     <td colspan="2" align="left">
      <input type="text" name="email" size="40">
     </td>
    </tr>
    <tr>
     <td align="right">
      年纪:
     </td>
     <td align="left">
      <input type="radio" name="age" value="18">
      小于18
      <input type="radio" name="age" value="18-25">
      18 - 25
      <input type="radio" name="age" value="26-40">
      26-40
      <input type="radio" name="age" value=">40">
      大于 40
     </td>
    </tr>
    <tr>
     <td align="right">
      编程时间:
     </td>
     <td align="left">
      <select name="codetime" size=1>
       <option value="never">
        不编程
       <option value="6">
        小于6个月
       <option value="6-12">
        6 - 12 月
       <option value="12-24">
        1 - 2年
       <option value=">24">
        2年以上
      </select>
     </td>
    </tr>
    <tr>
     <td align="right">
      使用的操作系统
     </td>
     <td align="left">
      <select name="os" size="6" multiple>
       <option value="WinXP">
        Win XP
       </option>
       <option value="Win2000/2003">
        Win 2000/2003
       </option>
       <option value="Linux">
        Linux
       </option>
       <option value="FreeBSD">
        FreeBSD
       </option>
       <option value="MacOS">
        Mac OS
       </option>
       <option value="other">
        other
       </option>
      </select>
     </td>
    </tr>
    <tr>
     <td>
      使用的编程语言
     </td>
     <td>
      <input type="checkbox" name="language" value="C">
      C
      <input type="checkbox" name="language" value="C++">
      C++
      <input type="checkbox" name="language" value="C#">
      C#
      <input type="checkbox" name="language" value="Python">
      Python
      <input type="checkbox" name="language" value="Java">
      Java
      <input type="checkbox" name="language" value="VB">
      VB
      <input type="checkbox" name="language" value="Dephi">
      Dephi
     </td>
    </tr>
    <tr>
     <td align="right">
      建议:
     </td>
     <td colspan="2" align="left">
      <textarea name="comment" cols="40" rows="4"></textarea>
     </td>
    </tr>
    <tr>
     <td></td>
     <td>
      <input type="reset" value="reset">
      <input type="submit" value="submit">
     </td>
    </tr>
   </table>
  </form>
 </body>
</html>


servlet中的代码

package com.v503.zhouzhou;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginForm extends HttpServlet {


 private static final long serialVersionUID = 1560239073696880062L;


 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

        doPost(request, response);
 }

 
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  response.setContentType("text/html;charset=utf-8");
  PrintWriter out = response.getWriter();
  out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
  request.setCharacterEncoding("utf-8");
  out.println("<HTML>");
  out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
  out.println("  <BODY>");
  out.println("姓名:"+filterHtml(request.getParameter("name"))+"<br>");
  out.println("email:"+filterHtml(request.getParameter("email"))+"<br>");
  out.println("年龄:"+filterHtml(request.getParameter("age"))+"<br>");
  out.println("编程时间:"+request.getParameter("codetime")+"<br>");
  out.println("使用的操作系统:");
  @SuppressWarnings("unused")
  String os[]=request.getParameterValues("os");
  for(int i = 0;i<os.length;i++)
  {   out.println(os[i]+"<br>");} 
  out.println("使用的编程语言");
  @SuppressWarnings("unused")
  String language[]=request.getParameterValues("language");
  for(int i = 0;i<language.length;i++)
  {out.println(language[i]+"<br>");}
  out.println("建议:"+filterHtml(request.getParameter("comment"))+"<br>");
  out.println("  </BODY>");
  out.println("</HTML>");
  out.flush();
  out.close();
 }
// 过滤的方法
 public String filterHtml(String value){
  value=value.replaceAll("&","&amp");
  value=value.replaceAll("<", "&lt;");
  value=value.replaceAll(">", "&gt;");
  value=value.replaceAll(" ","&nbsp;");
  value=value.replaceAll("'","value39;");
  value=value.replaceAll("\"","value;");
  value=value.replaceAll("\n", "value");
  return value;
 }

}


web.xml文件代码

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>LoginForm</servlet-name>
    <servlet-class>com.v503.zhouzhou.LoginForm</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>LoginForm</servlet-name>
    <url-pattern>/servlet/loginform</url-pattern>
  </servlet-mapping>
 
</web-app>




 

posted @ 2008-07-29 20:41 zhouzhou@ 阅读(1152) | 评论 (0)编辑 收藏

DOS命令集

目录操作类命令

(一)MD——建立子目录
1.功能:创建新的子目录
2.类型:内部命令
3.格式:MD[盘符:][路径名]〈子目录名〉
4.使用说明:
(1)"盘符":指定要建立子目录的磁盘驱动器字母,若省略,则为当前驱动器;
(2)"路径名":要建立的子目录的上级目录名,若缺省则建在当前目录下.
例:(1)在C盘的根目录下创建名为FOX的子目录;(2)在FOX子目录下再创建USER子目录.
C:,>MD FOX (在当前驱动器C盘下创建子目录FOX)
C:,>MD FOX ,USER (在FOX 子目录下再创建USER子目录)

(二)CD——改变当前目录
1.功能:显示当前目录
2.类型:内部命令
3.格式:CD[盘符:][路径名][子目录名]
4.使用说明:
(1)如果省略路径和子目录名则显示当前目录;
(2)如采用"CD,"格式,则退回到根目录;
(3)如采用"CD.."格式则退回到上一级目录.
例:(1)进入到USER子目录;(2)从USER子目录退回到子目录;(3)返回到根目录.
C:,>CD FOX ,USER(进入FOX子目录下的USER子目录)
C:,FOX,USER>CD.. (退回上一级根目录)
C:,FOX>CD, (返回到根目录)
C:,>

(三)RD——删除子目录命令
1.功能:从指定的磁盘删除了目录.
2.类型:内部命令
3.格式:RD[盘符:][路径名][子目录名]
4.使用说明:
(1)子目录在删除前必须是空的,也就是说需要先进入该子目录,使用DEL(删除文件的命令)将其子目录下的文

件删空,然后再退回到上一级目录,用RD命令删除该了目录本身;
(2)不能删除根目录和当前目录.
例:要求把C盘FOX子目录下的USER子目录删除,操作如下:
第一步:先将USER子目录下的文件删空;
C,>DEL C:,FOX,USER,*.*
第二步,删除USER子目录.
C,>RD C:,FOX,USER

(四)DIR——显示磁盘目录命令
1.功能:显示磁盘目录的内容.
2.类型:内部命令
3.格式:DIR [盘符][路径][/P][/W]
4. 使用说明:/P的使用;当欲查看的目录太多,无法在一屏显示完屏幕会一直往上卷,不容易看清,加上/P参数

后,屏幕上会分面一次显示23行的文件信息,然后暂停,并提示;Press any key to continue
/W的使用:加上/W只显示文件名,至于文件大小及建立的日期和时间则都省略.加上参数后,每行可以显示五个

文件名.

(五)PATH——路径设置命令
1.功能:设备可执行文件的搜索路径,只对文件有效.
2.类型:内部命令
3.格式:PATH[盘符1]目录[路径名1]{[;盘符2:],〈目录路径名2〉…}
4.使用说明:
(1)当运行一个可执行文件时,DOS会先在当前目录中搜索该文件,若找到则运行之;若找不到该文件,则根据

PATH命令所设置的路径,顺序逐条地到目录中搜索该文件;
(2)PATH命令中的路径,若有两条以上,各路径之间以一个分号";"隔开;
(3)PATH命令有三种使用方法:
PATH[盘符1:][路径1][盘符2:][路径2]…(设定可执行文件的搜索路径)
PATH:(取消所有路径)
PATH:(显示目前所设的路径)

(六)TREE——显示磁盘目录结构命令
1.功能:显示指定驱动器上所有目录路径和这些目录下的所有文件名.
2.类型:外部命令
3.格式:TREE[盘符:][/F][》PRN]
4.使用说明:
(1)使用/F参数时显示所有目录及目录下的所有文件,省略时,只显示目录,不显示目录下的文件;
(2)选用>PRN参数时,则把所列目录及目录中的文件名打印输出.

(七)DELTREE——删除整个目录命令
1.功能:将整个目录及其下属子目录和文件删除.
2.类型:外部命令
3.格式:DELTREE[盘符:]〈路径名〉
4.使用说明:该命令可以一步就将目录及其下的所有文件,子目录,更下层的子目录一并删除,而且不管文件的

属性为隐藏,系统或只读,只要该文件位于删除的目录之下,DELTREE都一视同仁,照删不误.使用时务必小心


磁盘操作类命令

(一)FORMAT——磁盘格式化命令
1.功能:对磁盘进行格式化,划分磁道和扇区;同时检查出整个磁盘上有无带缺陷的磁道,对坏道加注标记;建立

目录区和文件分配表,使磁盘作好接收DOS的准备.
2.类型:外部命令
3.格式:FORMAT〈盘符:〉[/S][/4][/Q]
4.使用说明:
(1)命令后的盘符不可缺省,若对硬盘进行格式化,则会如下列提示:WARNING:ALL DATA ON NON ——

REMOVABLE DISK
DRIVE C:WILL BE LOST !
Proceed with Format (Y/N)
(警告:所有数据在C盘上,将会丢失,确实要继续格式化吗 )
(2)若是对软盘进行格式化,则会如下提示:Insert mew diskette for drive A;
and press ENTER when ready…
(在A驱中插入新盘,准备好后按回车键).
(3)选用[/S]参数,将把DOS系统文件IO.SYS ,MSDOS.SYS及COMMAND.COM复制到磁盘上,使该磁盘可以做为DOS

启动盘.若不选用/S参数,则格式化后的磙盘只能读写信息,而不能做为启动盘;
(4)选用[/4]参数,在1.2MB的高密度软驱中格式化360KB的低密度盘;
(5)选用[/Q]参数,快速格式化,这个参数并不会重新划分磁盘的磁道貌岸然和扇区,只能将磁盘根目录,文件

分配表以及引导扇区清成空白,因此,格式化的速度较快.
(6)选用[/U]参数,表示无条件格式化,即破坏原来磁盘上所有数据.不加/U,则为安全格式化,这时先建立一个

镜象文件保存原来的FAT表和根目录,必要时可用UNFORRMAT恢复原来的数据.

(二)UNFORMAT恢复格式化命令
1.功能:对进行过格式化误操作丢失数据的磁盘进行恢复.
2.类型:外部命令
3.格式:UNFORMAT〈盘符〉[/L][/U][/P][/TEST]
4.使用说明:用于将被"非破坏性"格式化的磁盘恢复.根目录下被删除的文件或子目录及磁盘的系统扇区(包括

FAT,根目录,BOOT扇区及硬盘分区表)受损时,也可以用UNFORMAT来抢救.
(1)选用/L参数列出找到的子目录名称,文件名称,大孝日期等信息,但不会真的做FORMAT工作.
(2)选用/P参数将显示于屏幕的报告(包含/L参数所产生的信息)同时也送到打印机.运行时屏幕会显

示:"Print out will be sent to LPT1"
(3)选用/TEST参数只做模拟试验(TEST)不做真正的写入动作.使用此参数屏幕会显示:"Simulation only"
(4)选用/U参数不使用MIRROR映像文件的数据,直接根据磁盘现状进行UNFORMAT.
(5)选用/PSRTN;修复硬盘分区表.
若在盘符之后加上/P,/L,/TEST之一,都相当于使用了/U参数,UNFORMAT会"假设"此时磁盘没有MIRROR映像文

件.
注意:UNFORMAT对于刚FORMAT的磁盘,可以完全恢复,但FORMAT后若做了其它数据的写入,则UNFORMAT就不能

完整的救回数据了.UNFORMAT并非是万能的,由于使用UNFORMAT会重建FAT与根目录,所以它也具有较高的危险

性,操作不当可能会扩大损失,如果仅误删了几个文件或子目录,只需要利用UNDELETE就够了.

(三) CHKDSK——检查磁盘当前状态命令
1.功能:显示磁盘状态,内存状态和指定路径下指定文件的不连续数目.
2.类型:外部命令
3.格式:CHKDSK [盘符:][路径][文件名][/F][/V]
4.使用说明:
(1)选用[文件名]参数,则显示该文件占用磁盘的情况;
(2)选[/F]参数,纠正在指定磁盘上发现的逻辑错误;
(3)选用[/V]参数,显示盘上的所有文件和路径.

(四)DISKCOPY——整盘复制命令
1.功能:复制格式和内容完全相同的软盘.
2.类型:外部命令
3.格式:DISKCOPY[盘符1:][盘符2:]
4.使用说明:
(1)如果目标软盘没有格式化,则复制时系统自动选进行格式化.
(2)如果目标软盘上原有文件,则复制后将全部丢失.
(3)如果是单驱动器复制,系统会提示适时更换源盘和目标盘,请操作时注意分清源盘和目标盘.

(五)LABEL——建立磁盘卷标命令
1.功能:建立,更改,删除磁盘卷标.
2.类型:外部命令
3.格式:LABEL[盘符:][卷标名]
4.使用说明:
(1)卷标名为要建立的卷标名,若缺省此参数,则系统提示键入卷标名或询问是否删除原有的卷标名;
(2)卷标名由1至11个字符组成.

(六)VOL——显示磁盘卷标命令
1.功能:查看磁盘卷标号.
2.类型:内部命令
3.格式:VOL[盘符:]
4.使用说明:省略盘符,显示当前驱动器卷标.

(七)SCANDISK——检测,修复磁盘命令
1.功能:检测磁盘的FAT表,目录结构,文件系统等是否有问题,并可将检测出的问题加以修复.
2.类型:外部命令
3.格式:SCANDISK[盘符1:]{[盘符2:]…}[/ALL]
4.使用说明:
(1)CCANDISK适用于硬盘和软盘,可以一次指定多个磁盘或选用[/ALL]参数指定所有的磁盘;
(2)可自动检测出磁盘中所发生的交叉连接,丢失簇和目录结构等逻辑上的错误,并加以修复.

(八)DEFRAG——重整磁盘命令
1..功能:整理磁盘,消除磁盘碎块.
2.类型:外部命令
3.格式:DEFRAG[盘符:][/F]
4.使用说明:选用/F参数,将文件中存在盘上的碎片消除,并调整磁盘文件的安排,确保文件之间毫无空隙.从

而加快读盘速度和节省磁盘空间.

(九)SYS——系统复制命令
1.功能:将当前驱动器上的DOS系统文件IO.SYS,MSDOS.SYS和COMMAND.COM 传送到指定的驱动器上.
2.类型:外部命令
3.格式:SYS[盘符:]
*使用说明:如果磁盘剩余空间不足以存放系统文件,则提示:No roomfor on destination disk.


文件操作类命令

(一) COPY文件复制命令
1.功能:拷贝一个或多个文件到指定盘上.
2.类型:内部命令
3.格式:COPY [源盘][路径]〈源文件名〉[目标盘][路径][目标文件名]
4.使用说明:
(1)COPY是文件对文件的方式复制数据,复制前目标盘必须已经格式化;
(2)复制过程中,目标盘上相同文件名称的旧文件会被源文件取代;
(3)复制文件时,必须先确定目标般有足够的空间,否则会出现;insufficient的错误信息,提示磁盘空间不够;
(4)文件名中允许使用通配举"*"" ",可同时复制多个文件;
(5)COPY命令中源文件名必须指出,不可以省略.
(6)复制时,目标文件名可以与源文件名相同,称作"同名拷贝"此时目标文件名可以省略;
(7)复制时,目标文件名也可以与源文件名不相同,称作"异名拷贝",此时,目标文件名不能省略;
(8)复制时,还可以将几个文件合并为一个文件,称为"合并拷贝",格式如下:COPY;[源盘][路径]〈源文件名1

〉〈源文件名2〉…[目标盘][路径]〈目标文件名〉;
(9)利用COPY命令,还可以从键盘上输入数据建立文件,格式如下:COPY CON [盘符:][路径]〈文件名〉;
(10)注意:COPY命令的使用格式,源文件名与目标文件名之间必须有空格!

(二)XCOPY——目录复制命令
1.功能:复制指定的目录和目录下的所有文件连同目录结构.
2.类型:外部命令
3.格式:XCOPY [源盘:]〈源路径名〉[目标盘符:][目标路径名][/S][/V][/E]
4.使用说明:
(1)XCOPY是COPY的扩展,可以把指定的目录连文件和目录结构一并拷贝,但不能拷贝隐藏文件和系统文件;
(2)使用时源盘符,源目标路径名,源文件名至少指定一个;
(3)选用/S时对源目录下及其子目录下的所有文件进行COPY.除非指定/E参数,否则/S不会拷贝空目录,若不指

定/S参数,则XCOPY只拷贝源目录本身的文件,而不涉及其下的子目录;
(4)选用/V参数时,对的拷贝的扇区都进行较验,但速度会降低.

(三)TYPE——显示文件内容命令
1.功能:显示ASCII码文件的内容.
2.类型:内部命令.
3.格式:TYPE[盘符:][路径]〈文件名〉
4.使用说明:
(1)显示由ASCII码组成的文本文件,对.EXE.COM等为扩展名的文件,其显示的内容是无法阅读的,没有实际意

义2;
(2)该命令一次只可以显示一个文件的内容,不能使用通配符;
(3)如果文件有扩展名,则必须将扩展名写上;
(4)当文件较长,一屏显示不下时,可以按以下格式显示;TYPE[盘符:][路径]〈文件名〉|MORE,MORE为分屏显

示命令,使用些参数后当满屏时会暂停,按任意键会继续显示.
(5)若需将文件内容打印出来,可用如下格式:
TYPE[盘符:][路径]〈文件名〉,>PRN
此时,打印机应处于联机状态.

(四) REN——文件改名命令
1.功能:更改文件名称
2.类型:内部命令
3.格式:REN[盘符:][路径]〈旧文件名〉〈新文件名〉
4.使用说明:
(1)新文件名前不可以加上盘符和路径,因为该命令只能对同一盘上的文件更换文件名;
(2)允许使用通配符更改一组文件名或扩展名.

(五)FC——文件比较命令
1.功能:比较文件的异同,并列出差异处.
2.类型:外部命令
3.格式:FC[盘符:][路径名]〈文件名〉[盘符:][路径名][文件名][/A][/B][/C][/N]
4.使用说明:
(1)选用/A参数,为ASCII码比较模式;
(2)选用/B参数,为二进制比较模式;
(3)选用/C参数,将大小写字符看成是相同的字符.
(4)选用/N参数,在ASCII码比较方式下,显示相异处的行号.

(六)ATTRIB——修改文件属性命令
1.功能:修改指定文件的属性.(文件属性参见2.5.4(二)文件属性一节)
2.类型:外部命令.
3.格式:ATTRIB[文件名][R][——R][A][——A][H][——H][S][——S][/S]
4.使用说明:
(1)选用R参数,将指定文件设为只读属性,使得该文件只能读取,无法写入数据或删除;选用——R参数,去除只

读属性;
(2)选用A参数,将文件设置为档案属性;选用——A参数,去除档案属性;
(3)选用H参数,将文件调协为隐含属性;选用——H参数,去隐含属性;
(4)选用S参数,将文件设置为系统属性;选用——S参数,去除系统属性;
(5)选用/S参数,对当前目录下的所有子目录及作设置.

(七) DEL——删除文件命令
1.功能:删除指定的文件.
2.类型:内部命令
3.格式:DEL[盘符:][路径]〈文件名〉[/P]
4.使用说明:
(1)选用/P参数,系统在删除前询问是否真要删除该文件,若不使用这个参数,则自动删除;
(2)该命令不能删除属性为隐含或只读的文件;
(3)在文件名称中可以使用通配符;
(4)若要删除磁盘上的所有文件(DEL*·*或DEL·),则会提示:(Arey ou sure )(你确定吗 )若回答Y,则进行

删除,回答N,则取消此次删除作业.

(八) UNDELETE——恢复删除命令
1.功能:恢复被误删除命令
2.类型:外部命令.
3.格式:UNDELETE[盘符:][路径名]〈文件名〉[/DOS]/LIST][/ALL]
4.使用说明:使用UNDELETE可以使用"*"和" "通配符.
(1)选用/DOS参数根据目录里残留的记录来恢复文件.由于文件被删除时,目录所记载斩文件名第一个字符会

被改为E5,DOS即依据文件开头的E5和其后续的字符来找到欲恢复的文件,所以,UNDELETE会要求用户输入一个

字符,以便将文件名字补齐.但此字符不必和原来的一样,只需符合DOS的文件名规则即可.
(2)选用/LIST只"列出"符合指定条件的文件而不做恢复,所以对磁盘内容完全不会有影响.
(3)选用/ALL自动将可完全恢复的文件完全恢复,而不一一地询问用户,使用此参数时,若UNDELTE利用目录里

残留的记录来将文件恢复,则会自动选一个字符将文件名补齐,并且使其不与现存文件名相同,选用字符的优选

顺序为:#%——0000123456789A~Z.
UNDELETE还具有建立文件的防护措施的功能,已超出本课程授课范围,请读者在使用些功能时查阅有关DOS手

册.


其它命令

(一)CLS——清屏幕命令
1功能:清除屏幕上的所有显示,光标置于屏幕左上角.
2类型:内部命令
3格式:CLS

(二) VER查看系统版本号命令
1功能:显示当前系统版本号
2类型:内部命令
3格式:VER

(三) DATA日期设置命令
1功能:设置或显示系统日期.
2类型:内部命令
3格式:DATE[mm——dd——yy]
4使用说明:
(1)省略[mm——dd——yy]显示系统日期并提示输入新的日期,不修改则可直接按回车键,[mm——dd——yy]

为"月月——日日——年年"格式;
(2)当机器开始启动时,有自动处理文件(AUTOEXEC.BAT)被执行,则系统不提示输入系统日期.否则,提示输入

新日期和时间.

(四) TIME系统时钟设置命令
1功能:设置或显示系统时期.
2类型:内部命令
3格式:TIME[hh:mm:ss:xx]
4使用说明:
(1)省略[hh:mm:ss:xx],显示系统时间并提示输入新的时间,不修改则可直接按回车键,[hh:mm:ss:xx]为"小

时:分钟:秒:百分之几秒"格式;
(2)当机器开始启动时,有自动处理文件(AUTOEXEC.BAT)被执行,则系统不提示输入系统日期.否则,提示输入

新日期和时间.

(五)MEM查看当前内存状况命令
1功能:显示当前内存使用的情况
2类型:外部命令
3格式:MEM[/C][/F][/M][/P]
4使用说明:
(1)选用/C参数列出装入常规内存和CMB的各文件的长度,同时也显示内存空间的使用状况和最大的可用空间;
(2)选用/F参数分别列出当前常规内存剩余的字节大小和UMB可用的区域及大小;
(3)选用/M参数显示该模块使用内存地地址,大小及模块性质;
(4)选用/P参数指定当输出超过一屏时,暂停供用户查看.

(六) MSD显示系统信息命令
1功能:显示系统的硬件和操作系统的状况.
2类型:外部命令
3格式:MSD[/I][/B][/S]
4使用说明:
(1)选用/I参数时,不检测硬件;
(2)选用/B参数时,以黑白方式启动MSD;
(3)选用/S参数时,显示出简明的系统报告.

posted @ 2008-07-27 11:30 zhouzhou@ 阅读(178) | 评论 (0)编辑 收藏

FckEditor上传音频视频

FckEditor上传音频视频
         在Fckeditor中加入上传音频视频功能,办法是通过扩展原来的flash上传来实现。过程中出现了乱码问题,现在把调试的过程记录下来。部分内容参考了“玉树临风真情无限”的日志。

         软件版本:FckEditor2.6.2;平台:Windows XP;数据库:MySQL。
1.  分别打开editor/js文件夹下的fckeditorcode_ie.js、fckeditorcode_gecko.js文件。将代码:
||/\.swf($|#|\?)/i.test(A.src)
替换为:
||/\.swf($|#|\?)/i.test(A.src)||/\.mpg($|#|\?)/i.test(A.src)||/\.asf($|#|\?)/i.test(A.src)||/\.wma($|#|\?)/i.test(A.src)
||/\.wmv($|#|\?)/i.test(A.src)||/\.avi($|#|\?)/i.test(A.src)||/\.mov($|#|\?)/i.test(A.src)||/\.mp3($|#|\?)/i.test(A.src)
||/\.rmvb($|#|\?)/i.test(A.src)||/\.mid($|#|\?)/i.test(A.src)
6        这段代码用来判断文件后缀名,当然文件格式可以自定义,不过要考虑和其他地方相吻合。
2. 打开/editor/dialog/fck_flash/fck_flash.js文件。
2.1 增加以下程序代码,用来判断文件后缀名:
function WinPlayer(url){
 var r, re;
 re = /.(avi|wmv|asf|wma|mid|mp3|mpg)$/i;
r = url.match(re);
return r;
}
function RealPlayer(url){
var r, re;
re = /.(.rm|.ra|.rmvb|ram)$/i;
r = url.match(re);
return r;
}
function QuickTime(url){
var r, re;
re = /.(mov|qt)$/i;
r = url.match(re);
return r;
}
function FlashPlayer(url){
var r, re;
re = /.swf$/i;
r = url.match(re);
return r;
}

2.2 替换两个地方的代码:一个在UpdatePreview()中,将:
SetAttribute( e, 'type', 'application/x-shockwave-flash' ) ;
替换为:
if(WinPlayer(GetE('txtUrl').value)!=null){

SetAttribute( e, 'type', 'application/x-mplayer2' ) ;

}

if(RealPlayer(GetE('txtUrl').value)!=null){

SetAttribute( e, 'type', 'audio/x-pn-realaudio-plugin' ) ;

}

if(QuickTime(GetE('txtUrl').value)!=null){

SetAttribute( e, 'type', 'application/video/quicktime' ) ;

}

if(FlashPlayer(GetE('txtUrl').value)!=null){

SetAttribute( e, 'type', 'application/x-shockwave-flash' ) ;

SetAttribute( e, 'pluginspage', 'http://www.macromedia.com/go/getflashplayer' ) ;

}

另一个地方在UpdateEmbed()中,将: SetAttribute( e, 'type' , 'application/x-shockwave-flash' ) ;

SetAttribute( e, 'pluginspage' , 'http://www.macromedia.com/go/getflashplayer' ) ;
替换为:
if(WinPlayer(GetE('txtUrl').value)!=null){

SetAttribute( e, 'type' , 'application/x-mplayer2' ) ;

SetAttribute( e, 'autostart', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;

}

if(RealPlayer(GetE('txtUrl').value)!=null){

SetAttribute( e, 'type' , 'audio/x-pn-realaudio-plugin' ) ;

SetAttribute( e, 'autostart', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;

}

if(QuickTime(GetE('txtUrl').value)!=null){

SetAttribute( e, 'type' , 'video/quicktime' ) ;

SetAttribute( e, 'autostart', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;

}

if(FlashPlayer(GetE('txtUrl').value)!=null){

SetAttribute( e, 'type' , 'application/x-shockwave-flash' ) ;

SetAttribute( e, 'pluginspage' , 'http://www.macromedia.com/go/getflashplayer' ) ;

}

3.打开/fckconfig.js文件,将:
FCKConfig.FlashUploadAllowedExtensions = ".(swf)$" ; // empty for all
替换为:
FCKConfig.FlashUploadAllowedExtensions = ".(swf|fla|mpg|asf|wma|wmv|avi|mov|mp3|rmvb|mid)$" ; // empty for all
      到此,基本功能已经完成。剩下的是一些细节的设置。
4. 其他设置
4.1 编辑框中文字的设置:打开/editor/lang/zh-cn.js 文件,将flash替换成想要显示的文字。
4.2 默认的音频视频播放效果是循环、自动播放、带操作menu的样式,可以通过设置来显示成想要的效果。方法还是在/editor/dialog/fck_flash/fck_flash.js文件,在UpdateEmbed()方法中,将对应的文件格式中的,
SetAttribute( e, 'play', GetE('chkAutoPlay').checked ? 'true' : 'false' )替换为:

SetAttribute( e, 'autostart', GetE('chkAutoPlay').checked ? 'false' : 'true' ) ;
    

 

 

posted @ 2008-07-27 11:21 zhouzhou@ 阅读(863) | 评论 (3)编辑 收藏

一个自动跳转的代码

HTML里增加:  
  <meta   http-equiv="refresh"   content="5;URL=http://www.csdn.net">

posted @ 2008-07-27 11:20 zhouzhou@ 阅读(130) | 评论 (0)编辑 收藏

java匿名内部类,参数必须是final类型

匿名内部类实用定义在外部的变量,该变量必须是final类型
因为匿名内部类没有构造函数,无法对引用变量进行初始化。所以引用的参数必须是在外部已经初始化的final变量。

posted @ 2008-07-27 11:19 zhouzhou@ 阅读(1049) | 评论 (1)编辑 收藏

多态

多态性:发送消息给某个对象,让该对象自行决定响应何种行为。
通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。

java 的这种机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法

posted @ 2008-07-27 11:18 zhouzhou@ 阅读(69) | 评论 (0)编辑 收藏

for的新特性

package test;
import java.util.*;
import java.io.*;
public class Properties_test
{
public static void main(String[] args)
{
try
{
Properties roles =new Properties();
roles.load(new FileInputStream("c:/hpj-users.properties"));
Enumeration emnu = roles.propertyNames();
while(emnu.hasMoreElements())
{
String key = emnu.nextElement().toString();
String value = roles.getProperty(key);
System.out.println(key+"_"+Token(value).size()+"_"+value);
}
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}

public static List<String> Token(String s)
{
List<String> list = new ArrayList<String>();
try
{
String[] args = s.split(",");
for (String arg :args)
{
list.add(arg.trim());
}
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
return list;
}

}
问题补充:想具体了解下collection-based for 循环
就是:for (String arg :args)
不了解这个for循环的含义,中间的:是什么意思
这个循环是按什么规则循环的,一般的循环不是fro( ?;? ;? );


泛性(j2SE 5.0的新特性)

for (String arg :args)
{
list.add(arg.trim());
}

增强后的for循环(j2SE 5.0的新特性)

主要作用简化了之前的for循环:
相当与 (这个你看得懂吧)
for(int i=0;i<args.length;i++){
list.add(args[i]);
}

格式: for(类型 参数名 : 数组或集合类){ }
类型必需与数组或集合类的类型相同,
参数的值是动态的,所有数组或集合类的每一个值。

 

一。数组:
int[] num = {1,2,3,4,5};
for(int arg:num){
System.out.println(arg);
}

二。集合类:
ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
for(String arg: list){
System.out.println(arg);
}

posted @ 2008-07-27 11:16 zhouzhou@ 阅读(115) | 评论 (0)编辑 收藏

覆写于重载

比如说原来class A有一个方法:
public void test(String a) {
...
}

现在class B extends A
那么你如果在class B中写一个方法
public void test(String a) {
...
}
这就叫覆写(overridden)
如果你象下面这样写了:
public void test(Integer i) {
...
}

public int test(Socket socket) {
...
}
或...
总之,方法说明部分如果和父类的方法完全一样的,就是覆写(overridden)
参数不同的情况下就算重载了。

posted @ 2008-07-27 11:07 zhouzhou@ 阅读(51) | 评论 (0)编辑 收藏