视图解析器常见功能以及数据格式化


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)
  {
  .....
        }

文章作者: fFee-ops
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fFee-ops !
评论
  目录