java web开发过程中出现的一些诡异问题(2)

简介:

接着上一篇博客:http://hw1287789687.iteye.com/blog/2053907

(1)我们上周做一个web项目,修改bug后发增量包(补丁包),其实我喜欢发全量包,但是领导要求增量包(补丁包),没办法.

有次发增量包(补丁包),修改了一个常量类,发布后,仍然测出问题.纳闷:明明修改了常量类啊.反编译常量类,确实是修改过之后的,没问题.那么问题出在哪儿呢?

给大伙儿重现一下:

我这里有两个类

Java代码   收藏代码
  1. public class Constant {  
  2.     public static final String WHO="黄威";  
  3.     public static final int AGE=26;  
  4. }  
  5.   
  6. public class Hello{  
  7.   
  8.     public static void main(String[]args)  
  9.     {  
  10.         System.out.println("Hello,"+Constant.WHO);  
  11.     }  
  12. }  

 在命令行中进行编译:

 运行:

 

然后我发一个增量包:只修改Constant类,修改Constant类的WHO变量:

Java代码   收藏代码
  1. public class Constant {  
  2.     public static final String WHO="黄威22222222222222";  
  3.     public static final int AGE=26;  
  4. }  

 单独编译Constant:,然后运行Hello:

 奇怪!!!为什么结果没有变呢?

预期的结果应该是:

Hello,黄威22222222222222

原因是:对于含有常量的类,javac编译时直接把常量的值替换进去了.

所以我们还得重新编译Hello:

 测试代码见附件

 

(2)对于js动态增加的表格tr,IE浏览器不识别

我使用如下代码动态增加表格的行(tr):

Js代码   收藏代码
  1. var queryResultTable_obj=getTable();  
  2.             dataLength=tableContent.length;  
  3.             for(var i=0;i<dataLength;i++){  
  4.                 var oneTr=tableContent[i];  
  5.                 //alert(oneTr.realName);  
  6.                 var newTr = document.createElement("tr");  
  7.                  var newTd0 = document.createElement("td");  
  8.                  var newTd1 = document.createElement("td");  
  9.                  var newTd2 = document.createElement("td");  
  10.                  var newTd3 = document.createElement("td");  
  11.                  var newTd4 = document.createElement("td");  
  12.   
  13.                  newTd0.innerHTML =oneTr.realName;  
  14.                  newTd1.innerHTML =oneTr.email;  
  15.                  newTd2.innerHTML =oneTr.aaa;  
  16.                  newTd3.innerHTML =oneTr.bbb;  
  17.                  newTd4.innerHTML ="<a target='_blank' href=\""+"../mgmt/personDetail.action?realName="+oneTr.realName+"&email="+oneTr.email+"&query_time="+query_time+"\" >签到详情</a>"  
  18.                    
  19.                  newTr.appendChild(newTd0);  
  20.                  newTr.appendChild(newTd1);  
  21.                  newTr.appendChild(newTd2);  
  22.                  newTr.appendChild(newTd3);  
  23.                  newTr.appendChild(newTd4);  
  24.                    
  25.                  queryResultTable_obj.appendChild(newTr);  
  26.                    
  27.             }  

 在IE中使用queryResultTable_obj.rows.length 获取表格行的个数时竟然是0,但是在火狐和谷歌浏览器中都没有问题.

说明:queryResultTable_obj 是表格对象

 那么在IE中如何获取表格的行(tr)呢?

通过 var trs=queryResultTable_obj.getElementsByTagName("tr");//获取表格所有的行tr

如何动态删除表格的所有行(除了表头)呢?

Js代码   收藏代码
  1. //判断是否是IE浏览器  
  2. var userAgent = navigator.userAgent.toLowerCase();  
  3.     var browser=navigator.appName;  
  4.     var b_version=navigator.appVersion;  
  5.     //var version=b_version.split(";");  
  6.     //var trim_Version=version[1].replace(/[ ]/g,"");//firefox error  
  7.   
  8.     var isIE9test=userAgent.indexOf("windows nt ")>0&&userAgent.indexOf("trident")>0&&browser=="Microsoft Internet Explorer";  
  9.   
  10.      //删除行  
  11.      function deleteRow(){  
  12.             var queryResultTable_obj=getTable();  
  13.              
  14.            if(isIE9test){//如果是IE浏览器  
  15.                var trs=queryResultTable_obj.getElementsByTagName("tr");//获取表格所有的行tr  
  16.                   for(var i=1;i<trs.length;){  
  17.                       var trOne=trs[i];//表格的每一行  
  18.                       queryResultTable_obj.removeChild(trOne);//从表格中删除tr  
  19.                   }  
  20.            }else{  
  21.                var length= queryResultTable_obj.rows.length ; //表格最后一行索引  
  22.                 
  23.               while(length > 1){  
  24.                   length--;  
  25.                   if(length<1){  
  26.                       break;  
  27.                   }  
  28.                   queryResultTable_obj.deleteRow(length);  
  29.                }  
  30.                
  31.            }  
  32.      }  
相关文章
|
12天前
|
Java Maven Spring
Java Web 应用中,资源文件的位置和加载方式
在Java Web应用中,资源文件如配置文件、静态文件等通常放置在特定目录下,如WEB-INF或classes。通过类加载器或Servlet上下文路径可实现资源的加载与访问。正确管理资源位置与加载方式对应用的稳定性和可维护性至关重要。
|
14天前
|
存储 安全 搜索推荐
理解Session和Cookie:Java Web开发中的用户状态管理
理解Session和Cookie:Java Web开发中的用户状态管理
40 4
|
14天前
|
Java 持续交付 项目管理
使用Maven进行项目管理:提高Java Web开发的效率
Maven 是一款强大的项目管理和构建自动化工具,广泛应用于Java社区。它通过依赖管理、构建生命周期管理、插件机制和多模块项目支持等功能,简化了项目的构建过程,提高了开发效率。本文将介绍Maven的核心功能及其在Java Web开发中的应用。
32 0
WK
|
20天前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
33 0
|
1月前
|
前端开发 Java API
JAVA Web 服务及底层框架原理
【10月更文挑战第1天】Java Web 服务是基于 Java 编程语言用于开发分布式网络应用程序的一种技术。它通常运行在 Web 服务器上,并通过 HTTP 协议与客户端进行通信。
23 1
|
2月前
|
数据采集 Java 数据挖掘
Java IO异常处理:在Web爬虫开发中的实践
Java IO异常处理:在Web爬虫开发中的实践
|
2月前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
54 0
|
3月前
|
Java Maven Android开发
解锁Web开发新技能:从零开始的Struts 2之旅——让你的Java编程之路更加宽广,首个应用实例带你飞!
【8月更文挑战第31天】对于初学者,掌握 Struts 2 框架不仅能提升 Web 开发能力,还能深入了解 MVC 架构。Struts 2 是一个基于 Servlet 的 Java 框架,提供表单验证、文件上传、国际化等功能,便于快速构建易维护的 Web 应用。本文通过示例演示如何从零开始搭建环境并创建一个简单的 Struts 2 项目,包括配置 `struts.xml`、编写 Action 类及视图文件,并配置 web.xml。通过这些步骤,你将学会基本的开发流程,为进一步学习高级功能打下基础。
49 0
|
3月前
|
前端开发 Java UED
JSF遇上Material Design:一场视觉革命,如何让传统Java Web应用焕发新生?
【8月更文挑战第31天】在当前的Web开发领域,用户体验和界面美观性至关重要。Google推出的Material Design凭借其独特的动画、鲜艳的颜色和简洁的布局广受好评。将其应用于JavaServer Faces(JSF)项目,能显著提升应用的现代感和用户交互体验。本文介绍如何通过PrimeFaces等组件库在JSF应用中实现Material Design风格,包括添加依赖、使用组件及响应式布局等步骤,为用户提供美观且功能丰富的界面。
46 0
|
1月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
105 3