TOC
视图解析器常见功能
不通过控制器直接访问JSP页面
一般流程:jsp->控制器->success.jsp
将要实现:jsp->success.jsp
步骤:
首先在springmvc.xml中配置:
<!-- view-name会被视图解析器加上前缀和后缀 -->
<mvc:view-controller path="T" view-name="successe"/>
<!-- MVC的基础配置,很多功能都需要该注解来协调 -->
<mvc:annotation-driven></mvc:annotation-driven>
<mvc:view-controller path=“T” view-name=“successe”/>
如果接收到请求T,则直接转到success页面。
<mvc:annotation-driven></mvc:annotation-driven>
这一句必须写,如果没写。会忽略@RequsetMapping(),让别的依据控制器的请求
通过@RequsetMapping()匹配失效。
前端:
<a href="T">T</a>
指定请求方式
指定跳转方式:return “forward:/views/success.jsp”;
forward—请求转发。跳转后地址栏不会变
redirect—重定向。跳转后地址栏发生改变
return “forward:或 redirect: xxx”:
需要注意 此种方式,不会被视图解析器加上前缀(/views)、后缀(.jsp),需要自己手动加上
处理静态资源
静态资源:html css js 图片 视频等
动态资源:可以与用户交互、因为时间/地点的不同 而结果不同的内容:动态(百度:天气 )
在SpringMVC中,如果直接访问静态资源:404 。
原因:
之前将所有的请求 通过通配符“/” 拦截,进而交给 SPringMVC的入口DispatcherServlet去处理(处理方式:找该请求映射对应的@requestMapping)
但是访问静态资源一般都是直接在地址栏访问
例如:
http://localhost:8888/SpringMVCProject/img.png。
并没有@requestMapping所以DispatcherServlet无法处理导致了404.。
解决:
如果是 需要mvc处理的,则交给@RequsetMapping(“xxx”)处理;如果不需要springmvc处理,则使用 tomcat默认的Servlet去处理。
只需要在springmvc.xml中加入:
<mvc:default-servlet-handler></mvc:default-servlet-handler>
<!-- 这个上面已经配了。我这里只是再写一遍-->
<mvc:annotation-driven></mvc:annotation-driven>
数据格式化
实现步骤:
a.配置
在xml文件中配置:
<!-- 配置 数据格式化 注解 所依赖的bean -->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
</bean>
b.通过注解使用
@DateTimeFormat(pattern="yyyy-MM-dd")
控制前端时间输入格式↑如果不是按照这个格式输入的,那么将会报错。
@NumberFormat(parttern="###,#")
假如前端传入的格式不符合,那么可以通过BindingResult将前端的错误页面信息打印在控制台。
@RequestMapping(value = "testDate")
public String testDate(Student student ,BindingResult rs) {
System.out.println(student.getId()+","+student.getName()+","+student.getBirthday());
if (rs.getErrorCount()>0) {
for (FieldError error : rs.getFieldErrors()) {
System.out.println(error);
}
}
return "successe";
}
使用Hibernate Validator进行数据校验
JSR303
↓
↓下面的只是把上面的注解进行了扩展
↓
Hibernate Validator
使用Hibernate Validator步骤:
a.jar(注意各个jar之间可能存在版本不兼容)
hibernate-validator-5.0.0.CR2.jar
classmate-0.8.0.jar
jboss-logging-3.1.1.GA.jar
validation-api-1.1.0.CR1.jar
hibernate-validator-annotation-processor-5.0.0.CR2.jar
b.配置
<mvc:annotation-driven ></mvc:annotation-driven>
这个配置早就配过,它有多个功能。在这里的功能是:要实现Hibernate
Validator/JSR303 校验(或者其他各种校验),必须实现SpringMVC提供的
一个接口:ValidatorFactory
LocalValidatorFactoryBean是ValidatorFactory的一个实现类。
<mvc:annotation-driven ></mvc:annotation-driven>会在springmvc
容器中 自动加载一个LocalValidatorFactoryBean类,因此可以直接实现
数据校验。
c.
i.直接使用注解
public class Student {
@Past//当前时间以前
private Date birthday ;
}
ii.在校验的Controller中 ,给校验的对象前增加 @Valid
public String testDateTimeFormat(@Valid Student student,
BindingResult result ,Map<String,Object> map)
{
.....
}