很明显,SimpleFormController是处理表单提交比较好的一种控制器。下面就一个小例子对SimpleFormController的用法做一个总结。
首先提纲挈领,我们的例子是做一个新闻提交模块。
如下图所示:
在输入http://localhost:8080/javalearn1.0/addNews.html后,即打开此页面,从数据库中读出新闻类别并在select框中显示。而用户填完新闻标题和新闻内容后,即保存至数据库,并刷新页面,在提交新闻按钮下方显示:保存数据成功。
第一步的显示对应一个ShowNewsClassController,而第二步保存对应AddNewsController。
首先是javalearn-servlet.xml的配置:
-
<beanid="simpleUrlHandlerMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
-
<propertyname="mappings">
-
<props>
-
<propkey="/addNews.html">showNewsClassController</prop>
-
<propkey="/addNews1.html">addNewsController</prop>
-
</props>
-
</property>
-
</bean>
对应的ShowNewsClassController为:
-
packagecom.javalearn.control;
-
importjavax.servlet.http.HttpServletRequest;
-
importjavax.servlet.http.HttpServletResponse;
-
importorg.springframework.web.servlet.ModelAndView;
-
importorg.springframework.web.servlet.mvc.AbstractController;
-
importcom.javalearn.service.*;
-
importjava.util.*;
-
importcom.javalearn.model.*;
-
publicclassShowNewsClassControllerextendsAbstractController{
-
-
privateJavalearnServicejavalearnService;
-
-
publicJavalearnServicegetJavalearnService(){
-
returnjavalearnService;
-
}
-
-
publicvoidsetJavalearnService(JavalearnServicejavalearnService){
-
this.javalearnService=javalearnService;
-
}
-
-
@Override
-
protectedModelAndViewhandleRequestInternal(HttpServletRequestarg0,
-
HttpServletResponsearg1)throwsException{
-
-
-
List<Tbclass>list=this.javalearnService.readNewsClass();
-
Map<String,List<Tbclass>>map=newHashMap<String,List<Tbclass>>();
-
map.put("myclass",list);
-
-
returnnewModelAndView("addNews","map",map);
-
}
-
}
这个类就是在页面加载时,读取新闻类别并进行显示。
对应的addNews.jsp页面为:
-
<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.sql.*"errorPage=""%>
-
<%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%>
-
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<htmlxmlns="http://www.w3.org/1999/xhtml">
-
<head>
-
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
-
<title>欢迎访问JavalearnJAVA学习网</title>
-
</head>
-
<body>
-
<formaction="addNews1.html"method="post">
-
<p>新闻类别:
-
<selectname="myclass">
-
<c:forEachitems="${map.myclass}"var="Parameter">
-
<optionvalue="${Parameter.id}">${Parameter.classname}</option>
-
</c:forEach>
-
</select></p>
-
<p>新闻标题:<inputname="title"type="text"/></p>
-
<p>新闻内容:<textareaname="mycontent"rows="10"cols="100"></textarea></p>
-
<p><inputtype="submit"value="提交新闻"/></p>
-
</form>
-
<fontcolor="red">${map.message}</font>
-
</body>
-
</html>
即,点击了提交按钮后,跳转至addNews1.html。而由在javalearn-servlet.xml中配置可知,此url交由AddNewsController进行处理。AddNewsController继承至SimpleFormController,onSubmit方法处理提交事件。且form中的各个控件的name对应AddNewsController的CommandClass的属性。类似于Struts2或JavaBean的用法。
-
packagecom.javalearn.control;
-
importorg.springframework.validation.BindException;
-
importorg.springframework.web.servlet.ModelAndView;
-
importorg.springframework.web.servlet.mvc.SimpleFormController;
-
-
importcom.javalearn.model.Tbclass;
-
importcom.javalearn.model.Tbnews;
-
importcom.javalearn.service.*;
-
importjava.util.*;
-
-
-
-
-
publicclassAddNewsControllerextendsSimpleFormController{
-
-
privateJavalearnServicejavalearnService;
-
publicAddNewsController()
-
{
-
this.setCommandClass(Tbnews.class);
-
this.setCommandName("Tbnews");
-
}
-
publicJavalearnServicegetJavalearnService(){
-
returnjavalearnService;
-
}
-
publicvoidsetJavalearnService(JavalearnServicejavalearnService){
-
this.javalearnService=javalearnService;
-
}
-
-
protectedModelAndViewonSubmit(Objectcommand,BindExceptionbindException)throwsException
-
{
-
Tbnewstbnews=(Tbnews)command;
-
-
Mapmap=newHashMap<String,String>();
-
List<Tbclass>list=this.javalearnService.readNewsClass();
-
if(this.javalearnService.saveNews(tbnews))
-
{
-
map.put("message","保存数据成功!");
-
}
-
else
-
{
-
map.put("message","保存数据失败!");
-
}
-
map.put("myclass",list);
-
returnnewModelAndView(this.getSuccessView(),"map",map);
-
}
-
}
分享到:
相关推荐
NULL 博文链接:https://huihai.iteye.com/blog/1967697
Spring MVC例子 有SimpleFormController ,MultiationController等控制器的应用介绍.算是比较完整的例子大家看看吧。
去几年,REST逐渐成为影响Web框架、Web协议与Web应用设计的重要概念...更进一步,如果你手头有一个Spring MVC应用,使用了控制类继承(SimpleFormController等),你可能还意识不到现在的Spring MVC对REST广泛的支持。
NULL 博文链接:https://mgz-99-163-com.iteye.com/blog/690417
Spring MVC 入门 从一个最简单的 Spring Web 应用程式,来看看 Spring MVC 框架的架构与 API 组成元素。 第一个 Spring MVC 程式 WebApplicationContext Handler Mapping Handler ...
一个基于Spring MVC的网络平台,用于加密货币交易和转移 框架:Spring mvc 5.2.3.RELEASE。 查看:JSP。 数据持久性:Hibernate5.4.10.Final。 数据库:MySQL 8.0.21 Java:1.8。 用户表单提交:...
2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path...
springMVC3学习(六)--SimpleFormController(源码) 文章地址:http://blog.csdn.net/itmyhome1990/article/details/25988733
2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path...
2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path...
Spring的web框架是围绕...你可以通过实现这个接口来生成自己的控制器(也可以称之为处理器),但是从Spring提供的一系列控制器继承会更省事,比如AbstractController、AbstractCommandController和SimpleFormController
自己写的spring表单绑定的小例子,分别使用SimpleFormController,MultiActionController,spring的form tag和validator。 还在MultiActionController里面实现了表单的绑定
All Classes AbstractAdvisorAutoProxyCreator AbstractApplicationContext AbstractApplicationEventMulticaster AbstractAspectJAdvice AbstractAspectJAdvisorFactory AbstractAspectJAdvisorFactory....
遗留应用程序使用 Spring 谈话改进您的遗留应用程序的代码。 有几个分支显示了从 Legacy Monolitic 应用程序迁移到结构良好(或更好)的应用程序,这些应用程序可以分解为不同的部分。显示从 Spring 2.0.8 升级到 ...
2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path...
Spring-Validator软件包提供了一种自动生成JavaScript客户端验证代码的简单方法,并提供了SimpleFormController的通用验证器