SpringMVC数据绑定与表单标签库

本文介绍SpringMVC数据绑定与表单标签库。数据绑定可将用户输入绑定到领域模型,有无需类型转换、验证失败自动回填等优点。还介绍了表单标签库及使用方法,通过创建web应用,配置相关文件,实现User类属性与JSP表单参数绑定,展示了数据绑定的应用。

SpringMVC数据绑定与表单标签库

数据绑定是将用户参数输入值绑定到领域模型的一种特性。
数据绑定的优点主要有两点:
第一,不再需要将HTTP请求中的String类型转换成模型所需的类型。
第二,当输入的验证失败时会重新生成一个HTML表单,无需重新填写输入字段。
在SpringMVC中,为了方便高效地使用数据绑定,还需使用表单标签库。
在SpringMVC中数据绑定有这样几层含义:绑定请求参数输入值到领域模型;模型数据到视图的绑定(输入验证失败时);模型数据到表单元素的绑定(如选项值被控制器初始化)

表单标签库包含了可以用在JSP页面渲染HTML元素的标签,在JSP页面使用Spring标签库时,必须在JSP页面开头处声明taglib指令。
在表单标签库有form,input,password,hidden,textarea,checkbox,checkboxes,radiobutton,radiobuttons,select,option,options,errors等标签。

数据绑定的应用,在应用中实现了User类属性和JSP页面中表单参数的绑定,同时在JSP页面分别展示了input,textarea,checkbox,checkboxs,select等标签。

1-在IDEA中创建名为ch12-1的web应用,在该web应用的WEB-INF下创建目录lib,在该目录中导入Spring的核心包和依赖包,SpringMVC的核心包,同时需要将Tomcat的Webapps\examples\WEB-INF\lib目录下的JSTL相关的jar包复制到应用的WEB-INF/lib目录下。
在这里插入图片描述
2-在web.xml中部署dispatcherServlet,在该配置文件中配置CharacterEncodingFilter解决中文乱码问题。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         id = "WebApp_ID" version="4.0">
    <!--部署DispatcherServlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>WEB-INF/springmvc-servlet.xml</param-value>
        </init-param>
        <!--表示容器启动时加载的servlet-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--任意的请求都通过DispatcherServlet-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- 配置 CharacterEncodingFilter解决中文乱码问题-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

        <!-- 配置编码格式为UTF-8 -->
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

3-在WEB-INF目录下创建SpringMVC核心配置文件,在该配置文件中扫描指定的包,配置视图解析器,解析视图路径。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--使用扫描机制,扫描控制器类-->
    <context:component-scan base-package="controller"/>
    <context:component-scan base-package="service"/>
    <mvc:annotation-driven />
    <!--annotation-driven用于简化开发的配置,注解DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter-->
    <!--使用resources过滤掉不需要dispatcherservlet的资源,例如静态资源,在使用resources时必须使用annotation-driven,否则resources会阻止任意控制器被调用-->
    <mvc:default-servlet-handler/>
    <!--配置视图解析器-->
    <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" id = "internalResourceViewResolver">
        <!--前缀-->
        <property name = "prefix" value = "/WEB-INF/jsp/"/>
        <!--后缀-->
        <property name = "suffix" value = ".jsp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nuist__NJUPT

给个鼓励吧,谢谢你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值