zoukankan      html  css  js  c++  java
  • 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";
    }

      

     
  • 相关阅读:
    Javac配置环境变量01
    jmeter压测学习-发soap请求测试webservice
    Faker 安装与介绍
    docker使用nginx部署spring项目
    Linux查看端口占用情况
    Cesium 中两种添加 model 方法的区别
    Cesium 动态更换模型贴图方法
    Node.js API 学习笔记
    一步步建立 Vue + Cesium 初始化项目
    python3 解析 base64 数据
  • 原文地址:https://www.cnblogs.com/ghlz/p/13510809.html
Copyright © 2011-2022 走看看