JavaWeb-20-SpringMVC的表单标签以及引入静态资源

目录

1:页面操作

2:用了表单标签的页面可能会报这个错误;请求域中没有一个command类型的对象;来到页面之前一定要给请求域中放这个对象;

​ 3:后端操作

4:springmvc引入静态资源

1:当在页面使用静态资源时回报异常

2:原因是因为springmvc在web.xml中设置了拦截除jsp外所有的请求

3:解决办法:配置

4:关于作用


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

1:页面操作

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
//必须指定导入form
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 
<!-- 
1.为什么使用SpringMVC的form标签
① 快速开发
② 表单回显
2.可以通过modelAttribute指定绑定的模型属性,
若没有指定该属性,则默认从request域中查找command的表单的bean
如果该属性也不存在,那么,则会发生错误。
3:	path:表单字段,对应 html 元素的 name 属性,支持级联属性
	htmlEscape:是否对表单值的 HTML 特殊字符进行转换,默认值为 true
	cssClass:表单组件对应的 CSS 样式类名
	cssErrorClass:表单组件的数据存在错误时,采取的 CSS 样式
4: form:radiobuttons:单选框组标签,用于构造多个单选框
	items:可以是一个 List、String[] 或 Map
	itemValue:指定 radio 的 value 值。可以是集合中 bean 的一个属性值
	itemLabel:指定 radio 的 label 值
	delimiter:多个单选框可以通过 delimiter 指定分隔符


 -->
 <form:form action="empAdd" method="POST" modelAttribute="employee">
         LastName : <form:input path="lastName"/><br><br>
         Email : <form:input path="email"/><br><br>
         <%
                 Map<String,String> map = new HashMap<String,String>();
                 map.put("1", "Male");
                 map.put("0","Female");
                 request.setAttribute("genders", map);
         %>
        Gender : <br><form:radiobuttons path="gender" items="${genders }" delimiter="<br>"/><br><br>
         DeptName : 
                 <form:select path="department.id" 
                                                 items="${deptList }" 
                                                 itemLabel="departmentName" 
                                                 itemValue="id"></form:select><br><br>
                 <input type="submit" value="Submit"><br><br>
 </form:form> 
</body>
</html>

2:用了表单标签的页面可能会报这个错误;请求域中没有一个command类型的对象;来到页面之前一定要给请求域中放这个对象;

 3:后端操作

@RequestMapping(value="/empInput",method=RequestMethod.GET)
public String empInput(Map<String,Object> map){
    map.put("deptList", departmentDao.getDepartments());
    //解决错误:java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'command' available as request attribute
    Employee employee = new Employee();
    //map.put("command", employee);
    //	可以通过 modelAttribute 属性指定绑定的模型属性,若没有指定该属性,则默认从 request 域对象中读取 command 的表单 bean,如果该属性值也不存在,则会发生错误。
    map.put("employee", employee);
    return "add";
}

4:springmvc引入静态资源

1:当在页面使用静态资源时回报异常

2:原因是因为springmvc在web.xml中设置了拦截除jsp外所有的请求

3:解决办法:配置<mvc:default-servlet-handler/>

  • 在dispatcher-servlet.xml中配置<mvc:default-servlet-handler/>告诉springmvc自己能映射的自己管理;不能映射的交给tomcat
  • 但是当设置了<mvc:default-servlet-handler/>后其他的动态请求又不好使了,那么在此设置开启springmvc管理动态资源<mvc:annotation-driven />

4:关于<mvc:default-servlet-handler/>作用

<mvc:default-servlet-handler/> 将在 SpringMVC 上下文中定义一个 DefaultServletHttpRequestHandler

它会对进入 DispatcherServlet 的请求进行筛查,如果发现是没有经过映射的请求,

就将该请求交由 WEB 应用服务器默认的 Servlet 处理,如果不是静态资源的请求,才由 DispatcherServlet 继续处理

一般 WEB 应用服务器默认的 Servlet 的名称都是 default。

若所使用的 WEB 服务器的默认 Servlet 名称不是 default,则需要通过 default-servlet-name 属性显式指定 

参考:CATALINA_HOME/config/web.xml

    <servlet>

        <servlet-name>default</servlet-name>

        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>

        <init-param>

            <param-name>debug</param-name>

            <param-value>0</param-value>

        </init-param>

        <init-param>

            <param-name>listings</param-name>

            <param-value>false</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

该标签属性default-servlet-name默认值是"default",可以省略。        

<mvc:default-servlet-handler/>        

 -->

<mvc:default-servlet-handler default-servlet-name="default"/>       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

苍煜

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值