一、JSTL
Spring5.x javax.servlet.jsp.jstl
Spring6.x jakarta.servlet.jsp.jstl
二、SpringMVC返回值类型
1、String
2、ModelAndView
3、void
中文乱码问题
4、JSON
默认Jackson
1、依赖
<!--Jackson jackson-databind已经包含 jackson-core和jackson-annotation的依赖 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.14.2</version>
</dependency>
2、SpringMVC 配置
<mvc:annotation-driven/>
自动注册RequestMappingHandlerMapping、RequestMappingHandlerAdapter与ExceptionHandlerExceptionResolver 三个bean。
还将提供以下支持:
支持使用 ConversionService 实例对表单参数进行类型转换;
支持使用 @NumberFormat annotation、@DateTimeFormat;
注解完成数据类型的格式化;
支持使用 @Valid 注解对 JavaBean 实例进行 JSR 303 验证;
支持使用 @RequestBody 和 @ResponseBody 注解
3、在Controller中返回,指定 produces = "application/json;charset=UTF-8"
第三方FastJson
1、依赖
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension-spring5</artifactId>
<version>2.0.24</version>
</dependency>
2、配置
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean id="fastJsonMessageConverter" class="com.alibaba.fastjson2.support.spring.http.converter.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
3、使用
补充:异常 No converter for [class xxx.xxx.xx.xxx] with preset Content-Type 'null'
原因:没有和指定的produces(ContentType)匹配的消息转换器
①没有引入对应的依赖
②produces(ContentType)写错了!!
三、静态资源映射
<mvc:resources location="/js/" mapping="/js/**"/>
四、中文乱码问题
<!-- 配置SpringMVC提供的字符编码过滤器 设置字符编码 解决中文乱码问题 -->
<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>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意:
对于直接通过PrintWriter返回的情况
还需要在 writer.print方法前设置 response.setContentType("text/plain;charset=utf-8");才可以