`
cs_css
  • 浏览: 83964 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SpringMVC视图名称对大小写敏感吗?

阅读更多

    最近开发过程中,碰到一个颇为头疼的问题:同样一套代码,在我本地机器上运行完全没有问题,在测试的机器上会返回500错误信息,在查看日志后,发现SpringMVC抛出了找不到视图的异常。

    我重复在自己的机器上debug运行,发现controller的确返回了对应的视图,页面也成功跳转,怎样也重现不了那个500错误。经过检查,我发现controller里返回的视图是这样的:

 

return "frag/efrag";

     而在我的frag目录下,文件名称是“eFrag.ftl”。

 

    看来500错误的原因找到了,文件名不同,SpringMVC找不到名为“efrag”的视图。果然,我把测试机器上部署的工程里eFrag.ftl改名为efrag.ftl,500错误不再出现了。

    但是问题还没有彻底解决,刚才已经说了,该500错误只在测试服务器上出现,在我本地开发机器上一切正常,完全无法复现该错误。经过检查,测试机器上的代码和我本机的代码属同一SVN版本,不存在代码差异的问题。

    那问题到底出在哪呢?代码版本一样,运行结果却不同,那就只能是两台机器环境有差异了。但我们的tomcat、jdk以及spring包都是一样的版本……仔细思考后,发现两台机器环境的确不一样,它们之间唯一的不同就是——操作系统!我本机开发环境是windowsXP,而测试服务器环境是红帽linux。

    查询一些资料后,我得知,SpringMVC的controller也是在servlet之上实现,servlet返回一个视图,是根据相对路径来查找对应的文件名,ftl文件当然是放在tomcat的路径下,那么,对于对文件名大小写不敏感的操作系统,efrag.ftl和eFrag.ftl是相同的文件。

    看来原因彻底找到了,linux对文件名大小写敏感,windowsXP对文件名大小写不敏感。为了验证windows这一无聊的特性,我在windows下先建立了一个名为nnn.txt的文件,然后又在同一目录建立了一个新的txt并将其重命名为NNN.txt,发现windows弹出了这样的警告窗口:



     确实,windowsXP把NNN.txt和nnn.txt视为同一文件,这表示,windowsXP对文件名大小写是不敏感的。

    以前前辈们就告诉过我们,在windows上开发需要注意其与linux的差异,在做项目的过程中,这种问题还真没少出现过,比如MD5加密所用的库文件等问题。很多人认为java是跨平台的语言,是真正的“一次编写,到处运行”,但在javaEE的开发中,部署环境等问题一直是值得注意的,windows和linux的差异一定不能忽略

    结论:linux是对文件名大小写敏感的,使用SpringMVC时,一定要保证controller返回的视图名称与实际文件名完全相同,大小写字母也不能忽略。

 

  • 大小: 10.1 KB
分享到:
评论

相关推荐

    SpringMVC+Hibernate5 项目配置Demo

    SpringMVC和Hibernate5是Java开发中常用的两个框架,它们分别负责Web应用的前端控制器和持久层管理。SpringMVC是Spring框架的一部分,用于构建高效、灵活的Web应用程序,而Hibernate5则是一个强大的对象关系映射...

    SpringMVC+sqlitejdbc的jar集合

    SpringMVC和SQLiteJDBC是两个在Java开发中常见的组件,它们分别用于构建Web应用程序和服务端数据存储。这里我们详细探讨这两个技术以及它们如何协同工作。 **SpringMVC** SpringMVC是Spring框架的一个模块,专门...

    Maven-SpringMVC的小例子

    在IT行业中,Maven和SpringMVC是两个非常重要的框架,它们在开发Java Web应用程序时起着关键作用。本篇文章将深入探讨这两个技术,并通过一个简单的"HelloWord"实例来阐述如何结合使用它们。 首先,Maven是一个项目...

    springmvc增删改,分页,导入数据等功能

    SpringMVC是Spring框架的一部分,专门用于处理Web应用程序的模型-视图-控制器(MVC)架构。在本文中,我们将深入探讨SpringMVC在实现数据管理中的关键功能,包括增删改操作、分页以及数据导入。 1. **增删改操作**...

    java 手写SpringMVC框架

    在Java开发领域,SpringMVC框架是Web应用中广泛使用的轻量级框架,它极大地简化了后端服务的开发和管理。本篇文章将深入探讨如何手写一个SpringMVC框架,涉及的核心技术包括反射、注解等。 首先,我们要理解...

    spring+springmvc+ibatis整合小案例

    这个"spring+springmvc+ibatis整合小案例"旨在为初学者提供一个清晰的实践指导,帮助理解这三者如何协同工作。 首先,Spring是一个全功能的Java应用框架,它提供了依赖注入(Dependency Injection, DI)和面向切面...

    springmvc和mybatis整合

    1. **SpringMVC配置**:首先,我们需要在SpringMVC的配置文件中声明DispatcherServlet,并配置相应的视图解析器、处理器映射器、拦截器等。这些组件是SpringMVC运行的基础,负责接收请求、分发请求到对应的...

    SpringMVC精品资源--深入解析SpringMVC核心原理:从手写简易版MVC框架开始(SmartMvc).zip

    通过创建一个小型的Web应用,我们可以将理论知识转化为实践操作,加深对SpringMVC的理解。 8. **性能优化与扩展** 学习如何优化SpringMVC的性能,比如利用缓存、异步处理、AOP(面向切面编程)等技术。同时,了解...

    springmvc分库分表实际例子

    分库是将数据分散到多个数据库,分表是在单个数据库内将一个大表拆分成多个小表。 3. **ShardingSphere**:在SpringMVC项目中,通常会使用类似ShardingSphere这样的中间件来实现分库分表。ShardingSphere是一个开源...

    SpringMVC学习的时候写的一个小站源码

    SpringMVC是Spring框架的一部分,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。在本文中,我们将深入探讨SpringMVC的基本概念、工作原理以及它与Freemarker模板引擎的结合使用。 1. **SpringMVC基本概念...

    手写springmvc框架.zip

    这个名为"手写springmvc框架.zip"的压缩包很可能包含了一套自定义实现Spring MVC核心功能的代码示例,旨在帮助开发者深入理解Spring MVC的工作原理。下面,我们将详细探讨Spring MVC框架的主要组成部分和工作流程。 ...

    springMvc+Mybatis+maven+intellj idea环境搭建小项目

    在构建Web应用程序时,Spring MVC、MyBatis和...总之,"springMvc+Mybatis+maven+intellj idea环境搭建小项目"涉及到了现代Java Web开发的核心组件,通过合理配置和整合这些技术,可以快速构建出功能丰富的Web应用。

    springmvc整合mybatis加jsp实现简单的增删改查

    在IT行业中,SpringMVC、MyBatis和JSP是三种非常重要的技术,它们常常被用来构建企业级的Web应用程序。下面将详细讲解如何利用这些技术实现一个简单的增删改查功能。 首先,SpringMVC作为Spring框架的一部分,是...

    springmvc+freemarker+shiro

    例如,你可以使用Shiro轻松地实现登录验证、角色权限控制,以及对敏感操作的拦截。 在这个"springmvc+freemarker+shiro"的小Demo中,开发者可能已经展示了如何将这三个组件集成到一个项目中。SpringMVC处理HTTP请求...

    springmvc上传文件所需jar包

    在标题和描述中提到的"springmvc上传文件所需jar包"是指为了在Spring MVC应用中支持文件上传,开发者需要引入特定的Java Archive (JAR) 文件。以下是关于这两个关键JAR包的详细解释: 1. `...

    springmvc mybatis 支持分页

    本知识点将深入探讨如何在SpringMVC和MyBatis的集成环境中,实现对Oracle数据库的分页查询功能。 首先,让我们了解SpringMVC。SpringMVC是Spring框架的一部分,它提供了一个用于构建Web应用程序的模型-视图-控制器...

    SpringMVC3.0+MyIbatis3.0(分页示例)

    在本项目中,"SpringMVC3.0+MyIbatis3.0(分页示例)" 是一个结合了SpringMVC和MyBatis两大框架的实战应用,主要展示了如何在实际开发中实现数据的分页展示。这个项目可能是为了教学或者演示目的,通过源码分析,可以...

    Spring+springMVC+hibernate做的一个导入Excel

    在IT行业中,Spring、SpringMVC和Hibernate是Java Web开发中的三大核心框架,它们共同构建了一个强大且灵活的后端架构。本项目是基于这些框架实现的一个功能,即通过前端界面上传Excel文件并进行数据导入。以下是...

    springMVC搭建-zpupload

    SpringMVC是Spring框架的一部分,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。在本文中,我们将深入探讨如何使用SpringMVC搭建一个基础的Web项目,以实现文件上传功能,例如标题中的"zpupload"可能就是...

Global site tag (gtag.js) - Google Analytics