`
玉德思密达
  • 浏览: 7813 次
社区版块
存档分类
最新评论

代码分析第一篇

    博客分类:
  • java
 
阅读更多

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/c.tld" prefix="c"%>
<head>
 <title>新增用户</title>
 <meta http-equiv="x-ua-compatible" content="ie=8">
 <link rel="stylesheet" href="../css/zTreeStyle3.2/zTreeStyle.css" type="text/css"/>
 <link rel="stylesheet" href="../css/demo3.2.css" type="text/css">
 <link href="../css/system/main.css" type="text/css" rel="stylesheet" />
 <script type="text/javascript" src="../js/jquery.js"></script>
 <script type="text/javascript" src="../js/ztree3.2/jquery.ztree.core-3.2.js"></script>
 <script type="text/javascript" src="../js/ztree3.2/jquery.ztree.excheck-3.2.js"></script>
 <script type="text/javascript" src="../js/check_char.js"></script>
 <script>  
  var zNodes ;
  var setting = {
   check: {
    enable: true,
    chkStyle: "radio",
    radioType: "all"
   },
   view: {
    dblClickExpand: false
   },
   data: {
    simpleData: {
     enable: true
    }
   },
   callback: {
    onCheck: onCheck
   }
  };

        var setting2 = {
   check: {
    enable: true,
    chkboxType: {"Y":"s", "N":"ps"}
   },
   view: {
    dblClickExpand: false
   },
   data: {
    simpleData: {
     enable: true
    }
   },
   callback: {
    onCheck: onCheck2
   }
  };
  
  function onCheck(e, treeId, treeNode) {
      if("treeDemo"==treeId){
                var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
                nodes = zTree.getCheckedNodes(true),
                v = nodes[0].name;
                m = nodes[0].id;
                var cityObj = $("#checkOrg");
                cityObj.attr("value", v); 
                var orgId = $("#orgId");
                orgId.attr("value", m);
                var orgName = $("#orgName");
                orgName.attr("value", v);
               
                selectRole();
             }
  }

        function onCheck2(e, treeId, treeNode) {

            var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
   nodes = zTree.getCheckedNodes(true),
   v = "";
   m="";
   for (var i=0, l=nodes.length; i<l; i++) {
    v += nodes[i].name + ",";
    m += nodes[i].id + ",";
   }
   if (v.length > 0 ) v = v.substring(0, v.length-1);
   if (m.length > 0 ) m = m.substring(0, m.length-1);
   var cityObj = $("#checkOrg_"+roleId);
   cityObj.attr("value", v); 
   var limitOrgIds = $("#limitOrgId_"+roleId);
   limitOrgIds.attr("value", m);
   
  }

  function showMenu() {
  $.ajax({
        type:"post",
        url:"../system/getOrgList.do",
        async:false,
        contentType : "application/json",
     dataType : "json",
        success:function(data){
          zNodes=eval("("+data+")");
          $.fn.zTree.init($("#treeDemo"), setting, zNodes.datas);
        },
        error:function(){
          alert("Ajax请求数据失败!");
        }
     });
    
   var cityObj = $("#checkOrg");
   var cityOffset = $("#checkOrg").offset();
   $("#menuContent").css({left:cityOffset.left + "px", top:cityOffset.top + cityObj.outerHeight() + "px"}).slideDown("fast");

   $("body").bind("mousedown", onBodyDown);
  }

        var roleId = null;
        function showMenu2(rid) {
            roleId = rid;
            if ($("#checkOrg_"+roleId).attr("disabled")) {
                return;
            }

            $.ajax({
                  type:"post",
                  url:"getOrgList.do",
                  async:false,
                  contentType : "application/json",
                  dataType : "json",
                  success:function(data){
                   zNodes=eval("("+data+")");
                    $.fn.zTree.init($("#treeDemo"), setting2, zNodes.datas);
                    var limitOrgIds = $("#limitOrgId_"+roleId).val();
                    if (limitOrgIds!=""){
                        var ids = limitOrgIds.split(",");
                        var zTree = $.fn.zTree.getZTreeObj("treeDemo");
                        var nodes = zTree.getNodes();
                        for (var i = 0, n = ids.length; i < n; i++) {
                            for(var vi in nodes) {
                                var node = nodes[vi];
                                if (node.id==ids[i]) {
                                    zTree.checkNode(node, true, true);
                                    break;
                                }
                               
                            }
                        }
                       
                    }
                  },
                  error:function(){
                    alert("Ajax请求数据失败!");
                  }
               });
    
   var cityObj = $("#checkOrg_"+roleId);
   var cityOffset = cityObj.offset();
   $("#menuContent").css({left:cityOffset.left + "px", top:cityOffset.top + cityObj.outerHeight() + "px"}).slideDown("fast");

   $("body").bind("mousedown", onBodyDown);
  }

  function hideMenu() {
   $("#menuContent").fadeOut("fast");
   $("body").unbind("mousedown", onBodyDown);
  }
  function onBodyDown(event) {
   if (!(event.target.id == "menuBtn" || event.target.id == "citySel" || event.target.id == "menuContent" || $(event.target).parents("#menuContent").length>0)) {
    hideMenu();
   }
  }

        function selectRole(){
            var orgId = $("#orgId").val();
            var lineCode = $("input[name='lineCode']:checked").val();
            if (orgId == "") {
                return;
            }

            $.ajax({
                  type:"post",
                  url:"getUserRoleList.do",
                  data:{orgId:orgId, lineCode:lineCode},
                  success:function(data){
                    var d = eval('('+data+')');
                    var v = d.v;
                   
                    var html = '<table width="100%">';
                    for (var i = 0, n = v.length; i < n; i++) {
                        html += '<tr><td width="150px"><input type="checkbox" name="roleId" value="'+v[i].roleId+'">'+v[i].roleName+'</td><td><input id="checkOrg_'+v[i].roleId+'" name="checkOrg_'+v[i].roleId+'" type="text" readonly disabled class="form_input1" /><input type="hidden" name="limitOrgId_'+v[i].roleId+'" id="limitOrgId_'+v[i].roleId+'"><a href="#" onclick="showMenu2('+v[i].roleId+');return false;">数据权限</a></td></tr>';
                    }
                    html += '</table>';
                   
                    $("#roleselect #rolecontent").html(html);
                    if(i>13){
                        $('#rolecontent').height('300px');
                    }else{
                     $('#rolecontent').height((i*22)+'px');
                    }
                    $("input[name]='roleId'").click(function() {
                        var v = this.value;

                        $("#checkOrg_"+v).attr("disabled", !this.checked);

                    });

                  },
                  error:function(){
                    alert("无法获取角色信息!");
                  }
               });     
        }
 

  $(document).ready(function(){

            var lineCode = $("input[name='lineCode']").click(function() {
                selectRole();
            }).filter(':checked').val();
           
            $("#rolecontent").css({margin:'10px 0 10px 5px'});
         
           
  });
  
  function validateName(){
  var loginName = $("#loginName").val();
  if(loginName!=''){
    $.ajax({
        type:"post",
        url:"validateLoginName.do",
        data:{loginName:loginName},
     dataType : "text",
        success:function(data){
         alert(data);
        },
        error:function(){
          alert("Ajax请求数据失败!");
        }
     });
  }
  }
  
/*--------------------------------------------------------------------- 
           表单校验开始
 ---------------------------------------------------------------------- */ 
function checkForm(thisform){
  if(!submitclean(thisform))
  return false;
  if(!CheckInputValue('用户名',thisform.userName,false,'String',0,15))
  return false;
  if(!CheckInputValue('登陆名',thisform.loginName,false,'String',0,30))
  return false;
  //if(!CheckInputValue('密码',thisform.userPass,false,'String',0,20))
  //return false;
  //if(!CheckInputValue('确认密码',thisform.userPass2,false,'String',0,20))
  //return false;
  if(!CheckInputValue('手机号码',thisform.mobileCode,false,'Telephone',10,11))
  return false;
  if(!CheckInputValue('确认手机号码',thisform.mobileCodeConfirm,false,'Telephone',10,11))
    return false;
  //if(thisform.userPass.value!=thisform.userPass2.value){
   //alert("两次密码不一致!请重新输入");
   //thisform.userPass.value="";
   //thisform.userPass2.value="";
   //return false;
  //}
  if(thisform.mobileCode.value!=thisform.mobileCodeConfirm.value){
   alert("两次手机号码不一致!请重新输入");
   thisform.mobileCode.value="";
   thisform.mobileCodeConfirm.value="";
   return false;
  }
  /*
   lineCode="";  
   $("[name='lineCode']:checked").each(function(){
          lineCode+=$(this).val();
       })
     if(lineCode==""){
      alert("请选择业务线!");
      return false;
     }*/
          
       var roleOrg=$("#orgId").val();
       if($.trim(roleOrg)==""){
       alert("请选择机构!");
        $("#checkOrg").focus();
        return false;
     }

    var rev = false;
    $("input[name]='roleId':checked").each(function() {
        var v = this.value;
        if ($("#limitOrgId_"+v).val()==""){
            alert("请选择数据权限!");
            $("#checkOrg_"+v).focus();
            rev = true;
            return false;
        }
    });
    if (rev) return false;
    return true;


/*--------------------------------------------------------------------- 
            页面保存开始
 ---------------------------------------------------------------------- */
 
 function doSave(){
  if(!checkForm(document.getElementById("userForm"))){
    return;
  }
 $("#userForm").submit();
 } 
 function fanhui(){
  window.location="userList.do";
 }
/*--------------------------------------------------------------------- 
                       页面保存结束
 ---------------------------------------------------------------------- */
  function selectStatus(){
   var a=$('#status').val(); 
   if(a=='F'){
      $("#frozenTimeView").show();
   }else{
      $("#frozenTimeView").hide();
   }
  }  
</script>
</head>
<body>
<div class="all_box">
<form id="userForm" name="userForm" action="saveUser.do" method="post">
<div class="user_add_box" style="display:block">
 <table class="index_table">
       <thead><tr><td colspan="2" class="top_head"><span class="key_zb align_left">新增用户</span></td></tr></thead>
           <tbody>
             <tr class="tr_special">
               <td class="td_width border-right"><span class="p_left">用户名称:
     <input type="text" name="userName" id="userName" class="search_input"  maxlength="16"/><font color="red">*</font></span>
      </td>
      <td class="td_width border-right"><span class="p_left">登陆名:&nbsp;&nbsp;&nbsp;&nbsp;
     <input type="text" name="loginName" id="loginName" class="search_input" onblur="validateName()" maxlength="30"/><font color="red">*</font></span>
      </td>
    </tr>
   <tr class="tr_special" style="display: none">
               <td class="td_width border-right"><span class="p_left">用户密码:
     <input type="password" name="userPass" id="userPass" class="search_input"/><font color="red">*</font></span>
      </td>
      <td class="td_width border-right"><span class="p_left">确认密码:&nbsp;&nbsp;
     <input type="password" id="userPass2" class="search_input" /><font color="red">*</font></span>
      </td>
    </tr>
   
             <tr class="tr_special">
             <!--   <td class="td_width border-right"><span class="p_left">业务线&nbsp;&nbsp;:
      <c:forEach var="busi" items="${busiList}" varStatus="st">
      <input name="lineCode" id="lineCode" type="radio" value="${busi.lineCode}" />  ${busi.lineName}
       </c:forEach><font color="red">*</font></span>
      </td>  -->
      <td class="td_width border-right"><span class="p_left"> 选择机构:
          <input id="checkOrg" type="text" readonly value="" class="search_input" onclick="showMenu();" /><font color="red">*</font>
                <input type="hidden" name="orgId" id="orgId" >
       <input type="hidden" name="orgName" id="orgName" ></span>
      </td>
     </tr>
    
             <tr class="tr_special">
               <td class="td_width border-right"><span class="p_left">手机号码:
     <input type="password" name="mobileCode" id="mobileCode" class="search_input" /><font color="red">*</font></span>
      </td>
               <td class="td_width border-right"><span class="p_left">确认手机号码:
     <input type="password" name="mobileCodeConfirm" id="mobileCodeConfirm" class="search_input" /><font color="red">*</font></span>
      </td>
             </tr>
               
     <tr class="tr_special">
               <td class="td_width border-right"><span class="p_left">状&nbsp;&nbsp;&nbsp;&nbsp;态:
                   <select class="select_style" name="status" id="status" onChange="selectStatus();">
      <option value="V">有效</option>
      <option value="F">冻结</option>
      <option value="I">失效</option>
     </select><font color="red">*</font> </span>
    </td><!--
    <td class="td_width border-right"><span class="p_left"> 是否管理层:
     <select class="select_style" name="isLeader" id="isLeader" >
      <option value="Y">是</option>
      <option value="N">否</option>
     </select><font color="red">*</font></span> 
    </td> -->
    </tr>
    <tr ID="roleselect">
                            <td colspan="2">选择角色:
                            <DIV id="rolecontent" style="overflow: auto;width: 98%">      
                            </DIV>
                            </td>
                        </tr>
   <tr class="tr_special">
    <td colspan="2" class="td_width border-right"><span class="p_left">    
     <input type="button" value="保  存" class="btn1" onclick="doSave();"/>
        <input type="button" value="返  回" class="btn1" onclick="javascript:window.history.back(-1)"/></span>
    </td>
   </tr>
  </tbody>
   </table>
   </div>
 </form>
 <div id="menuContent" class="menuContent" style="display:none; position: absolute;">
 <ul id="treeDemo" class="ztree" style="margin-top:0; width:163px; height: 300px;"></ul>
</div>     
</div>     

</body>
</html>

 

 

/***********************************
* JSP页面输入有效性校验
* create date: 2006-08-19
* update date: 2006-08-19
* update content: 此文件在原先使用文件checkvalue.jsp基础上,结合原先的使用经验做了如下改进
*   1 增加函数CheckSpecChar(FormName),直接校验整个form的所有输入控件是否包含非法字符。
*   2 函数CheckInputValue原先传入参数输入框内容,改为输入框对象名称,这样一旦校验不通过,光标可以定位到对象。
*   3 优化日期校验,原先对日期格式只校验输入字符,没有校验长度以及yyyy-mm-dd格式中年月日各自是否满足要求。
*   4 优化Email格式校验
*  5 原先输入框允许为空,同时如果输入内容有最短长度限制时候,无法校验,现已修改,能够支持。
*
*   增加系数Rate类型,不能大于1
*   增加时间Time类型,24h:mi格式
*********************************/
//提交表单时清理所有的非隐藏表单元素值的左右空格并校验是否含有非法字符
function submitclean(FormName){
 var str = "'<>\""; //非法字符集
 for (var index = 0; index < FormName.elements.length; index++) {
  if(FormName.elements[index].type != "hidden"){
   //去除左右空格
         FormName.elements[index].value = FormName.elements[index].value.replace(/^\s+|\s+$/g,"");         
         for(i = 0; i < FormName.elements[index].value.length; i++){
     if (str.indexOf(FormName.elements[index].value.substring(i,i + 1)) >= 0){
      alert("输入的内容不能含有非法字符:" + str);
      FormName.elements[index].focus();
      return false;
              }
   }
        }
 }
 return true;
}
//该函数用于带查询条件的显示页面,页面加载时判断哪个form元素应该默认获得焦点
function formFocus(FormName){
 var isfocus =false;
 for (var index = 0; index < FormName.elements.length; index++) {
  if(FormName.elements[index].className=='lc') continue;
  if(FormName.elements[index].tagName=='INPUT'
   || FormName.elements[index].tagName=='SELECT'
   || FormName.elements[index].tagName=='TEXTAREA')
   {
   if(FormName.elements[index].type != "hidden" && FormName.elements[index].value!=""){
 
          FormName.elements[index].focus();         
          isfocus =true;
          break;
         }
        }
 }
 if(!isfocus){
  for (var index = 0; index < FormName.elements.length; index++) {
   if(FormName.elements[index].className=='lc') continue;
   if(FormName.elements[index].tagName=='INPUT'
    || FormName.elements[index].tagName=='SELECT'
    || FormName.elements[index].tagName=='TEXTAREA')
    {
    if(FormName.elements[index].type != "hidden"){
  
           FormName.elements[index].focus();         
           break;
          }
         }
  }
 
 }
}

//清除文本框字符串的前后所有空格
String.prototype.trim   =   function() //removes the Left side  and the right side blank space
    {  
          return   this.replace(/(^\s*)|(\s*$)/g,   "")  
   }

//文本框获得焦点后,如果文本框不为空,则将焦点放置在字符串之后
function cc()  //generater after onfocus()
 {
  var e = event.srcElement;
  var r =e.createTextRange();
  r.moveStart("character",e.value.length);
  r.collapse(true);
  r.select();
 }

//判断Form中所有对象的值中是否有特殊字符
 function CheckSpecChar(FormName){
 //传入参数为form的名称
 bString = "'<>^$"; //非法字符集
 for (var ObjID=0; ObjID < FormName.elements.length; ObjID++) {
  for(i = 0; i < FormName.elements[ObjID].value.length; i ++){
   if (bString.indexOf(FormName.elements[ObjID].value.substring(i,i+1)) >= 0){
    alert('输入的内容不能包含非法字符:' + bString);
    FormName.elements[ObjID].focus();
    return false;
            }
  }
 }
 return true;
}

function CheckSpecCharElement(strElement){
  //传入参数为Element
  bString = "'<>^/$-\\"; //非法字符集
   for(i = 0; i < strElement.value.length; i ++){
    if (bString.indexOf(strElement.value.substring(i,i+1)) >= 0){
     alert('输入的内容不能包含非法字符:' + bString);
     strElement.focus();
     return false;
             }
   }
  
  return true;
 }

//校验不合格后,光标自动定位到不符合格式要求的控件中
function CheckInputValue(input_desc,//输入框内容的中文名称
                         ObjName ,//输入框对象名称
                          is_empty,//false-不可以为空;true-可以为空
                          input_type,//输入框内容类型
                          input_minlength,//输入框内容的最小长度
                          input_maxlength//输入框内容的最长长度
                          ){
 //不能为空
 if(!is_empty && CheckIsNull(ObjName.value)){
  alert(input_desc + "不能为空!");
   ObjName.value="";//输入空格后,将空格清除!
   if(!ObjName.disabled)
      ObjName.focus();
      return false;
 }
  if(is_empty && CheckIsNull(ObjName.value)){
      return true;
 }
  //输入框内容的最小长度限制,并且输入框不为空,(剔除输入框为空的情况)
   if(input_minlength != 0 && ObjName.value.length < input_minlength && ObjName.value.length > 0){
      alert(input_desc + "长度不能低于" + input_minlength + "个字符!");
     if(!ObjName.disabled)
  ObjName.focus();
      return false;
 }

   if(input_maxlength != 0 && ObjName.value.length > input_maxlength ){
      alert(input_desc + "长度不能超过" + input_maxlength + "个字符!");
     if(!ObjName.disabled)
  ObjName.focus();
      return false;
        }

 /***************
 * 统一调用函数CheckSpecChar(FormName),整个form一次检查
        * ***************/
 /*
    if(input_type == "String"){
      if(!CheckString(ObjName.value)){
         alert(input_desc + "不能包含<、>、'、\"、/、\\");
                        ObjName.focus();
         return false;
      }
   }*/
  if(input_type == "StringNoError"){
      if(!CheckStringNoError(ObjName.value)){
         alert(input_desc + "不能包含<、>、'、\"、/、\\");
                 if(!ObjName.disabled)
                        ObjName.focus();
         return false;
      }
   }

 if(input_type == "StringNoSpace"){
      if(!CheckStringNoSpace(ObjName.value)){
         alert(input_desc + "不能包含空格!");
        if(!ObjName.disabled)
   ObjName.focus();
         return false;
      }
   }

 if(input_type == "StringNo6up"){
      if(!CheckStringNo6up(ObjName.value)){
         alert(input_desc + "不能包含\^!");
        if(!ObjName.disabled) 
   ObjName.focus();
         return false;
      }
   }

 if(input_type == "StringNofg"){
      if(!CheckStringNofg(ObjName.value)){
         alert(input_desc + "不能包含※!");
        if(!ObjName.disabled)
   ObjName.focus();
         return false;
      }
   }

 if(input_type == "StringNoPercent"){
      if(!CheckStringNoPercent(ObjName.value)){
         alert(input_desc + "不能包含%!");
        if(!ObjName.disabled)
   ObjName.focus();
         return false;
  }
 }

 if(input_type == "StringNoSpacePercent"){
  if(!CheckStringNoSpacePercent(ObjName.value)){
   alert(input_desc + "不能包含空格和%!");
      if(!ObjName.disabled)
   ObjName.focus();
         return false;
  }
 }

 if(input_type == "Number"){
  if(!CheckNumber(ObjName.value)){
   alert(input_desc + "是数字,只能全部由数字组成!");
      if(!ObjName.disabled)
   ObjName.focus();
   return false;
  }
 }
 
 if(input_type == "Number24"){
  if(!CheckNumber24(ObjName.value)){
   alert(input_desc + ",只能在1-24之间!");
   if(!ObjName.disabled)
   ObjName.focus();
   return false;
  }
 }

 if(input_type == "Telephone"){
  if(!CheckTelephone(ObjName.value)){
   //alert(input_desc + "是电话号码数字、-组成!");
   alert(input_desc + "只能由数字、-组成!");
   if(!ObjName.disabled)
   ObjName.focus();
         return false;
  }
 }

 if(input_type == "Money"){
  if(!CheckMoney(ObjName.value)){
   alert(input_desc + "是金额,由数字、.组成!");
   if(!ObjName.disabled)
   ObjName.focus();
   return false;
  }
 }
 if(input_type == "Rate"){
  if(!CheckRate(ObjName.value)){
   alert(input_desc + "是系数,不能大于1!");
   if(!ObjName.disabled)
   ObjName.focus();
   return false;
  }
 }
 if(input_type == "Time"){
  if(!CheckTime(ObjName.value)){
   alert(input_desc + "是时间,格式如下24h:mi!");
   if(!ObjName.disabled)
   ObjName.focus();
   return false;
  }
 }
 if(input_type == "Time2"){
  if(!CheckTime2(ObjName.value)){
   alert(input_desc + "是时间,格式如下24h:mi:ss!");
   if(!ObjName.disabled)
   ObjName.focus();
   return false;
  }
 }
 if(input_type == "Date"){
  if(!CheckDate(ObjName,input_desc)){
   return false;
  }
 }
 if(input_type == "Month"){
  if(!CheckMonth(ObjName.value)){
   alert(input_desc + "是月份,格式如下yyyy-MM!");
   if(!ObjName.disabled)
   ObjName.focus();
   return false;
  }
 }
 if(input_type == "Email"){
  if(!CheckEmail(ObjName.value)){
   alert(input_desc + "是Email,必须符合格式要求!");
   if(!ObjName.disabled)
   ObjName.focus();
   return false;
  }
 }

 if(input_type == "Password"){
  if(!CheckPassword(ObjName.value)){
   alert(input_desc + "只能包含数字和字母!");
   if(!ObjName.disabled)
   ObjName.focus();
   return false;
  }
 }
 if(input_type == "PasswordAndChar"){
  if(!CheckPasswordAndChar(ObjName.value)){
   alert(input_desc + "只能包含数字、字母和正斜线!");
   if(!ObjName.disabled)
   ObjName.focus();
   return false;
  }
 }
 

 if(input_type == "Letter"){
 
        if(!CheckLetter(ObjName.value)){
          alert(input_desc + "必须是字母!");
         if(!ObjName.disabled)
   ObjName.focus();
          return false;
        }
 }

 if(input_type == "UpLetter"){
         if(!CheckUpLetter(ObjName.value)){
            alert(input_desc + "必须是大写字母!");
           if(!ObjName.disabled)
   ObjName.focus();
            return false;
         }
   }
   if(input_type == "isUppercase"){// 只判断字符中的字母
    if(!CheckIsUpCase(ObjName.value)){
         alert(input_desc + "必须是大写字母!") ;
         if(!ObjName.disabled)
    ObjName.focus();
   return false; 
       }
   }

   if(input_type == "LowLetter"){
           if(!CheckLowLetter(ObjName.value)){
              alert(input_desc + "必须是小写字母!");
            if(!ObjName.disabled)
   ObjName.focus();
              return false;
           }
   }

 if(input_type == "Chinese"){
        if(!CheckChinese(ObjName.value)){
          alert(input_desc + "必须是全部为中文!");
         if(!ObjName.disabled)
   ObjName.focus();
          return false;
        }
 }
 if(input_type == "NoChinese"){
        if(!CheckNoChinese(ObjName.value)){
          alert(input_desc + "不能包含中文!");
         if(!ObjName.disabled)
   ObjName.focus();
          return false;
        }
 }
  return true;
}

//输入验证,错误信息返回字符串
function CheckInputValueMessage(input_desc,//输入框内容的中文名称
                         ObjName ,//输入框对象名称
                          is_empty,//false-不可以为空;true-可以为空
                          input_type,//输入框内容类型
                          input_minlength,//输入框内容的最小长度
                          input_maxlength//输入框内容的最长长度
                          ){  
                         
    var message = '';                     
 
 //不能为空
 if(!is_empty && CheckIsNull(ObjName.value)){
  message = input_desc + "不能为空!";
   ObjName.value="";//liuchuang补充于20080619:输入空格后,将空格清除!
   if(!ObjName.disabled)
      ObjName.focus();
 }
  if(is_empty && CheckIsNull(ObjName.value)){
      return message;
 }

  //输入框内容的最小长度限制,并且输入框不为空,(剔除输入框为空的情况)
   if(input_minlength != 0 && ObjName.value.length < input_minlength && ObjName.value.length > 0){
     message = input_desc + "长度不能低于" + input_minlength + "个字符!";
     if(!ObjName.disabled)
  ObjName.focus();
 }

   if(input_maxlength != 0 && ObjName.value.length > input_maxlength ){
     message = input_desc + "长度不能超过" + input_maxlength + "个字符!";
     if(!ObjName.disabled)
  ObjName.focus();
        }

 /***************
 * 统一调用函数CheckSpecChar(FormName),整个form一次检查
        * ***************/
 /*
    if(input_type == "String"){
      if(!CheckString(ObjName.value)){
         alert(input_desc + "不能包含<、>、'、\"、/、\\");
                        ObjName.focus();
         return false;
      }
   }*/
  if(input_type == "StringNoError"){
      if(!CheckStringNoError(ObjName.value)){
         message = input_desc + "不能包含<、>、'、\"、/、\\";
                 if(!ObjName.disabled)
                        ObjName.focus();
      }
   }

 if(input_type == "StringNoSpace"){
      if(!CheckStringNoSpace(ObjName.value)){
         message = input_desc + "不能包含空格!";
        if(!ObjName.disabled)
   ObjName.focus();
      }
   }

 if(input_type == "StringNo6up"){
      if(!CheckStringNo6up(ObjName.value)){
         message = input_desc + "不能包含\^!";
        if(!ObjName.disabled) 
   ObjName.focus();
      }
   }

 if(input_type == "StringNofg"){
      if(!CheckStringNofg(ObjName.value)){
         message = input_desc + "不能包含※!";
        if(!ObjName.disabled)
   ObjName.focus();
      }
   }

 if(input_type == "StringNoPercent"){
      if(!CheckStringNoPercent(ObjName.value)){
         message = input_desc + "不能包含%!";
        if(!ObjName.disabled)
   ObjName.focus();
  }
 }

 if(input_type == "StringNoSpacePercent"){
  if(!CheckStringNoSpacePercent(ObjName.value)){
   message = input_desc + "不能包含空格和%!";
      if(!ObjName.disabled)
   ObjName.focus();
  }
 }

 if(input_type == "Number"){
  if(!CheckNumber(ObjName.value)){
   message = input_desc + "是数字,只能全部由数字组成!";
      if(!ObjName.disabled)
   ObjName.focus();
  }
 }
 
 if(input_type == "Number24"){
  if(!CheckNumber24(ObjName.value)){
   message = input_desc + ",只能在1-24之间!";
   if(!ObjName.disabled)
   ObjName.focus();
  }
 }

 if(input_type == "Telephone"){
  if(!CheckTelephone(ObjName.value)){
   //alert(input_desc + "是电话号码数字、-组成!");
   message = input_desc + "只能由数字、-组成!";
   if(!ObjName.disabled)
   ObjName.focus();
  }
 }

 if(input_type == "Money"){
  if(!CheckMoney(ObjName.value)){
   message = input_desc + "是金额,由数字、.组成!";
   if(!ObjName.disabled)
   ObjName.focus();
  }
 }
 if(input_type == "Rate"){
  if(!CheckRate(ObjName.value)){
   message = input_desc + "是系数,不能大于1!";
   if(!ObjName.disabled)
   ObjName.focus();
  }
 }
 if(input_type == "Time"){
  if(!CheckTime(ObjName.value)){
   message = input_desc + "是时间,格式如下24h:mi!";
   if(!ObjName.disabled)
   ObjName.focus();
  }
 }
 if(input_type == "Time2"){
  if(!CheckTime2(ObjName.value)){
   message = input_desc + "是时间,格式如下24h:mi:ss!";
   if(!ObjName.disabled)
   ObjName.focus();
  }
 }
 if(input_type == "Date"){
  if(!CheckDate(ObjName,input_desc)){
  }
 }
 if(input_type == "Month"){
  if(!CheckMonth(ObjName.value)){
   message = input_desc + "是月份,格式如下yyyy-MM!" ;
   if(!ObjName.disabled)
   ObjName.focus();
  }
 }
 if(input_type == "Email"){
  if(!CheckEmail(ObjName.value)){
   message = input_desc + "是Email,必须符合格式要求!" ;
   if(!ObjName.disabled)
   ObjName.focus();
  }
 }

 if(input_type == "Password"){
  if(!CheckPassword(ObjName.value)){
   message = input_desc + "只能包含数字和字母!" ;
   if(!ObjName.disabled)
   ObjName.focus();
  }
 }

 if(input_type == "Letter"){
        if(!CheckLetter(ObjName.value)){
          message = input_desc + "必须是字母!" ;
         if(!ObjName.disabled)
   ObjName.focus();
        }
 }

 if(input_type == "UpLetter"){
         if(!CheckUpLetter(ObjName.value)){
            message = input_desc + "必须是大写字母!" ;
           if(!ObjName.disabled)
   ObjName.focus();
         }
   }

   if(input_type == "LowLetter"){
           if(!CheckLowLetter(ObjName.value)){
              message = input_desc + "必须是小写字母!" ;
            if(!ObjName.disabled)
   ObjName.focus();
           }
   }

 if(input_type == "Chinese"){
        if(!CheckChinese(ObjName.value)){
          message = input_desc + "必须是全部为中文!" ;
         if(!ObjName.disabled)
   ObjName.focus();
        }
 }
 if(input_type == "NoChinese"){
        if(!CheckNoChinese(ObjName.value)){
          message = input_desc + "不能包含中文!" ;
         if(!ObjName.disabled)
   ObjName.focus();
        }
 }
  return message;
}
//判断控件中字符串是否为空
//By ChengWei 2007-12-12
function CheckIsNull(str) {
 if (str.Trim().length == 0) {
       return true;  //空值
 }
 return false; //不为空
}
//判断是否没有包含空格
function CheckStringNoSpace(str){
 var i;
   for (i = 0; i < str.length; i++){
      if (str.charAt(i) == " "){
         return false;
      }
   }
   return true;
}
//判断是否没有包含"/","\"
function CheckStringNoError(str){
 //传入参数为form的名称
 bString = "'<>\"\\/"; //非法字符集

        for(i = 0; i < str.length; i ++){
                if (bString.indexOf(str.substring(i,i+1)) >= 0){
                        return false;
                }
        }
 return true;
}
//判断是否没有包含%
function CheckStringNoPercent(str){
 var i;
 for (i = 0; i < str.length; i++){
  if (str.charAt(i) == "%"){
   return false;
  }
 }
 return true;
}

//判断是否没有包含\^
function CheckStringNo6up(str){
 var i;
 for (i = 0; i < str.length; i++){
  if (str.charAt(i) == "\^"){
   return false;
  }
 }
 return true;
}

//判断是否没有包含\*
function CheckStringNofg(str){
 var i;
 for (i = 0; i < str.length; i++){
  if (str.charAt(i) == "※"){
   return false;
  }
 }
 return true;
}

//判断是否没有空格和%
function CheckStringNoSpacePercent(str){
 var i;
 for (i = 0; i < str.length; i++){
      if (str.charAt(i) == " " || str.charAt(i) == "%"){
         return false;
  }
 }
 return true;
}
//检验是否为数字(整型)
function CheckNumber(str){
 var i;
 //alert(parseInt(str));
 for (i = 0; i < str.length; i++){
  if (str.charAt(i) < "0" || str.charAt(i) > "9"){
   return false;
  }
 }
 return true;
}

//检验24小时范围
function CheckNumber24(str){
 var i;
 //alert(parseInt(str));
 for (i = 0; i < str.length; i++){
  if (str.charAt(i) < "0" || str.charAt(i) > "9"){
   return false;
  }
 }
 if(parseInt(str)<1||parseInt(str)>24){
  return false;
 }
 return true;
}

//判断是否符合电话号码,Telephone,由数字和-组成
function CheckTelephone(str){
 var i
 for (i = 0; i < str.length; i++){
  if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != "-"&& str.charAt(i) != "%"){
   return false;
  }
 }
 return true;
}
//检验是否为金额(浮点)
function CheckMoney(str){
 var i;
 for (i = 0; i < str.length; i++){
  if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != "."){
   return false;
  }
 }
 return true;
}
//检验是否为系数,小于等于1
function CheckRate(str){
 var i;
 for (i = 0; i < str.length; i++){
  if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != "."){
   return false;
  }
 }
 if (parseFloat(str) >1 ){
                return false;
        }
 return true;
}

//检验是否为时间,格式24h:mi
function CheckTime(str){
 var i;
 for (i = 0; i < str.length; i++){
  if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != ":"){
   return false;
  }
 }
 if (str.length != 5)
  return false;
 if (str.substring(2,3) != ":" ) {
  return false;
 }
 ls_hour = str.substring(0,2);
 ls_min = str.substring(3,5);

 if (parseFloat(ls_hour) > 23  ){
  return false;
 }
 if (parseFloat(ls_min) > 59){
  return false;
 }
 return true;
}
//检验是否为时间,格式24h:mi:ss
function CheckTime2(str){
 var i;
 for (i = 0; i < str.length; i++){
  if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != ":"){
   return false;
  }
 }
 if (str.length != 8)
  return false;
 if (str.substring(2,3) != ":" ) {
  return false;
 }
 if (str.substring(5,6) != ":" ) {
  return false;
 }
 ls_hour = str.substring(0,2);
 ls_min = str.substring(3,5);
 ls_ss = str.substring(6,8);

 if (parseFloat(ls_hour) > 23  ){
  return false;
 }
 if (parseFloat(ls_min) > 59){
  return false;
 }
 if (parseFloat(ls_ss) > 59){
  return false;
 }
 return true;
}
//检验是否为月份,格式yyyy-MM
function CheckMonth(str){
 var i;
 for (i = 0; i < str.length; i++){
  if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != "-"){
   return false;
  }
 }
 if (str.length != 7)
  return false;
 if (str.substring(4,5) != "-" ) {
  return false;
 }
 ls_year = str.substring(0,4);
 ls_month = str.substring(5,7);

 if (parseFloat(ls_year) < 1900  ){
  return false;
 }
 if (parseFloat(ls_month) > 12){
  return false;
 }
 return true;
}

//判断控件中输入是否都为yyyy-mm-dd格式的日期,
function CheckDate(ObjName,ObjDesc) {

 var ln =  ObjName.value.length;
 //空值看作符合格式要求
 if (ln == 0 ) {
  return true;
 }
 if  (ln != 10) {
  alert( ObjDesc + "只能输入如下日期格式yyyy-mm-dd!");
  ObjName.focus();
  return false;
 }
 bString = "0123456789-";
 for(i = 0; i < ObjName.value.length; i ++){
  if (bString.indexOf(ObjName.value.substring(i,i+1)) == -1) {
   alert(ObjDesc + "日期格式只能输入数字和-!");
   ObjName.focus();
        return false;
                }
 }

 var ls_year, ls_date, ls_month;

 if (ObjName.value.substring(4,5) != "-" || ObjName.value.substring(7,8) != "-") {
  alert(ObjDesc + "只能输入如下日期格式yyyy-mm-dd!");
  ObjName.focus();
  return false;
 }
 ls_year = ObjName.value.substring(0,4);
 ls_month = ObjName.value.substring(5,7);
 ls_date = ObjName.value.substring(8,10);

 if (parseFloat(ls_year) > 2100 || parseFloat(ls_year) < 1900){
  alert( ObjDesc + "年份不对!");
  ObjName.focus();
  return false;
 }
 if (parseFloat(ls_month) > 12 || parseFloat(ls_year) < 1){
  alert(ObjDesc + "月份不对!");
  return false;
 }
 if (parseFloat(ls_date) > 31 || parseFloat(ls_date) < 1){
  alert(ObjDesc + "日期不对!");
  ObjName.focus();
  return false;
 }
 return true;
}
//判断是否符合Password格式,字母和数字组合
function CheckPassword(str){
 var i
   for (i = 0; i < str.length; i++){
      if ((str.charAt(i) < "0" || str.charAt(i) > "9") && (str.charAt(i) < "A" || str.charAt(i) > "Z") && (str.charAt(i) < "a" || str.charAt(i) > "z")){
         return false;
      }
   }
   return true;
}
//判断是否符合Password格式,字母和数字组合和正斜线组合
function CheckPasswordAndChar(str){
 var i
   for (i = 0; i < str.length; i++){
      if ((str.charAt(i) < "0" || str.charAt(i) > "9") && (str.charAt(i) < "A" || str.charAt(i) > "Z") && (str.charAt(i) < "a" || str.charAt(i) > "z") && (str.charAt(i) != '/')){
         return false;
      }
   }
   return true;
}
//判断是否都是字母
function CheckLetter(str){
 var i
   for (i = 0; i < str.length; i++){
      if ( (str.charAt(i) < "A" || str.charAt(i) > "Z") && (str.charAt(i) < "a" || str.charAt(i) > "z")){
         return false;
      }
   }
   return true;
}
//判断是否都是大写字母
function CheckUpLetter(str){
 var i
   for (i = 0; i < str.length; i++){
      if ( (str.charAt(i) < "A" || str.charAt(i) > "Z") ){
         return false;
      }
   }
   return true;
}
//判断是否都是大写字母(只包含字母)
function CheckIsUpCase(str){
  for (var i = 0; i < str.length; i++){
   if ( !(str.charAt(i) < "A" || str.charAt(i) > "Z") || !(str.charAt(i) < "a" || str.charAt(i) > "z")){    
    if ( (str.charAt(i) < "A" || str.charAt(i) > "Z") ){  
        return false;
       }
   }
  }
  return true;
}
//判断是否都是小写字母
function CheckLowLetter(str){
 var i
   for (i = 0; i < str.length; i++){
      if (  (str.charAt(i) < "a" || str.charAt(i) > "z")){
         return false;
      }
   }
   return true;
}

//判断是否为全部中文,当然在其他语言的系统中,如果是日文、韩文也可能,
function CheckChinese(str){
 var i ;
 for (var i=0;i<str.length;i++){
      if (parseInt(str.charCodeAt(i)) <= 256){
          return false;
      }
   }
   return true;
}
//判断是否没有中文
function CheckNoChinese(str){
 var i ;
 for (var i=0;i<str.length;i++){
      if (parseInt(str.charCodeAt(i)) > 256){
          return false;
      }
   }
   return true;
}

//判断是否符合Email的格式,包含@和. , @在.之前,
function CheckEmail(str){
 var index_i;
 var index_j;
   if(str.length > 0){
  index_i = str.lastIndexOf("@");

      if(( index_i < 1) ){
   return false;
      }
  index_j = str.indexOf(".", index_i);
  if(( index_j < 1) ){
   return false;
      }

   }
   return true;
}

//去空格函数
String.prototype.Trim = function() {
 return this.replace(/(^\s*)|(\s*$)/g, "");
}

String.prototype.LTrim = function() {
 return this.replace(/(^\s*)/g, "");
}

String.prototype.RTrim = function() {
 return this.replace(/(\s*$)/g, "");
}

//****************************************************************
// Description: str 为输入字符串,
// iType为类型,分别为0 - 去除前后空格; 1 - 去前导空格; 2 - 去尾部空格
//****************************************************************
function cTrim(str,iType){
 var sTmpStr = ' ';
 var i = -1;

 if(iType == 0 || iType == 1){
  while(sTmpStr == ' '){
   ++i;
   sTmpStr = str.substr(i,1);
  }
  str = str.substring(i);
 }

 if(iType == 0 || iType == 2){
  sTmpStr = ' ';
  i = str.length;
  while(sTmpStr == ' '){
   --i;
   sTmpStr = str.substr(i,1);
  }
  str = str.substring(0,i+1);
 }
 return str;
}

function isblank(s)
{
  var j=0;
  for(var i = 0;i < s.length;i++) {
    var c = s.charAt(i);
    if ((c != '') && (c != '\n') && (c != '\t') && (c != ' ')) return false;
    if (c == ' ')
    {
      j++;
    }
  }
  if (j == s.length)    //全部是空格
  {
   return true;
  }
  else
  {
    return false;
  }
}

function isvalid(s)
{
  var j=0;
  for(var i = 0;i < s.length;i++) {
    var c = s.charAt(i);
    if ((c == '<') || (c == '>') || (c == '\\') || (c == '/') || (c == '+') || (c == '\'')) return false;
  }
  return true;
}

function isNum(s)
{
  for(var i = 0;i < s.length;i++) {
    var v = parseFloat(s.charAt(i));
    if (isNaN(v)) return false;
  }
  return true;
}

//拼音,数字,|组成
function CheckInputStringExt1(inputDesc,obj,isEmpty,minLength,maxLength){
 var value = obj.value.Trim();
 var str = /^[a-zA-Z\d|]*?$/;
 if(!isEmpty && value.length > 0){
  alert(inputDesc + "不能为空!");
  obj.focus();
  return false;
 }
 if(!str.exec(value)){
  alert(inputDesc + "只能包含数字,字母和\"|\"!");
  obj.focus();
  return false;
 }
 if(value.length > maxLength){
  alert(inputDesc + "长度不能超过" + maxLength + "个字符!");
  obj.focus();
  return false;
 }
 return true;
}

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    源码分析第一篇.pdf

    ### 源码分析第一篇:高性能的可插拔式网关 #### 一、环境准备与项目概述 本文档将带领读者深入了解一个名为SOUL的高性能可插拔式网关项目的源码分析过程。首先,为了更好地进行源码调试工作,我们需要了解几个...

    2019软件工程GFPGAN源代码分析第二篇(csdn)————程序.pdf

    本文主要分析了2019年软件工程中GFPGAN源代码的第二部分,特别是`inference_gfpgan.py`文件中的代码流程。首先,我们来看一下导入的库: 1. `argparse`:这是一个标准的Python模块,用于解析命令行参数和选项,使得...

    咕泡学院_Tom_JavaVIP课程_深入分析Spring源码(第一阶段)1

    4. **JDBC 支持**:Spring 提供了一个简单的 JDBC 抽象层,减少了直接使用 JDBC 的繁琐,同时支持与第三方持久层框架(如 Hibernate、JPA)的集成。 5. **Java EE 整合**:Spring 可以很好地与 Java EE 技术(如 ...

    Android系统源代码情景分析 / 罗升阳著

    第1篇 初识Android系统 第1章 准备知识 第2章 硬件抽象层 第3章 智能指针 第2篇 Android专用驱动系统 第4章 Logger日志系统 第5章 Binder进程间通信系统 第6章 Ashmem匿名共享内存系统 第7章 Activity组件...

    Spring5 源码分析(第 2 版)-某Tom老师

    《Spring5 源码分析(第 2 版)》是某Tom老师精心编写的深度解析文档,旨在帮助读者全面理解Spring5的核心机制和设计理念。Spring作为Java领域最为广泛应用的框架之一,其源码的深入理解对于开发者来说至关重要。这篇...

    MATLAB优化算法案例分析与应用(进阶篇)源代码

    第1篇为MATLAB常用算法应用设计,包括贝叶斯分类器的数据处理、背景差分的运动目标检测、小波变换的图像压缩、BP的模型优化预测、RLS算法的数据预测、GA优化的BP网络算法分析、分形维数应用、碳排放约束下的煤炭消费...

    罗升阳-Android系统源代码情景分析(带书签完整高清版).pdf

    在内容上,本书结合使用情景,全面、深入、细致地分析Android系统的源代码,涉及到Linux内核层、硬件抽象层(HAL)、运行时库层(Runtime)、应用程序框架层(Application Framework)以及应用程序层(Application)。...

    基于SpringCloud框架的Java微服务架构设计源码分析之第二章第一篇

    该项目深入分析了基于SpringCloud框架的Java微服务架构设计源码,共包含63个文件,涵盖了15个Java源文件、11个XML配置文件、5个YAML文件、5个properties文件、5个jar文件以及少量其他文件类型,旨在探讨微服务架构在...

    matlab优化算法案例分析与应用 (进阶篇)代码.zip

    这个压缩包包含了从第1章到第30章的全部程序代码,分为三个部分:1-10章、11-20章以及21-30章的程序下载,为学习者提供了丰富的实战案例。 MATLAB优化算法是解决复杂问题的有效工具,它包含了各种数值优化方法,如...

    第三节-springboot源码解析-王炸篇.pdf

    通过源码分析,开发者可以更好地理解Spring Boot的自动装配、启动流程以及如何自定义启动器。Spring Boot的自动装配原理涉及到Spring Boot的核心特性,它简化了基于Spring的应用开发,通过自动配置减少了大量的配置...

    QTracer源码分析.pdf

    在第一篇文章中,主要包含以下内容: Instrument、Attach API、JVMTI、Agent、ASM 等概念; 代码实战,实现通过 ASM 修改字节码打印方法耗时。 本文是该系列的第二篇,主要包含以下内容: 代码实战,在 ASM 修改...

    深入理解Spark 核心思想与源码分析

    , 《深入理解SPARK:核心思想与源码分析》一书对Spark1.2.0版本的源代码进行了全面而深入的分析,旨在为Spark的优化、定制和扩展提供原理性的指导。阿里巴巴集团专家鼎力推荐 、阿里巴巴资深Java开发和大数据专家...

    BitTorrent源码分析

    本篇文章旨在通过BitTorrent 4.0.3版本的源码分析,深入理解其核心功能及其实现机制。 #### 二、编程语言与环境 BitTorrent 4.0.3版本的源代码使用Python编写,Python作为一种动态类型的高级语言,具有很强的灵活...

    应用回归分析(R语言)第二章 一元线性回归 部分习题代码.docx

    在本篇文档中,我们将深入探讨一元线性回归这一主题,这是回归分析的基础部分,主要使用R语言进行实现。对于初学者来说,理解和掌握这些概念及操作是至关重要的。 一元线性回归是一种统计方法,用于研究两个变量...

    Android系统源代码情景分析 PDF 完整版 ZIP.002(二个压缩包)

    ndroid系统源代码情景分析的评论 这本书是我看过的最深入的一本android书了,可以看出作者是一个很有悟性的程序员,很适合需要提高的android框架层工程师进阶。binder部分是目前所有书中分析的最全面的。匿名共享...

    Java版赤色要塞源码分析

    《Java版赤色要塞源码分析》 在IT领域,源码分析是提升技能、理解软件设计思想的重要途径。本篇文章将聚焦于一个Java版本的"赤色要塞"游戏源码,通过深入探讨其设计与实现,帮助读者更好地理解和掌握Java编程以及...

    Android系统源代码情景分析-罗升阳-源码

    第1篇 初识Android系统 第1章 准备知识 1.1 Linux内核参考书籍 1.2 Android应用程序参考书籍 1.3 下载、编译和运行Android源代码 1.3.1 下载Android源代码 1.3.2 编译Android源代码 1.3.3 运行Android模拟器 ...

    kubeedge源码分析之整体架构.md

    本文是“之江实验室端边云操作系统团队” kubeedge源码分析系列的第一篇,接下来会对各组件的源码进行系统分析。如果有机会我们团队也会积极解决kubeedge的issue和实现新的feature。

    莱昂氏UNIX源代码分析(全面剖析unix)PDF

    下篇 莱昂氏UNIX源代码分析 前言 207 第1章 绪论 209 1.1 UNIX操作系统 209 1.2 公用程序 209 1.3 其他文档 210 1.4 UNIX程序员手册 210 1.5 UNIX文档 211 1.6 UNIX操作系统源代码 211 1.7 源代码中各部分 212 1.8 ...

    Wireshark 数据包分析实战详解

    第1篇介绍Wireshark的各项功能,包括基础知识、Wireshark的定制、捕获过滤器和显示过滤器的使用、数据包的着色、导出和重组等;第2篇介绍基于Wireshark对TCP/IP协议族中常用协议的详细分析,如ARP、IP、UDP、TCP、...

Global site tag (gtag.js) - Google Analytics