使用 Spring 的表单标签
通过 SpringMVC 的表单标签可以实现将模型数据 中的属性和 HTML 表单元素相绑定,以实现表单数据更便捷编辑和表单值的回显。
一般情况下,通过 GET 请求获取表单页面,而通过 POST 请求提交表单页面,因此获取表单页面和提交表单 页面的 URL 是相同的。只要满足该最佳条件的契 约,<form:form> 标签就无需通过 action 属性指定表单 提交的 URL
可以通过 modelAttribute 属性指定绑定的模型属性,若 没有指定该属性,则默认从 request 域对象中读取 command 的表单 bean,如果该属性值也不存在,则会 发生错误
SpringMVC 提供了多个表单组件标签,如<form:input/>、<form:select/> 等,用以绑定表单字段的属性值,它们的共有属性如下:
– path:表单字段,对应 html 元素的 name 属性,支持级联属性
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” /> :显示特定表单对象属性的错误
当需要表单回显或者使用下拉列表的时候,就使用form表单标签,而如果使用遍历的标签就使用JSTL标签【导包】!
<!-- 1.可以映射静态资源的访问请求 --> <mvc:default-servlet-handler/> <mvc:annotation-driven></mvc:annotation-driven>
一般情况下,控制器方法返回字符串类型的值会被当成逻辑视图名处理
如果返回的字符串中带 forward: 或 redirect: 前缀时,SpringMVC 会对他们进行特殊处理:将 forward: 和 redirect: 当成指示符,其后的字符串作为 URL 来处理
–redirect:/success.jsp:会完成一个到 success.jsp 的重定向的操作
–forward:/success.jsp:会完成一个到 success.jsp 的转发操作
视图解析器:
图解析器的作用比较单一:将逻辑视图解析为一个具体 的视图对象。
所有的视图解析器都必须实现 ViewResolver 接口
@Component public class EmployeeConverter implements Converter<String, Employee>{ @Override public Employee convert(String source) { System.out.println(source); if(source != null){ String[] vals = source.split("-"); if(vals != null && vals.length ==5){ String name = vals[0]; String email = vals[1]; Integer gender = Integer.parseInt(vals[2]); Department department = new Department(); department.setId(Integer.parseInt(vals[3])); Employee employee = new Employee(null, name, email, gender, department); return employee; } } return null; } }
<!-- 将ConversionService再作为annotation-driven的一个属性存在! --> <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven> <!-- 配置ConversionService --> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <ref bean="employeeConverter"/> </set> </property> </bean>
<!-- 配置CommonsMultipartResolver --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="utf-8"></property> <!-- 以字节为单位 --> <property name="maxUploadSize" value="1024000<!--(文件大小)-->"></property> </bean>
<form action="<!--(url)(请求路径) -->" method="post" enctype="multipart/form-data">
file:<input type="file" name="file"/>
<input type="submit" value="提交"/>
</form>
@RequestMapping(value="testUpload",method=RequestMethod.POST) public String testUpload(HttpServletRequest request,@RequestParam(value="desc",required=false) String desc,@RequestParam("photo") CommonsMultipartFile file) throws Exception{ ServletContext servletContext = request.getServletContext(); String realPath = servletContext.getRealPath("/upload"); File file1 = new File(realPath); if(!file1.exists()){ file1.mkdir(); } OutputStream out; InputStream in; //uuid_name.jpg String prefix = UUID.randomUUID().toString(); prefix = prefix.replace("-",""); String fileName = prefix+"_"+file.getOriginalFilename(); System.out.println(fileName); out = new FileOutputStream(new File(realPath+"\\"+fileName)); in = file.getInputStream(); IOUtils.copy(in, out); out.close(); in.close(); return "success";
原文:http://www.cnblogs.com/WangKaitao/p/7420096.html