`

SpringMVC教程/实例(一):java SpringMVC之入门配置篇

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

    <?xml version="1.0" encoding="UTF-8"?>  
    <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">  
        <!-- 使用ContextLoaderListener配置时,需要告诉它Spring配置文件的位置 -->  
        <!-- 如果没有指定,上下文载入器会在/WEB-INF/applicationContext.xml中找Spring配置文件 -->  
        <!-- 我们可以通过在Servlet上下文中设置contextConfigLocation参数,来为上下文载入器指定一个或多个Spring配置文件 -->  
        <!-- 注意:contextConfigLocation参数是一个用逗号分隔的路径列表,其路径是相对于Web系统的根路径的 -->  
        <context-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>/WEB-INF/springmvc-servlet.xml, classpath:applicationContext-*.xml</param-value>  
        </context-param>  
           
        <!-- SpringMVC的前端控制器 -->  
        <!-- 当DispatcherServlet载入后,它将从一个XML文件中载入Spring的应用上下文,该XML文件的名字取决于<servlet-name> -->  
        <!-- 这里DispatcherServlet将试图从一个叫做springmvc-servlet.xml的文件中载入应用上下文,其默认位于WEB-INF目录下 -->  
        <!-- 所以ContextLoaderListener参数值也可写成<param-value>classpath:applicationContext-*.xml</param-value> -->  
        <servlet>  
            <servlet-name>springmvc</servlet-name>  
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
            <load-on-startup>1</load-on-startup>  
        </servlet>  
        <servlet-mapping>  
            <servlet-name>springmvc</servlet-name>  
            <!-- 这里*.htm并不代特定的文件,而是页面发送的请求,格式以.htm结尾,类似于*.action或*.do-->
            <url-pattern>*.htm</url-pattern>  
        </servlet-mapping>  
           
        <!-- 配置上下文载入器 -->  
        <!-- 上下文载入器载入除DispatcherServlet载入的配置文件之外的其它上下文配置文件 -->  
        <!-- 最常用的上下文载入器是一个Servlet监听器,其名称为ContextLoaderListener -->  
        <listener>  
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
        </listener>  
           
        <welcome-file-list>  
            <welcome-file>index.jsp</welcome-file>  
        </welcome-file-list>  
    </web-app>  


接下来是SpringMVC的配置文件springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:tx="http://www.springframework.org/schema/tx"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans    
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd    
    http://www.springframework.org/schema/tx      
    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">  
       
    <!-- 【配置映射处理器】 -->  
    <!-- SpringMVC自带的映射处理器均实现了Spring的Ordered接口,这意味着我们可以在应用系统中声明多个处理器映射 -->  
    <!-- 并且可以设置它们的优先级,这主要体现在order属性上,其值越小,则对应的该映射处理器的优先级越高 -->  
    <!-- 本例中,SimpleUrlHandlerMapping的order值比BeanNameUrlHandlerMapping的小 -->  
    <!-- 这意味着DispatcherServlet在映射URL的时候,首先会咨询SimpleUrlHandlerMapping -->  
    <!-- 只有在SimpleUrlHandlerMapping无法返回结果时,才咨询BeanNameUrlHandlerMapping -->  
    <bean id="beanNameUrlMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">  
        <property name="order" value="1"/>  
    </bean>  
    <bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
        <property name="order" value="0"/>  
        <property name="mappings">  
            <props>  
                <prop key="/userlist22.htm">userController</prop>  
                <prop key="/userlist33.htm">userController</prop>  
            </props>  
        </property>  
    </bean>  
  
    <!-- 这里的id="userController"对应的是<bean id="simpleUrlMapping">中的<prop>里面的value -->  
    <bean id="userController" class="com.jadyer.controller.UserController"/>  
       
    <!-- DispatcherServlet使用的默认处理器映射是BeanNameUrlHandlerMapping,它使用URL样式的名字 -->  
    <bean name="/userlist11.htm" class="com.jadyer.controller.UserController"/>  
</beans> 

然后是我们常见的Spring配置文件applicationContext-view.xml

    <?xml version="1.0" encoding="UTF-8"?>  
    <beans xmlns="http://www.springframework.org/schema/beans"  
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xmlns:tx="http://www.springframework.org/schema/tx"  
        xsi:schemaLocation="http://www.springframework.org/schema/beans    
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd    
        http://www.springframework.org/schema/tx      
        http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">  
           
        <!-- 【配置视图解析器】 -->  
        <!-- InternalResourceViewResolver会在ModelAndView返回的视图名前加上prefix指定的前缀,再在最后加上suffix指定的后缀 -->  
        <!-- 由于UserController返回的ModelAndView中的视图名是userlist,故该视图解析器将在/WEB-INF/jsp/userlist.jsp处查找视图 -->  
        <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
            <property name="prefix" value="/WEB-INF/jsp/"/>  
            <property name="suffix" value=".jsp"/>  
        </bean>  
    </beans>  


接下来是首页index.jsp

    <%@ page language="java" pageEncoding="UTF-8"%>  
    <a href="<%=request.getContextPath()%>/userlist11.htm">Visit "/userlist11.htm" to my SpringMVC demo page</a>  
    <br/>  
    <br/>  
    <a href="<%=request.getContextPath()%>/userlist22.htm">Visit "/userlist22.htm" to my SpringMVC demo page</a>  
    <br/>  
    <br/>  
    <a href="<%=request.getContextPath()%>/userlist33.htm">Visit "/userlist33.htm" to my SpringMVC demo page</a>  


下面是响应请求结果的userlist.jsp

    <%@ page language="java" pageEncoding="UTF-8"%>  
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  
    <h2>Welcome to my SpringMVC demo page</h2>  
    <c:forEach items="${users}" var="user">  
        <c:out value="${user.username}"/><br/>  
        <c:out value="${user.password}"/><br/>  
        <c:out value="${user.address}"/><br/>  
        <c:out value="${user.age}"/><br/>  
    </c:forEach>  
      
    <!--   
    以下是,处理对"/userlist.htm"的请求的整个工作步骤   
    1、DispatcherServlet接受对"/userlist.htm"样式的URL请求   
    2、DispatcherServlet询问BeanNameUrlHandlerMapping   
      询问Bean的名字是"/userlist.htm"的控制器,并且找到了UserController的Bean   
    3、DispatcherServlet分发给UserController来处理这个请求   
    4、UserController返回一个ModelAndView对象,它带有一个逻辑视图名"userlist",以及保存在"users"属性中的值   
    5、DispatcherServlet询问它的视图解析器(配置为InternalResourceViewResolver)   
      查找逻辑名为userlist的视图,InternalResourceViewResolver返回/WEB-INF/jsp/userlist.jsp路径   
    6、DispatcherServlet将请求导向/WEB-INF/jsp/userlist.jsp页面   
    -->  


这是用到的User.java
package com.jadyer.model;   
  
/**  
 * User  
 * @author 宏宇  
 * @editor Jan 27, 2012 11:41:15 AM  
 */  
public class User {   
    private String username;   
    private String password;   
    private String address;   
    private Integer age;   
       
    public String getUsername() {   
        return username;   
    }   
    public void setUsername(String username) {   
        this.username = username;   
    }   
    public String getPassword() {   
        return password;   
    }   
    public void setPassword(String password) {   
        this.password = password;   
    }   
    public String getAddress() {   
        return address;   
    }   
    public void setAddress(String address) {   
        this.address = address;   
    }   
    public Integer getAge() {   
        return age;   
    }   
    public void setAge(Integer age) {   
        this.age = age;   
    }   
} 

最后是SpringMVC的核心控制器UserController.java

    package com.jadyer.controller;   
      
    import java.util.ArrayList;   
    import java.util.List;   
      
    import javax.servlet.http.HttpServletRequest;   
    import javax.servlet.http.HttpServletResponse;   
      
    import org.springframework.web.servlet.ModelAndView;   
    import org.springframework.web.servlet.mvc.AbstractController;   
      
    import com.jadyer.model.User;   
      
    /**  
     * UserController  
     * @author 宏宇  
     * @editor Jan 27, 2012 11:57:33 AM  
     */  
    public class UserController extends AbstractController {   
        @Override  
        protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {   
            List<User> userList = new ArrayList<User>();   
            User user11 = new User();   
            User user22 = new User();   
            user11.setUsername("张起灵");   
            user11.setPassword("02200059");   
            user11.setAddress("阴山古楼");   
            user11.setAge(27);   
            user22.setUsername("吴三省");   
            user22.setPassword("95000220");   
            user22.setAddress("蛇沼鬼城");   
            user22.setAge(37);   
            userList.add(user11);   
            userList.add(user22);   
            //ModelAndView类在SpringMVC中是一个很重要的概念   
            //控制器执行方法都必须返回一个ModelAndView,ModelAndView对象保存了视图以及视图显示的模型数据   
            //第一个参数:视图组件的逻辑名称。这里视图的逻辑名称是userlist,视图解析器会使用该名称查找实际的View对象   
            //第二个参数:传递给视图的,模型对象的名称   
            //第三个参数:传递给视图的,模型对象的值   
            return new ModelAndView("userlist", "users", userList);   
        }   
    }  

分享到:
评论

相关推荐

    maven + springmvc 入门实例

    **二、SpringMVC入门** 1. **创建SpringMVC项目**: 使用Maven创建一个新的Maven项目,在`pom.xml`中添加SpringMVC相关的依赖,如`spring-webmvc`、`spring-context`、`jstl`等。 2. **配置SpringMVC**: 创建`web....

    Maven+SpringMVC的入门级HelloWorld实例

    在IT行业中,Maven和SpringMVC是两个非常重要的组件,它们分别是项目管理和Web应用程序开发的核心...通过这个入门级的HelloWorld实例,我们可以快速理解这两个工具的基本用法,为进一步深入学习和实践打下坚实的基础。

    springmvc入门实例

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。本入门实例旨在帮助开发者快速理解并掌握Spring MVC的基本概念和工作流程。 首先,Spring MVC的...

    springmvc入门实例(注解)

    本入门实例将重点介绍如何使用注解来简化Spring MVC的配置,以便快速入门。Eclipse Dynamic Web工程是开发此类应用的常见环境。 首先,我们需要创建一个Eclipse Dynamic Web项目。在Eclipse中,选择"File" -&gt; "New...

    springMVC入门实例

    在这个入门实例中,我们将深入理解SpringMVC的核心概念,以及如何通过`springmvc_demo_02`这个项目来创建一个简单的应用。 1. **SpringMVC架构** SpringMVC由几个关键组件组成:DispatcherServlet、Controller、...

    Springmvc入门实例

    下面我们将通过一个简单的入门实例来深入理解 Spring MVC 的基本概念和工作流程。 **一、项目搭建** 1. **环境准备** - Java Development Kit (JDK):确保安装了JDK并配置好环境变量。 - Maven:Spring MVC 项目...

    springmvc的入门例子

    Spring MVC 是一个强大的Java Web应用程序开发框架,是Spring框架的一部分,专门用于构建Web应用程序。它提供了模型-视图-控制器(MVC)架构,简化了处理HTTP请求、数据绑定、验证以及与后端服务交互的过程。这个...

    SpringMVC 基础教程 简单入门实例

    **SpringMVC基础教程简单入门实例** SpringMVC是Spring框架的一个模块,专门用于构建Web应用程序。它提供了模型-视图-控制器(MVC)架构,帮助开发者将业务逻辑、数据处理和用户界面分离,使得代码更加清晰和可维护...

    SpringMVC 快速入门

    在这个快速入门教程中,我们将深入理解 SpringMVC 的核心概念、配置以及如何创建一个简单的应用程序。 1. **MVC 模式** MVC 模式是一种设计模式,将应用程序分为三个主要部分:模型(Model)、视图(View)和控制...

    Spring MVC入门实例

    本篇文章将深入浅出地介绍 Spring MVC 的基本概念和入门实例。 ### 一、Spring MVC 架构 1. **模型(Model)**:负责管理应用程序的数据和业务逻辑。在 Spring MVC 中,模型通常由 Java 对象(Beans)组成,这些...

    SpringMVC入门实例

    下面,我们将深入探讨 SpringMVC 的基本概念和如何创建一个入门实例。 1. **SpringMVC 概述** - MVC 模式:Model(模型)负责业务逻辑,View(视图)负责显示结果,Controller(控制器)处理用户请求并协调模型和...

    Spring之MVC 入门实例

    **Spring MVC 入门实例详解** Spring MVC 是 Spring 框架的重要组成部分,它是一个用于构建 Web 应用程序的模型-视图-控制器(MVC)架构。本实例将帮助初学者理解如何配置和使用 Spring MVC 实现一个简单的 Web ...

    maven+springmvc简单实例demo

    【标题】"maven+springmvc简单实例demo"是一个基于Maven和Spring MVC框架的简易示例项目,旨在帮助开发者快速理解如何将这两个强大的工具结合使用来构建Java Web应用程序。Maven是Apache软件基金会开发的一个项目...

    非注解Springmvc+spring+hibernate 入门实例

    总的来说,这个入门实例旨在帮助初学者理解如何在没有使用注解的情况下,通过XML配置文件集成SpringMVC、Spring和Hibernate,完成一个简单的Web应用。虽然现在的最佳实践倾向于使用注解和Spring Boot,但理解非注解...

    springboot+springMVC+mybatis的简单入门实例1

    这个"springboot+springMVC+mybatis的简单入门实例1"为我们提供了一个整合这三个框架的基础项目,帮助开发者快速理解和上手。 首先,Spring Boot是Spring框架的扩展,它简化了创建独立的、生产级别的基于Spring的...

    SpringMVC入门实例,手把手教你搭建项目

    以上就是关于SpringMVC入门实例的基础知识,包括SpringMVC的架构、搭建步骤、核心组件以及常用注解。通过实践这些知识点,你可以快速上手SpringMVC,构建出功能完备的Web应用程序。提供的jar和项目源码可以帮助你更...

    最简单springMVC实例

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要用来处理 Web 请求。这个“最简单 Spring MVC 实例”应该是为了帮助初学者快速理解和入门 Spring MVC 的基本概念和使用方法。...

    springmvc+mybatis入门实例

    这个"springmvc+mybatis入门实例"提供了一个简单的SSM(Spring、Spring MVC、MyBatis)集成应用,旨在帮助初学者快速理解和上手这两个框架的结合。 首先,Spring MVC 框架的核心组件包括 DispatcherServlet、...

Global site tag (gtag.js) - Google Analytics