SpringMVC视图解析器常见功能
1.<mvc:view-controller/>
要用SpringMVC实现:index.jsp——>success.jsp
<!--view-name依旧会被视图解析器加上前缀后缀-->
<mvc:view-controller path="SpringMVCHandler/testMvcViewController" view-name="success"/>

 

以上注解,会让所有的请求转入<mvc:...>中匹配的映射地址,而会忽略@RequestMapping();
如果向让两者共存,需加入:
<!--此配置是SpringMVC的基础配置,很多功能需要此注解来协调-->
<mvc:annotation-driven></mvc:annotation-driven>
 
2.指定请求方式
指定跳转方式:此种方法不会被视图解析器加上前缀、后缀。
//forward:转发  redirect:重定向
return "forward:/views/success.jsp";//view
 
3.处理静态资源
html,css,js,图片,视频
在SpringMVC中,如果直接访问静态资源:会404;
      原因:之前将所有的请求通过通配符“/”拦截,进而交给SpringMVC。
      解决方法:如果需要mvc处理,则用@RequestMapping;
                       如果不需要,则使用tomcat默认的servlet去处理:有对应的拦截,则交给相应的servlet去处理;如果没有,则直接访问。
tomcat默认的servlet在tomcat配置文件\conf\web.xml中。
      实现方法:在springmvc.xml中增加两个配置。
<!--此配置是SpringMVC的基础配置,很多功能需要此注解来协调-->
<mvc:annotation-driven></mvc:annotation-driven>
 
<!--该配置用于springmvc中接收一个请求时,若该请求没有对应的@RequestMapping,则将该请求交给服务器默认的servlet去处理(直接访问)-->
<mvc:default-servlet-handler></mvc:default-servlet-handler>
 
4.类型转换
(1)Spring自带一些常见的类型转换器:
public String testDelete(@PathVariable("id") String id){,既可以接收int类型数据id,也可以接收String类型数据。
(2)可以自定义类型转换器
a.编写自定义类型转换器的类(实现Converter接口);
public class MyConverter implements Converter<String,Student> {
    @Override
    public Student convert(String source) {//source-->1-zs-34
        //source接收前端传来的string:1-zs-34
        //根据“-”拆分
        String[] studentStrArr = source.split("-");
 
        Student student = new Student();
        student.setId(Integer.parseInt(studentStrArr[0]));
        student.setName(studentStrArr[1]);
        student.setAge(Integer.parseInt(studentStrArr[2]));
 
        return student;
    }
}

 

b.配置:将自定义类型转换器的类加入到springmvc中。
<!--1自定义转换器纳入springmvc容器-->
<bean id="myConverter" class="org.ghl.converter.MyConverter"></bean>

<!--2将myConverter再纳入springmvc提供的转换器bean-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <set>
            <ref bean="myConverter"/>
        </set>
    </property>
</bean>

<!--3将conversionService注册到annotation-driven-->
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

 

c.测试
//测试转换器
@RequestMapping(value = "testConverter")
public String testConverter(@RequestParam("studentInfo") Student student){
 
    System.out.println(student.getId()+","+student.getName()+","+student.getAge());
    return "success";
}
@RequestParam("studentInfo")是触发转换器的桥梁。

5.数据格式化
实现步骤:
a.配置
<!--配置数据格式化所依赖的bean-->
<bean id="conversionService2" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"></bean>
b.通过注解使用
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
@NumberFormat(pattern = "###,#")
private int id;
//测试数据格式化
@RequestMapping(value = "testDateTimeFormat")// 如果格式化错误,会将错误信息传入result
public String testDateTimeFormat(Student student, BindingResult result){
 
    System.out.println(student.getId()+","+student.getName()+","+student.getBirthday());
    if (result.getErrorCount()>0){
        for (FieldError error:result.getFieldErrors()){
            System.out.println(error.getDefaultMessage());
        }
    }
    return "success";
}