spring MVC

Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
  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文件

<?xml version="1.0" encoding="UTF-8"?>
Xml代码  收藏代码

    <span style="font-size: large;"><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
        <servlet> 
            <servlet-name>dd</servlet-name> 
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
            <!--     <init-param>--> 
            <!--         <param-name>contextConfigLocation</param-name>--> 
            <!--         <param-value>/WEB-INF/applicationContext.xml</param-value>--> 
            <!--             </init-param>--> 
        </servlet> 
        <!-- 
            applicationContext.xml文件代表示应用程序服务的配置和 bean 配置。如果想装入多个配置文件,可以在 
            <param-value>标记中用逗号作分隔符。 
            springmvc配置文件与spring配置的servlet名称有关[如本配置中是dd] 
            通常springmvc配置文件名称结构为:[servlet-name]-servlet.xml, 
            如果你没有指定init-param里面contextCofigLocation的值中对应的XML文件的话 
            (也就是applicationContext全局配置文件没有配置在web.xml中的话),那么像本 
            段代码对应在springmvc中的配置文件就应该是/WEB-INF/dipatcher-servlet.xml这样的文件, 
            否则如果配置了applicaitonContext.xml这样的spring全局配置文件,如本配置那么就必须为/WEB-INF/dd-servlet.xml 
        --> 
        <servlet-mapping> 
            <servlet-name>dd</servlet-name> 
            <url-pattern>*.do</url-pattern> 
        </servlet-mapping> 
    </web-app></span> 





2.由于上面的初始化参数中没有指定名字的XML文件,因此在WEB-INF下面建立

  dispatcher-servlet.xml
Xml代码  收藏代码

    <span style="font-size: medium;"><span style="font-size: large;"><?xml version="1.0" encoding="UTF-8"?> 
    <!--看到下面的beans这个元素标签没有,必须有标签的声明--> 
    <beans 
        xmlns="http://www.springframework.org/schema/beans" 
        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"> 
     
    <!-- URL Mapping --> 
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
        <property name="mappings"> 
            <props> 
                <prop key="/regAction.do">regAction</prop> 
            </props> 
        </property> 
    </bean> 
     
    <!-- definition of View Resolver --> 
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
        <property name="viewClass"> 
            <value>org.springframework.web.servlet.view.JstlView</value> 
        </property> 
        <property name="prefix"> 
            <value>/view/</value> 
        </property> 
        <property name="suffix"> 
            <value>.jsp</value> 
        </property> 
    </bean> 
    <!-- formController ,这个formController可以配置也可以不配置--> 
     <bean id="formController" 
     class="org.springframework.web.servlet.mvc.ParameterizableViewController"> 
      <property name="viewName"> 
       <value>form</value> 
      </property> 
     </bean> 
     
    <!-- Action Definition --> 
    <bean id="regAction" class="org.lee.springmvc.demo.RegAction"> 
    <!--在MySpringMvc这个项目中就没有配置这个commandClass, 
    因为它提前调用了setCommandClass(LoginForm.class)这个方法;这样跟下面效果一样 
    不过还是建议配成下面这样的更好 
    --> 
        <property name="commandClass"> 
            <value>org.lee.springmvc.demo.RegInfo</value> 
        </property> 
        <property name="error_view"> 
            <value>error</value> 
        </property> 
        <property name="success_view"> 
            <value>success</value> 
        </property> 
        <property name="commandName"> 
            <value>myCommand</value> 
        </property> 
    </bean> 
    </beans></span></span> 

 

3.建立JSP文件

form.jsp
Html代码  收藏代码

    <span style="font-size: medium;"><span style="font-size: large;"><%@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"%> 
    <html> 
        <head> 
            <meta http-equiv="Content-Type"  
                  content="text/html; charset=UTF-8"> 
            <title>Login Form</title> 
        </head> 
        <body> 
        <h1>登入表单</h1> 
        <spring:bind path="command.*">  
            <font color="red"> 
                <b>${status.errorMessage}</b> 
            </font><br>  
        </spring:bind>  
         
        请输入使用者名称与密码:<p>  
        <form name="loginform" action="login.do" method="post">  
         
            <spring:bind path="command.userName">  
            名称 <input type="text" name="${status.expression}" value="${status.value}"/> 
                <font color="red"><c:out value="${status.errorMessage}" /></font><br/> 
             
            </spring:bind>  
         
            <spring:bind path="command.password">  
            密码 <input type="password" name="${status.expression}" value="${status.value}"/> 
             <font color="red"><c:out value="${status.errorMessage}" /></font><br/> 
            </spring:bind>  
         
            <input type="submit" value="确定"/>  
        </form>  
        注意:输入错误会再回到这个页面中。       
        </body> 
    </html></span></span> 



4.建立jsp文件
success.jsp
Html代码  收藏代码

    <span style="font-size: medium;"><span style="font-size: large;"><%@page contentType="text/html"%> 
    <%@page pageEncoding="GBK"%> 
     
    <html> 
        <head> 
            <meta http-equiv="Content-Type" content="text/html; charset=GBK"> 
            <title>登入成功</title> 
        </head> 
        <body> 
            <H1>哈啰! ${welcomeuser}!!</H1>  
            这是您的神秘礼物!^o^<a href="login.do">退出登录</a> 
        </body> 
    </html></span></span> 

5.建立一个java bean LoginForm.java
Java代码  收藏代码

    <span style="font-size: medium;"><span style="font-size: large;">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; 
        } 
     
         
    } 
    </span></span> 



6.建立controller LoginController.java
Java代码  收藏代码

    <span style="font-size: medium;"><span style="font-size: large;">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里面配置上如下: 
            // <property name="commandClass"> 
            //<value>zz.it.beans.LoginForm</value> 
            //</property> 
            //这样效果也是一样的 
        } 
     
        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()); 
            } 
        } 
    } 
    </span></span> 



7.最后,整合部署,访问http://localhost:1234/MySpringMvc/login.do 

你可能感兴趣的:(spring,框架,mvc)