• SpringMVC5——SpringMVC视图解析器常见功能


    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配置文件confweb.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";
    }

      

     
  • 相关阅读:
    sqlzoo练习答案--SUM and COUNT
    响应式的嵌入内容和图片
    缓存server设计与实现(五)
    编译器DIY——读文件
    [Leetcode]-Pascal&#39;s Triangle
    zoj 1562 反素数 附上个人对反素数性质的证明
    [POJ 1236][IOI 1996]Network of Schools
    POJ 3691 DNA repair [AC自动机 DP]
    POJ 1625 Censored! [AC自动机 高精度]
    51Nod 1225 余数之和 [整除分块]
  • 原文地址:https://www.cnblogs.com/ghlz/p/13510809.html
Copyright © 2020-2023  润新知