最近个人开发一个小的OA项目,属于复习阶段.使用的技术主要是spring mvc作为前端框架,mybatis作为数据库持久化技术.前台使用jquery和一些jquery的插件.
在开发到中间阶段时候发现自己好像忽略了一个小问题,整个项目一直在firefox下测试,没有在IE下测试,不确定是否会出现兼容问题.由于jquery的天生兼容性良好,我就没有过多的关注.在项目接近收尾阶段,我开启了IE测试,不过这次发现确实存在了兼容性问题,而且问题非常严重.
由于为了简便,我在提交表单的操作上采用jquery.form.js,这个组件.它提供了ajaxSubmit这个方法,能够进行异步表单提交,并在提交成功后,执行success函数.我的系统在一个表单页面既有普通的内容,也有file标签,进行文件上传的控制.springmvc的controller中需要写一段这样的代码:
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
这是为了将普通的httprequest转换为spring的request,进而获取文件流等信息.在ajaxSubmit这种提交请求下,firefox下面测试完全正常,能够顺利上传,执行回调函数;但是如果在IE浏览器下面操作,这个位置会进行ClassCast类转换异常,同样也不会执行回调函数.而且,一些表单如果设置为
enctype="multipart/form-data"
这个属性,success回调函数也同样不能执行,而且在spring mvc的controller中,会将会穿页面的json字符串解析为要跳转的页面,不回传给ajax请求.也就说明ajax请求,在IE浏览器下,是不能进行文件上传操作的.
参数传递过程中,在IE浏览器下也会发生乱码,而且火狐下还是正常.根据debug日志分析,是IE下的请求头和firefox下的请求头发生了重大的区别.firefox是application/json,IE的比较长,application/x-Microsoft-....这就导致了,一系列的问题发生.
看来还是浏览器的不兼容导致,而且短时间内也没什么好办法去重构这个问题,只能采用分而治之的情况了,如果不需要上传的页面,还可以继续使用,但是enctype="multipart/form-data"这个属性必须去掉,不然会出现乱码和ajax回调函数不执行的情况.如果确定需要上传的页面,最好还是普通的表单提交,否则不兼容的话,实在没办法.
除了要喷微软对于浏览器的兼容性没有计划之外,这个问题也给我们敲响了一个警钟,测试要尽早做,不要最后做,否则风险很大,而且出现问题无法规避.
分享到:
相关推荐
在这个场景中,"兼容IE6的spring mvc框架"意味着我们需要确保在使用Spring MVC 3.2版本开发的Web应用能够在IE6上正常运行。 **Spring MVC 3.2的关键特性:** 1. **模型-视图-控制器架构**:Spring MVC遵循MVC设计...
Resin对Spring MVC和Hibernate Validation的支持,使得开发者能够在企业级应用开发中享受到高效的性能和强大的验证功能。理解如何在Resin上配置和使用这些技术,对于Java Web开发者来说是至关重要的。通过熟练掌握...
它提供了丰富的UI组件、网格系统和JavaScript插件,使得开发者可以轻松创建美观、一致的用户界面,同时兼容多种设备和浏览器。 5. **Maven**: Maven是Java项目管理和构建工具,它通过定义项目的Project Object ...
在本文中,我们将详细介绍Spring MVC请求参数与响应结果全局加密和解密的相关知识点,包括请求参数的加密和解密、响应结果的加密和解密、ContentType的处理等。 首先,让我们了解一下请求参数的加密和解密。为了...
Spring MVC、EasyUI和MyBatis是开发Java Web应用程序的三个关键组件,它们共同构建了一个高效、可维护的后台管理系统。下面将详细解释这三个技术及其在构建网站后台管理系统中的作用。 1. Spring MVC:Spring MVC是...
同时,其跨浏览器兼容性和易于定制的特点,使得开发者能够快速创建美观且一致的用户界面。 4. Hibernate:作为Java持久化领域的领导者,Hibernate提供了一种对象关系映射(ORM)解决方案,使得开发者可以使用面向...
在Spring MVC框架中,Druid是一个非常流行的数据库连接池组件,它提供了强大的监控和扩展功能。本实例将详细介绍如何在Spring MVC...同时,Druid支持多种数据库,兼容性良好,是企业级开发中常用的数据库连接池选择。
6. **兼容性**:DWZ 支持主流的浏览器,如Chrome、Firefox、IE等,确保了应用的广泛适用性。 在“spring mvc+dwz”演示项目中,你可能会看到以下内容: - **Controller**:使用Spring MVC的注解定义处理请求的方法...
4. **IDE**: 如IntelliJ IDEA或Eclipse,这些集成开发环境提供了方便的Spring MVC项目模板和集成工具。 现在,让我们逐步构建Spring MVC实例: **步骤1:创建Maven项目** 在IDE中新建一个Maven项目,选择`maven-...
在Web开发中,Spring MVC作为Java领域广泛使用的MVC框架,提供了强大的控制层支持,而JQuery则是一款高效、简洁的JavaScript库,简化了前端DOM操作和AJAX交互。本示例将详细介绍如何在Spring MVC 2.5项目中结合...
项目提到“页面适用IE6”,这表明开发时考虑了老版本的Internet Explorer浏览器的兼容性问题。在实际开发中,考虑到IE6的市场份额和一些遗留系统的使用,确保页面在这些浏览器中正常显示和运行是很重要的。 综上,...
在IT行业中,构建一个基于Spring MVC、Spring和MyBatis的开发环境是常见的任务,尤其对于Java后端开发者而言。这个环境提供了强大的MVC(Model-View-Controller)架构、依赖注入以及灵活的数据访问能力。下面我们将...
在Java Web开发中,Spring MVC作为主流的MVC框架,提供了一种优雅的方式来处理业务逻辑和视图展示。iReport则是一个用于设计JasperReports报表的强大工具。将两者整合,可以方便地在Spring MVC应用中动态生成复杂的...
它提供了丰富的预定义CSS样式、JavaScript组件和字体图标,使得开发者能够快速构建美观且易用的用户界面,同时兼容多种设备和浏览器,确保了良好的用户体验。 在项目源码分享网的实现中,Spring MVC处理HTTP请求,...
Jcrop通过CSS和JavaScript实现,兼容各种浏览器,提供良好的用户体验。在HTML页面中,你需要引入Jcrop的CSS和JS文件,然后绑定到目标图像元素上,设置相应的事件监听器来获取用户的裁剪选择。 为了实现文件上传,你...
Spring 4.0 MVC API是Java开发中广泛使用的框架,用于构建高效、模块化和可测试的Web应用程序。这个框架提供了强大的模型-视图-控制器(MVC)架构支持,帮助开发者实现业务逻辑与表现层的分离。在Spring 4.0版本中,...
这是一个关于使用Java编程语言开发的网站后台管理系统的源码包,该系统构建于三大主流的开源框架之上:Spring MVC、EasyUI和MyBatis。这些框架的组合为开发者提供了高效、稳定且易于维护的后端架构。 首先,Spring ...
上述代码中,`enableSimpleBroker`用于设置主题订阅,`setApplicationDestinationPrefixes`定义了应用程序的消息前缀,`addEndpoint`用于添加WebSocket端点,`withSockJS`则提供了浏览器兼容的WebSocket实现。...