• 视图解析器常见功能、处理静态资源、类型转换器


    目录

    一、 InternalResourceViewResolver其他功能

     二、访问静态资源

    三、类型转换器

    3.1 定义类型转换器

    3.2 mvc.xml文件

    3.3 测试

    index.jsp

    Controller

     tomcat运行


    一、 InternalResourceViewResolver其他功能

    回顾以前是先通过index.jsp的form表单(action="/a/b/c")访问Controller【根据@RequestMapping("/a/b/c")注解确定】,依据Controller的返回值”success“,通过视图解析器InternalResourceViewResolver,跳转到success.jsp页面

    现在

    通过index.jsp页面直接跳转到success.jsp页面

    在mvc.xml文件中添加

    <mvc:view-controller path="/hhh" view-name="success"/>

    运行成功, 可以看到上面是view-name的属性值是success,其实这个当前也会被视图解析器InternalResourceViewResolver加上前缀和后缀。

    注意:

    以上mvc:view-controller,会让所有请求转入到mvc:view-controller中匹配的映射地址,而会忽略调@RequestMapping();我们发现再次请求Controller层中@RequestMapping(”/test/hello");会报错404.

    如果想让@RequestMapping();与mvc:view-controller共存,则需要注解驱动:mvc-annotation-driven

     

     二、访问静态资源

    添加

    三、类型转换器

    3.1 定义类型转换器

    将String类型转为对象类型Account

    1. import com.lyx.entity.Account;
    2. import org.springframework.core.convert.converter.Converter;
    3. public class MyConverter implements Converter {
    4. @Override
    5. public Account convert(String source) {//source="100-Gavin-123456-9233.78"
    6. String[] split = source.split("-");
    7. //Account(int cardNo, String name, String password, Double balance)
    8. Account account = new Account();
    9. account.setCardNo(Integer.parseInt(split[0]));
    10. account.setName(split[1]);
    11. account.setPassword(split[2]);
    12. account.setBalance(Double.parseDouble(split[3]));
    13. return account;
    14. }
    15. }

    3.2 mvc.xml文件

    1. "1.0" encoding="utf8" ?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:context="http://www.springframework.org/schema/context"
    4. xmlns:p="http://www.springframework.org/schema/p"
    5. xmlns:aop="http://www.springframework.org/schema/aop"
    6. xmlns:mvc="http://www.springframework.org/schema/mvc"
    7. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    8. xsi:schemaLocation="http://www.springframework.org/schema/beans
    9. http://www.springframework.org/schema/beans/spring-beans.xsd
    10. http://www.springframework.org/schema/p
    11. http://www.springframework.org/schema/p/spring-p.xsd
    12. http://www.springframework.org/schema/aop
    13. http://www.springframework.org/schema/aop/spring-aop.xsd
    14. http://www.springframework.org/schema/mvc
    15. http://www.springframework.org/schema/mvc/spring-mvc.xsd
    16. http://www.springframework.org/schema/context
    17. http://www.springframework.org/schema/context/spring-context.xsd "
    18. >
    19. <context:component-scan base-package="com.lyx"/>
    20. <bean id="xx" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    21. <property name="prefix" value="/"/>
    22. <property name="suffix" value=".jsp"/>
    23. bean>
    24. <bean id="messageSource"
    25. class="org.springframework.context.support.ResourceBundleMessageSource">
    26. <property name="basename" value="myproperties.i18n"/>
    27. <property name="defaultEncoding" value="UTF-8"/>
    28. bean>
    29. <mvc:view-controller path="/hhh" view-name="success"/>
    30. <mvc:default-servlet-handler/>
    31. <bean id="myConverter" class="com.lyx.converter.MyConverter"/>
    32. <bean id="myconversionService"
    33. class="org.springframework.context.support.ConversionServiceFactoryBean">
    34. <property name="converters">
    35. <set>
    36. <ref bean="myConverter"/>
    37. set>
    38. property>
    39. bean>
    40. <mvc:annotation-driven conversion-service="myconversionService"/>
    41. beans>

    3.3 测试

    index.jsp

    看到name=“accountInfo”

    1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2. <html>
    3. <head>
    4. <title>Titletitle>
    5. head>
    6. <body>
    7. <form action="${pageContext.request.contextPath}/test/testMyConverter" method="post">
    8. 账户信息: <input type="text" name="accountInfo">
    9. <input type="submit" value="点击提交数据">
    10. form>
    11. body>
    12. html>

    Controller【重点:@RequestParam】

      @RequestParam("accountInfo")触发转换器,
      @RequestParam接收到前端传递的数据:accountInfo="100-Gavin-123456-9233.78",并要把这个数据赋值给形参Account,
      SpringMVC可以发现接收的数据和目标数据Account类型不一致,并且这两种数据String类型和Account类型,正好符合转换器MyConverter.java[public class MyConverter implements Converter
    

    1. @RequestMapping("/testMyConverter")
    2. public String testMyConverter(@RequestParam("accountInfo") Account account){
    3. System.out.println(account);
    4. return "success";
    5. }

     tomcat运行

  • 相关阅读:
    数据结构 C语言 2.1 线性表抽象数据类型 2.2 小议顺序表
    大数据之Hadoop(一)
    软件项目尾期,客户提新需求怎么办?
    高新为何要提前规划?
    基于QPSK的载波同步和定时同步性能仿真,包括Costas环的gardner环
    mysql中DQL查询语句的使用级联操作
    论文解读(soft-mask GNN)《Soft-mask: Adaptive Substructure Extractions for Graph Neural Networks》
    2022年全球市场船用钢板总体规模、主要生产商、主要地区、产品和应用细分研究报告
    记一次神奇的SQL查询经历,group by、order by慢查询优化
    View体系简析
  • 原文地址:https://blog.csdn.net/m0_47010003/article/details/127638393