org.springframework.web.servlet.mvc.SimpleFormController 是 AbstractFormController 的子类别,对于简单的表单可以直接继承这个类别,并重新定义其 onSubmit()或 doSubmitAction()方法以处理使用者的请求,SimpleFormController 的处理流程是这样的: </p>
<p> 1. 呼叫 processFormSubmission()以检验 Errors 物件,看看在绑定或验证时有无任何的 错误。 <br />
2. 如果有错误发生,返回"formView"所设定的页面。 <br />
3. 如果 isFormChangeRequest()根据 request 被重新定义并返回 true,则也会回到 "formView",在回到"formView"之前会呼叫 onFormChange() ,让您有机会修正表单物
件。 <br />
4. 如果没有错误发生,则会呼叫带有 HttpServletRequest、HttpServletResponse、Object、 BindException 参数的 onSubmit(),预设是呼叫仅带 Object 及 BindException 的
onSubmit(),而后者预设是呼叫只有 Object 参数的 onSubmit(),预设是导向设定的 "successView",可以考虑重新定义 doSubmitAction(),不用返回 ModelAndView,预设 会导向 "successView",在不需要向"successView"传送任何 Model 资料物件时可以使
用。 <br />
以下实作一个表单登入程式,以示范 SimpleFormController 的作用,首先设计一个 form.jsp: </p>
<h5> • form.jsp</h5>
<pre class="code"><%@pagecontentType="text/html"%>
<%@page?pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Login Form</title>
</head>
<body>
<h1>登入表单</h1> 请输入使用者名称与密码:<p>
<form name="loginform" action="/SimpleFormDemo/login.do" method="POST">
名称 <input type="text" name="username"/><br>
密码 <input type="password" name="password"/><br>
<input type="submit" value="确定"/>
</form> 注意:输入错误会再回到这个页面中。
</body>
</html></pre>
<p> 表单中传递两个参数"username"与"password",注意表单的"method"属性设定为"POST",这样 Spring 才会将请求参数填入表单物件中。先看看 LoginController 的撰写: </p>
<h5> • LoginController.java </h5>
<pre class="code">package onlyfun.caterpillar;
import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.*;
public class LoginController extends SimpleFormController {
public LoginController() {
setCommandClass(LoginForm.class);
}
protected ModelAndView onSubmit(
Object command) throws Exception {
LoginForm form = (LoginForm) command;
if("caterpillar".equals(form.getUsername()) && "123456".equals(form.getPassword())) {
return new ModelAndView(getSuccessView(),"user", form.getUsername());
}
else {
return new ModelAndView(getFormView());
}
}
}
</pre>
<p> nSumit()方法接收 command 物件,这个物件代表了表单物件,getSuccessView()与 getFormView()
是 SimpleFormController 中定义的两个方法,分别表示通过验证与失败的目标网页,待会可以 直接在 Bean 定义档中定义,先来看看表单物 件,它只是个简单的 JavaBean: </p>
<h5> • LoginForm.java</h5>
<pre class="code">package onlyfun.caterpillar;
public class LoginForm {
private String username;
private String password;
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}</pre>
<p> 接下来看看 Bean 定义档是如何撰写的:</p>
<h5> • mvc-config.xml</h5>
<pre class="code"><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN""http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="urlMapping" class="org.springframework.web.servlet.
→ handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/login.do">loginController</prop>
</props>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.
→ view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/jsp/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<bean id="loginController" class="onlyfun.caterpillar.LoginController">
<property name="successView">
<value>success</value>
</property>
<property name="formView">
<value>form</value>
</property>
</bean>
</beans></pre>
<p> 定义档中定义了"successView"与"formView",其中 form.jsp 之前已经撰写完成,来看一下
success.jsp 的撰写:</p>
<h5> • success.jsp</h5>
<pre class="code"><%@pagecontentType="text/html"%>
<%@page?pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登入成功</title>
</head>
<body>
<H1>哈啰! ${user}!!</H2> 这是您的神秘礼物!^o^
</body>
</html></pre>
<p>直接请求 login.do 的话,由于未通过登入检查,所以会返回表单登入画面,登入成功的话,会 进入 success.jsp 并显示使用者的名称,登入失败的话,依"formView"的设定,会回到原来的登 入表单。
分享到:
相关推荐
springMVC3学习(六)--SimpleFormController(源码) 文章地址:http://blog.csdn.net/itmyhome1990/article/details/25988733
NULL 博文链接:https://mgz-99-163-com.iteye.com/blog/690417
NULL 博文链接:https://huihai.iteye.com/blog/1967697
Spring MVC例子 有SimpleFormController ,MultiationController等控制器的应用介绍.算是比较完整的例子大家看看吧。
Spring的web框架是围绕...你可以通过实现这个接口来生成自己的控制器(也可以称之为处理器),但是从Spring提供的一系列控制器继承会更省事,比如AbstractController、AbstractCommandController和SimpleFormController
自己写的spring表单绑定的小例子,分别使用SimpleFormController,MultiActionController,spring的form tag和validator。 还在MultiActionController里面实现了表单的绑定
3.2 版本是包含SimpleFormController的最后一个版本,这将允许更轻松的迁移路径。 现在可以选择使用SimpleFormController虽然已弃用),或者切换到@Controller 。 JDK从1.4更新到1.6,代码保持不变。为...
去几年,REST逐渐成为影响Web框架、Web协议与Web应用设计的重要概念...更进一步,如果你手头有一个Spring MVC应用,使用了控制类继承(SimpleFormController等),你可能还意识不到现在的Spring MVC对REST广泛的支持。
Spring-Validator软件包提供了一种自动生成JavaScript客户端验证代码的简单方法,并提供了SimpleFormController的通用验证器
从代理机制初探 AOP 动态代理 <br>AOP 观念与术语 Spring AOP Advices Advices 包括了Aspect 的真正逻辑,由于缝合至Targets的时机不同,Spring 提供了几种不同的 Advices。 Before ...
加密货币 一个基于Spring MVC的网络平台,用于加密货币交易和转移 框架:Spring mvc 5.2.3.RELEASE。... 用户表单提交:SimpleFormController。 IDE:面向Java开发人员的Eclipse Enterprise 2020-09(4.17.0)。
All Classes AbstractAdvisorAutoProxyCreator AbstractApplicationContext AbstractApplicationEventMulticaster AbstractAspectJAdvice AbstractAspectJAdvisorFactory AbstractAspectJAdvisorFactory....
10.5.3 表单控制器(SimpleFormController) 10.5.4 多动作控制器(MultiActionController) 10.6 Spring的视图映射机制 10.6.1 分发器(DispatcherServlet) 10.6.2 视图映射 10.7 Spring的模型(Model) 10.7.1 ...
10.5.3 表单控制器(SimpleFormController) 10.5.4 多动作控制器(MultiActionController) 10.6 Spring的视图映射机制 10.6.1 分发器(DispatcherServlet) 10.6.2 视图映射 10.7 Spring的模型(Model) 10.7.1 ...
10.5.3 表单控制器(SimpleFormController) 10.5.4 多动作控制器(MultiActionController) 10.6 Spring的视图映射机制 10.6.1 分发器(DispatcherServlet) 10.6.2 视图映射 10.7 Spring的模型(Model) 10.7.1 ...
10.5.3 表单控制器(SimpleFormController) 10.5.4 多动作控制器(MultiActionController) 10.6 Spring的视图映射机制 10.6.1 分发器(DispatcherServlet) 10.6.2 视图映射 10.7 Spring的模型(Model) 10.7.1 ...