您的位置:首页 > 编程语言 > Java开发

SpringMVC入门实例及详细讲解

2014-02-12 16:38 471 查看
spring+mvc的开发是现在web前端开发较为流行的开发方式。spring+hibernate开发web应用。

 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>  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring+mvc