• SpringMVC表单标签&处理静态资源


    使用 Spring 的表单标签

    通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据更便捷编辑和表单值的回显

    form 标签

    • 一般情况下, 通过 GET 请求获取表单页面,而通过POST 请求提交表单页面, 因此获取表单页面和提交表单页面的 URL 是相同的。 只要满足该最佳条件的契约, <form:form> 标签就无需通过 act一般情况下, 通过 GET 请求获取表单页面,而通过POST 请求提交表单页面, 因此获取表单页面和提交表单页面的 URL 是相同的。 只要满足该最佳条件的契约, <form:form> 标签就无需ion 属性指定表单提交的 URL

    • 可以通过 modelAttribute 属性指定绑定的模型属性,若没有指定该属性, 则默认从 request 域对象中读取command 的表单 bean,如果该属性值也不存在, 则会发生错误。

     

    对应的handler模型属性与modelAttribute一致

     

     

     

    表单标签

    • SpringMVC 提供了多个表单组件标签,如<form:input/>、 <form:select/> 等,用以绑定表单字段的属性值,它们的共有属性如下:

    – path: 表单字段, 对应 html 元素的 name 属性,支持级联属性

    – htmlEscape:是否对表单值的 HTML 特殊字符进行转换,默认值为 true

    – cssClass:表单组件对应的 CSS 样式类名

    – cssErrorClass:表单组件的数据存在错误时,采取的 CSS 样式

    • form:input、 form:password、 form:hidden、 form:textarea: 对应 HTML 表单的 text、 password、 hidden、 textarea标签

    • form:radiobutton: 单选框组件标签,当表单 bean 对应的属性值和 value 值相等时, 单选框被选中

    • form:radiobuttons: 单选框组标签,用于构造多个单选框

    – items:可以是一个 List、 String[] 或 Map

    – itemValue:指定 radio 的 value 值。可以是集合中 bean 的一个属性值

    – itemLabel:指定 radio 的 label 值

    – delimiter:多个单选框可以通过 delimiter 指定分隔符

    • form:checkbox: 复选框组件。用于构造单个复选框

    • form:checkboxs:用于构造多个复选框。使用方式同form:radiobuttons 标签

    • form:select:用于构造下拉框组件。 使用方式同form:radiobuttons 标签

    • form:option:下拉框选项组件标签。 使用方式同form:radiobuttons 标签

    • form:errors: 显示表单组件或数据校验所对应的错误

    – <form:errors path= " *" /> : 显示表单所有的错误

    – <form:errors path= " user*" /> : 显示所有以 user 为前缀的属性对应的错误

    – <form:errors path= " username" /> : 显示特定表单对象属性的错误

    处理静态资源

    • 优雅的 REST 风格的资源URL 不希望带 .html 或 .do 等后缀

    • 若将 DispatcherServlet 请求映射配置为 /, 则 Spring MVC 将捕获WEB 容器的所有请求, 包括静态资源的请求, SpringMVC 会将他们当成一个普通请求处理,因找不到对应处理器将导致错误。

    • 解决的办法:可以在 SpringMVC 的配置文件中配置 <mvc:default-servlethandler/> 的方式解决静态资源的问题:

     

     

      

    – <mvc:default-servlet-handler/> 将在 SpringMVC 上下文中定义一个DefaultServletHttpRequestHandler,它会对进入 DispatcherServlet 的请求进行筛查,如果发现是没有经过映射的请求,就将该请求交由 WEB应用服务器默认的 Servlet 处理,如果不是静态资源的请求,才由DispatcherServlet 继续处理

    – 一般 WEB 应用服务器默认的 Servlet 的名称都是 default。若所使用的WEB 服务器的默认 Servlet 名称不是 default, 则需要通过 defaultservlet-name 属性显式指定

    注意:

    在SpringMVC中常用的就是Controller与View。但是我们常常会需要访问静态资源,如html,js,css,image等。默认的访问的URL都会被DispatcherServlet所拦截,但是我们希望静态资源可以直接访问。该肿么办呢?静态资源访问,其实方法有多种,如:通过开放tomcat的defaultServlet,修改默认的url-parttern。但是SpringMVC提供了更为便捷的方式处理静态资源。

    解决方案:

    直接在spring-mvc.xml中添加资源映射。

    资源映射

    <!-- 静态资源(js/image)的访问 -->

    <mvc:resources mapping="/css/**" location="/css/" />

    <mvc:resources mapping="/images/**" location="/images/" />

    <mvc:resources mapping="/js/**" location="/js/" />

    mapping:映射

    location:本地资源路径,注意必须是webapp根目录下的路径。

    两个*,它表示映射resources/下所有的URL,包括子路径(即接多个/)这样我们就可以直接访问该文件夹下的静态内容了。

    如以下资源可以直接访问:

    http://localhost:8090/firstapp/images/cookie.png

    http://localhost:8090/firstapp/js/jquery-1.11.2.js

     

  • 相关阅读:
    Emacs和ESS的使用技巧。
    响应式
    Day learn,day up
    Docker快速安装kafka | 沈健的技术博客
    闭包函数如何使用循环变量
    leetcode笔记——35.搜索插入位置
    CSS 之动态变换背景颜色
    吴裕雄 PYTHON 神经网络——TENSORFLOW 双隐藏层自编码器设计处理MNIST手写数字数据集并使用TENSORBORD描绘神经网络数据2
    吴裕雄 PYTHON 神经网络——TENSORFLOW 双隐藏层自编码器设计处理MNIST手写数字数据集并使用TENSORBORD描绘神经网络数据
    吴裕雄 PYTHON 神经网络——TENSORFLOW 单隐藏层自编码器设计处理MNIST手写数字数据集并使用TensorBord描绘神经网络数据
  • 原文地址:https://www.cnblogs.com/haaron/p/5157752.html
Copyright © 2020-2023  润新知