Spring MVC笔记(三) Spring MVC表单处理

创建动态WEB工程 FormHandling,并添加SpringMVC相关jar包(同Hello world示例一致),添加DispatcherServlet配置,如下:

web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 3   <display-name>FormHandling</display-name>
 4
 5   <servlet>
 6       <servlet-name>FormHandling</servlet-name>
 7       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 8   </servlet>
 9   <servlet-mapping>
10       <servlet-name>FormHandling</servlet-name>
11       <url-pattern>/</url-pattern>
12   </servlet-mapping>
13 </web-app>

Formhandling-servlet.xml

创建模型对象student.java

 1 package com.young.formhandling;
 2
 3 public class Student {
 4   private Integer age;
 5   private String name;
 6   private Integer id;
 7
 8   public Integer getAge() {
 9     return age;
10   }
11
12   public void setAge(Integer age) {
13     this.age = age;
14   }
15
16   public String getName() {
17     return name;
18   }
19
20   public void setName(String name) {
21     this.name = name;
22   }
23
24   public Integer getId() {
25     return id;
26   }
27
28   public void setId(Integer id) {
29     this.id = id;
30   }
31
32
33 }

创建控制器对象StudentController.java

 1 package com.young.formhandling;
 2
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.ui.ModelMap;
 5 import org.springframework.web.bind.annotation.ModelAttribute;
 6 import org.springframework.web.bind.annotation.RequestMapping;
 7 import org.springframework.web.bind.annotation.RequestMethod;
 8 import org.springframework.web.servlet.ModelAndView;
 9
10 @Controller
11 public class StudentController {
12
13   @RequestMapping(value = "/student", method = RequestMethod.GET)
14   public ModelAndView student() {
15     return new ModelAndView("student", "command", new Student());
16   }
17
18   @RequestMapping(value = "/addStudent", method = RequestMethod.POST)
19   public String addStudent(@ModelAttribute("SpringWeb") Student student, ModelMap model) {
20     model.addAttribute("name", student.getName());
21     model.addAttribute("age", student.getAge());
22     model.addAttribute("id", student.getId());
23
24     // 渲染result.jsp
25     return "result";
26   }
27 }

添加student.jsp

 1 <%@ page language="java" pageEncoding="UTF-8"%>
 2 <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>Spring MVC表单处理</title>
 8 </head>
 9 <body>
10     <h2>Student Information</h2>
11     <form:form action="/FormHandling/addStudent" method="post">
12         <table>
13             <tr>
14                 <td><form:label path="name">名字:</form:label></td>
15                 <td><form:input path="name"></form:input></td>
16             </tr>
17             <tr>
18                 <td><form:label path="age">年龄:</form:label></td>
19                 <td><form:input path="age"></form:input></td>
20             </tr>
21             <tr>
22                 <td><form:label path="id">编号:</form:label></td>
23                 <td><form:input path="id"></form:input></td>
24             </tr>
25             <tr>
26                 <td colspan="2"><input type="submit" value="提交表单" /></td>
27             </tr>
28         </table>
29
30     </form:form>
31 </body>
32 </html>

添加result.jsp

 1 <%@ page language="java" pageEncoding="UTF-8"%>
 2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 3 <html>
 4 <head>
 5 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 6 <title>Spring MVC表单处理</title>
 7 </head>
 8 <body>
 9     <h2>提交的学生信息如下:</h2>
10     <table>
11         <tr>
12             <td>名称:</td>
13             <td>${name}</td>
14         </tr>
15         <tr>
16             <td>年龄:</td>
17             <td>${age}</td>
18         </tr>
19         <tr>
20             <td>编号:</td>
21             <td>${id}</td>
22         </tr>
23     </table>
24 </body>
25 </html>

最后启动tomcat,运行http://localhost:8080/FormHandling/student如下所示:

点击提交表单按钮,显示如下:

这时,发现我们提交的中文名称显示为乱码,我们在控制器类中打印姓名的内容发现,提交到控制器时显示就是乱码:

解决方法如下:

在web.xml文件中添加字符集过滤器:

 1 <filter>
 2       <filter-name>characterEncodingFilter</filter-name>
 3       <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
 4       <init-param>
 5           <param-name>encoding</param-name>
 6           <param-value>UTF-8</param-value>
 7       </init-param>
 8       <init-param>
 9           <param-name>forceEncoding</param-name>
10           <param-value>true</param-value>
11       </init-param>
12   </filter>
13   <filter-mapping>
14       <filter-name>characterEncodingFilter</filter-name>
15       <url-pattern>/*</url-pattern>
16   </filter-mapping>

重新启动tomcat,再次运行,中文显示正常:

注意:此种方法只针对1.jsp页面编码设置为UTF-8;2.form表单提交方式为post,get方式下spring编码过滤器是不起作用的。

时间: 2024-08-10 19:17:38

Spring MVC笔记(三) Spring MVC表单处理的相关文章

spring mvc Controller与jquery Form表单提交代码demo

1.JSP表单 <% String basePath = request.getScheme() + "://" + request.getServerName() +":"+ request.getServerPort() + request.getContextPath() + "/"; %> <script language="javascript" type="text/javascript

mvc area区域和异步表单,bootstrap简单实例

码农最怕眼高手低 今天来练习mvc Area技术和bootstrap以及异步表单的C#代码实现. 1.area区域架构对于建立复杂业务逻辑很有帮助,由  AreaRegistration.RegisterAllAreas()方法遍历路由表,获得所有注册的路由.参见 建立类库Common,下设一个文件夹BookStore 在其中建立model和controller.(注意引用System.Web.Mvc这个dll) 项目结构如图: 其中book.cs为model模型 namespace Commo

Bootstrap快速学习笔记(2)表单系列之二

欢迎收看大奥编写的Bootstrap快速学习笔记(2)表单系列之二 本学习笔记根据[慕课网]教程修改而来,用它学习Bootstrap,将会带来全新的体验哦: 表单控件大小 表单控件状态 按钮 图像 详细介绍 表单控件大小表单控件大小可以通过给表单控件添加class类来实现,如果想要比较大,则添加input-lg类,如果想要比较小, 则添加input-sm类,但这仅是对高度进行了处理,如果要对宽度进行处理,需要在每个input控件外围添加div容器并带有col-xs-4类,并 且要在这组控件的外围

Spring Data 系列(三) Spring+JPA(spring-data-commons)

本章是Spring Data系列的第三篇.系列文章,重点不是讲解JPA语法,所以跑开了JPA的很多语法等,重点放在环境搭建,通过对比方式,快速体会Spring 对JPA的强大功能. 准备代码过程中,保持了每个例子的独立性,和简单性,准备的源码包,下载即可使用.如果,对JPA语法想深入研究的话,直接下载在此基础上进行测试. 前言 Spring Data 系列(一) 入门:简单介绍了原生态的SQL使用,以及JdbcTemplate的使用,在这里写SQL的活还需要自己准备. Spring Data 系

HTML5学习笔记(二)——表单1

表单一直是网页必不可少的一部分,一直以来,表单的作用被无限扩展,发展出了诸多新奇的用法,老版的HTML只支持很少的一部分常用表单,许多的新表单都需要借助CSS与JavaScript语言来进行构建,现在HTML5来了,她带来了新的表单,这些强大的表单项,可以省去一大块复杂的JavaScript代码,很值得去学习. 而且在新的表单里面,不再像以前每个表单都必须位于<form></form>之内,只要在<form></form>内定义一个id,然后在网页任何位置都

Django学习笔记(五)—— 表单

疯狂的暑假学习之  Django学习笔记(五)-- 表单 参考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path                                 除域名以外的请求路径,斜杠开头                      "/hello/" request.get_host()                      主机名                              

Bootstrap快速学习笔记(2)表单系列之一

欢迎收看大奥编写的Bootstrap快速学习笔记(2)表单系列之一 本学习笔记根据[慕课网]教程修改而来,用它学习Bootstrap,将会带来全新的体验哦: .form-control类 水平表单 内联表单 详细介绍 form-control类把该类直接添加到控件上: 1.宽度变成了100%:2.设置了一个浅灰色(#ccc)的边框:3.具有4px的圆角:4.设置阴影效果,并且元素得到焦点之时,阴影和边框效果会有所变化:5.设置了placeholder的颜色为#999 水平表单最外层form标签要

html+css学习笔记 5[表格、表单]

表格 -- 默认样式重置 表格标签:     table 表格     thead 表格头     tbody 表格主体     tfoot 表格尾     tr 表格行     th 元素定义表头     td 元素定义表格单元 表格样式重置 table{border-collapse:collapse;} 单元格间隙合并 th,td{padding:0;}重置单元格默认填充   单元格合并 rowspan  属性规定单元格可横跨的行数.     <td rowspan="2"

HTML5第8次课堂笔记( 模拟form表单提交数据,xml的解析,jQuery的Ajax方法使用, mui的ajax)

HTML5第8次课堂笔记 1.  模拟form表单提交数据:(get方式) <body> <formmethod="get"action="DataTest7"> <inputtype="text"name="uname"value="yang"id="myname"><br/> <inputtype="password&q