Spring 的 Web MVC 框架是围绕 DispatcherServlet 设计的,它把请求分派给处理程序,同时带有可配置的处理程序映射、视图解析、本地语言、主题解析以及上载文件支持。默认的处理程序是非常简单的 Controller 接口,只有一个方法 ModelAndView handleRequest(request, response)。Spring 提供了一个控制器层次结构,可以派生子类。如果应用程序需要处理用户输入表单,那么可以继承 AbstractFormController。如果需要把多页输入处理到一个表单,那么可以继承 AbstractWizardFormController。
Spring MVC对于现在较成熟的Model-View-Control框架而言,其解决的主要问题无外乎下面几部分:
1》将web页面中的输入元素封装为一个(请求)数据对象。
2》根据请求的不同,调度相应的逻辑处理单元,并将(请求)数据对象作为参数传入。
3》逻辑处理单元完成运算后,返回一个结果数据对象。
4》将结果数据对象中的数据与预先设计的表现层相融合并展现给用户。
开发步骤:
首先新建web Project项目:MySpringMvc
1.加载项目所需要的jar包;
spring.jar -------------------------这个在spring2.5.6资源包的dist下面
spring-webmvc.jar---------------这个在spring2.5.6资源包的dist/module下面
2.配置web.xml文件
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
2.由于上面的初始化参数中没有指定名字的XML文件,因此在WEB-INF下面建立
dispatcher-servlet.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
3.建立JSP文件
form.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib prefix="spring"
uri="http://www.springframework.org/tags"%>
<%@taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core"%>
content="text/html; charset=UTF-8">
登入表单
${status.errorMessage}
请输入使用者名称与密码:
注意:输入错误会再回到这个页面中。
4.建立jsp文件
success.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="GBK"%>
哈啰! ${welcomeuser}!!
这是您的神秘礼物!^o^退出登录
5.建立一个java bean LoginForm.java
package zz.it.beans;
public class LoginForm {
private String userName;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
6.建立controller LoginController.java
package zz.it.controller;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import zz.it.beans.LoginForm;
public class LoginController extends SimpleFormController {
/**
* 构造方法
*/
public LoginController() {
// TODO Auto-generated constructor stub
//setCommandClass(LoginForm.class);
//这句话要是不写的话,那么在dd-servlet.xml中的loginController里面配置上如下:
//
//
//
//这样效果也是一样的
}
public ModelAndView onSubmit(Object cmd, BindException errors) {
LoginForm loginForm = (LoginForm) cmd;
if (loginForm.getUserName().equals("test")
&& loginForm.getPassword().equals("test")) {
return new ModelAndView(getSuccessView(), "welcomeuser", loginForm
.getUserName());
} else {
errors.reject("ccc", "用户名或密码有误!");
errors.rejectValue("userName", "nameErr", null, "用户名错误");
errors.rejectValue("password", "passErr", null, "密码错误");
return new ModelAndView(getFormView(), errors.getModel());
}
}
}