文章目录

  • 1、访问静态资源
  • 2、中文乱码
  • 3、类型转换器
    • 3.1、内置的类型转换器
    • 3.2、自定义类型转换器

1、访问静态资源

在项目中我们可以需要用到 js 、css 和图片等静态资源,而在 SpringMVC 中我们请求静态资源时通常会报 404 错误。

这是为什么呢?因为在 SpringMVC 中的入口是 前端控制器DispatcherServlet,在 web.xml 中配置前端控制器时,我们通常的给url-pattern属性配置的是/,代表对所有的资源都进行过滤操作。所以在访问静态资源时,SpringMVC 进行了过滤操作,从而访问不到我们需要的静态资源。

当然对于这种情况,SpringMVC 也给出了两种解决办法:

  1. 指定放行的资源:告诉 SpringMVC 那些资源不需要你进行处理,通过在配置文件中添加配置项完成。

    <mvc:resources mapping="/js/**" location="/js/" />
    <mvc:resources mapping="/css/**" location="/css/" />
    <mvc:resources mapping="/image/**" location="/image/" />
    <mvc:resources mapping="/font/**" location="/font/" />
    <mvc:resources mapping="/fonts/**" location="/fonts/" />
    
  2. 当访问静态资源时,SpringMVC 在 Controller 的方法中寻找匹配项,如果没有就将这个请求丢给 web容器配置的默认servlet(defaultServlet)进行处理。这种方式只需要写一条配置语句。
    <mvc:default-servlet-handler/>
    

2、中文乱码

想要避免中文乱码文件,肯定需要统一编码方式,从页面到后端再到数据库都需要统一编码方式,这样才能避免乱码。

  1. 页面编码:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
    
  2. URL中的乱码:修改 Tomcat 中 server.xml 文件中Connector,加上一个 URIEncoding="utf-8"
  3. 配置过滤器,指定所有请求的编码:配置 Spring 的编码过滤器,为了防止Spring 中 post 方式提交的时候中文乱码通过在web.xml文件配置。
    <filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceResponseEncoding</param-name><param-value>true</param-value></init-param>
    </filter>
    <filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern>
    </filter-mapping>
    
  4. 在连接数据库时指定编码格式: jdbc:mysql://127.0.0.1:3306/xxx?useUnicode=true&characterEncoding=UTF-8

3、类型转换器

3.1、内置的类型转换器

在 SpringMVC 框架中,对于常用的数据类型 SpringMVC 框架有许多内置的类型转换器用于完成常用的类型转换。SpringMVC 框架的类型转换是通过 Converter<S,T> 实现的,这里 S 表示源类型,T 表示目标类型。Spring MVC 框架对于基本类型(例如 int、long、float、double、boolean 以及 char 等)已经做好了基本类型转换。

3.2、自定义类型转换器

虽然 SpringMVC 提供了很多内置的类型转换器,但是在开发过程中难免遇到不能满足需求的时候,所以我们还可以根据具体需求去自定义一个类型转换器。我们可以通过实现 Converter<S,T> 接口来完成类型转换器的定义:

public class DateConverter implements Converter<String, Date> {@Overridepublic Date convert(String source) {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");try {Date date = format.parse(source);return date;} catch (ParseException e) {e.printStackTrace();}return null;}
}

在定义完成之后,我们还需要在配置文件种配置转换器:

<!-- 配置转换器,这是一个转换器的服务工厂,将所有的转换器全部放在工厂内 -->
<bean id="converterService"  class="org.springframework.context.support.ConversionServiceFactoryBean"><property name="converters"><list><!-- 自定义转换器 --><bean class="com.itheima.converter.DateConverter"/><!-- 还可以添加更多的自定义转换器 --></list></property>
</bean><!-- 在配置完转换器的服务工厂之后,我们还要告诉 SpringMVC 我们使用服务工厂 -->
<mvc:annotation-driven conversion-service="converterService"/>

【SpringMVC】:静态资源相关推荐

  1. SpringMVC 静态资源CSS,JS访问不了 解决方法

    SpringMVC 静态资源CSS,JS访问不了 解决方法 参考文章: (1)SpringMVC 静态资源CSS,JS访问不了 解决方法 (2)https://www.cnblogs.com/peiy ...

  2. springmvc静态资源;mvc:default-servlet-handler后Controller失效

    springmvc静态资源;mvc:default-servlet-handler后Controller失效 web.xml配置<url-pattern>/</url-pattern ...

  3. springMVC静态资源访问不到

    还久没使用springMVC,空闲的时间搭了一个SSJ环境,发现静态资源全部没有找到,但是我的路径没有问题啊,最后发现是这些资源被拦截了 <!-- 配置SpringMvc 前端控制器 --> ...

  4. springmvc静态资源拦截与访问

    首先要配置tomcat的web.xml <init-param> <param-name>listings</param-name> <param-value ...

  5. springmvc 静态资源 配置

    SpringMVC提供<mvc:resources>来设置静态资源,但是增加该设置如果采用通配符的方式增加拦截器的话仍然会被拦截器拦截,可采用如下方案进行解决: 方案一.拦截器中增加针对静 ...

  6. 关于springmvc静态资源常被忽视,有可能致命的点

    我的项目用的是ssm,静态资源访问用的Springmvc默认的 <mvc:default-servlet-handler/> ,一直没有问题,今天突然给我报了这样一个错: Resource ...

  7. default-servlet-handler 无法访问html,default-servlet-handler不生效缘由,springmvc静态资源拦截方案比较...

    springmvc为何要拦截静态资源? 简单来讲,为了请求的url不带相似*.action,*.do,好比http://localhost:8080/system/index.action,sprin ...

  8. SpringMVC静态资源问题

    在web.xml配置不需要拦截 <servlet-mapping> <servlet-name>default</servlet-name> <url-pat ...

  9. SpringMVC_3.请求映射与静态资源处理

    1.请求映射 介绍:         请求到 web.xml ,经过 SpringMVC的分发器对象 [ DispatcherServlet ]  ,将请求转到 SpringMVC 框架中,通过 @R ...

  10. SpringMVC访问静态资源

    鸣谢:http://blog.163.com/koko_qiang/blog/static/207213184201382091154584/ ---------------------------- ...

最新文章

  1. php配置mongodb扩展、安装mongodb服务教程
  2. jQuery:计算表中的行数
  3. zabbix------监控H3C MSR路由器
  4. glusterfs快速安装
  5. 矩阵微积分的一些实用结论与推导
  6. 连麦互动直播方案全实践2:网易云信连麦互动直播方案的演变过程
  7. 怎么作非线性拟合_值得收藏ansys非线性收敛总结
  8. BI-LSTM and CRF using Keras
  9. 关于AD域账户和组的管理技巧
  10. 使用Python进行任务调度(进阶篇)
  11. 使用bootbox.js(二级务必提交书面和数字到数字中国)
  12. [复变函数]第16堂课 4.4 解析函数零点的孤立性及惟一性定理
  13. mysql中导出sql文件_MySQL中导入导出sql文件
  14. 钰泰ETA6002,2.5A,3MHz开关充电器,带路径管理
  15. lnmp一键安装包 php7,LNMP一键安装包 V1.7 正式版发布
  16. JavaScript 正则表达式
  17. 阿里云实时计算对接mysql_一小时完成基于阿里云流计算的实时计算系统搭建
  18. 【读书笔记】《JS函数式编程指南》(一)
  19. listview下拉刷新上拉加载扩展(三)-仿最新版美团外卖
  20. QQ看点模块思维导图

热门文章

  1. 2022-2028年全球与中国汽车清洁用品行业市场深度调研及投资预测分析
  2. 月旦评 之 DevOps招贤令
  3. DateTime.ToString()用法详解
  4. 在需求海洋中疲于奔命怎么“破”
  5. 封神台(尤里的复仇Ⅱ 回归)绕过防护getshell
  6. [Unity Mirror] 传输
  7. CodeMirror设置高度自适应
  8. 华为鸿蒙新机预测价格,鸿蒙操作系统亮点华为Mate40新机,华为Mate30黯然降价网友欢呼...
  9. 计算机网络回收站图标显示,让Win7资源管理器显示回收站图标
  10. 内蒙古大学IMCPC 2019 复现 问题 L: 礼物