`

SpringMVC学习(2):经典的HelloWorld实现

阅读更多

前一篇简单介绍了Spring MVC的一些知识,下面就要开始学习如何把Spring MVC运用到具体的项目中去。

首先还是从一个简单的Hello World项目说起:

 

我机器的开发环境为:

Ubuntu12.04(不同操作系统对本系列项目没有影响);

开发工具:Eclipse For JavaEE;

数据库:MySql5.5.35;

运行环境:TomCat V7.0;

JDK:JDK 1.7.0_45;

项目工程为:Dynamic Web Project;

 

一、项目依赖的jar包:

1.Spring框架依赖的jar包:

日志:commons-logging-1.1.3.jar;

JSTL支持:jakarta-taglibs-standard-1.1.2中的jstl.jar和standard.jar;

2.Spring的jar包:

spring-framework-3.2.5.RELEASE/libs中的jar包(这里为了方便我直接把全部都复制过去了);

把以上的jar包全部复制到项目的WebContent/WEB-INF/lib目录中。

 

二、在/WEB-INF中添加web.xml文件,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SpringMVCLesson</display-name> 
        
    <servlet>
        <servlet-name>SpringMVCLesson</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springservlet-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup><!-- load-on-startup必须放在最后 -->
    </servlet>
    <!-- Spring MVC配置文件结束 -->
    
    <servlet-mapping>
        <servlet-name>SpringMVCLesson</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
</web-app>

 

首先是配置DispatcherServlet,根据系列(1)的Spring MVC响应流程图,可以看出DispatcherServlet主要就是拦截请求,然后调用对应的Controller和Action,解析和渲染指定的视图并返回响应 。

其中classpath:springservlet-config.xml指定具体的配置文件为springservlet-config.xml。

<load-on-startup>1</load-on-startup>是启动顺序,让这个Servlet随Servletp容器一起启动,必须放在<servlet> 配置的最后。

servlet-mapping中的<servlet-name>指定配置的是哪个servlet<url-pattern>则指定拦截哪些请求到该servlet,这里配置的是拦截全部请求

 

三、springservlet-config.xml文件配置:

在项目中新建一个resources的Source Folder文件夹,并添加springservlet-config.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:p="http://www.springframework.org/schema/p" 
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:util="http://www.springframework.org/schema/util"
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/util
  http://www.springframework.org/schema/util/spring-util.xsd
  http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context.xsd
  http://www.springframework.org/schema/mvc
  http://www.springframework.org/schema/mvc/spring-mvc.xsd" >
    
    <!-- 默认的注解映射的支持 -->  
    <mvc:annotation-driven/>
      
    <!-- 如果当前请求为“/”时,则转发到“/helloworld/index” -->
    <mvc:view-controller path="/" view-name="forward:/helloworld/index"/> 
    <!-- 静态资源映射 -->
    <mvc:resources mapping="/js/**" location="/WEB-INF/js/" />
    <mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
    <mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/" />
    <mvc:resources mapping="/plugins/**" location="/WEB-INF/plugins/" />
    <mvc:resources mapping="images/**" location="/WEB-INF/images/" />
    <!-- 当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问 -->
    <mvc:default-servlet-handler/>

    <!-- 开启controller注解支持 -->
    <!-- use-default-filters="false" 只扫描指定的注解 -->
    <context:component-scan base-package="com.demo.web.controllers" use-default-filters="false">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
      
    <!-- 视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
       <property name="contentType" value="text/html"/>        
       <property name="prefix" value="/WEB-INF/views/"/>
       <property name="suffix" value=".jsp"/>
    </bean>
    
</beans>

 

<mvc:annotation-driven/> 开启注解映射支持,它是为了简化配置的缩写形式,它相当于以下2个配置:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

由于我们在web.xml文件里面配置的是拦截所有的请求到该servlet,所以我们在这里要对静态资源文件映射作一下配置,否则请求这些资源文件会返回404

<!-- 静态资源映射 -->
<mvc:resources mapping="/js/**" location="/WEB-INF/js/" />
<mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
<mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/" />
<mvc:resources mapping="/plugins/**" location="/WEB-INF/plugins/" />
<mvc:resources mapping="images/**" location="/WEB-INF/images/" />
<!-- 当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问 -->
<mvc:default-servlet-handler/>

 

开启Controller注解支持,并配置只扫描指定包下面的Controller:

<context:component-scan base-package="com.demo.web.controllers" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

 

配置视图解析器,并指定视图所在的文件夹:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
   <property name="contentType" value="text/html"/>        
   <property name="prefix" value="/WEB-INF/views/"/>
   <property name="suffix" value=".jsp"/>
</bean>

 

添加HelloWorldController,在项目中新建一个web的Source Folder文件夹,并在文件夹下面添加com.demo.web.controllers包,在包中添加一个HelloWorldController类,类中内容如下:

package com.demo.web.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value = "/helloworld")
public class HelloWorldController {

    @RequestMapping(value="/index", method = {RequestMethod.GET})
    public ModelAndView index(){
        
        ModelAndView modelAndView = new ModelAndView();  
        modelAndView.addObject("message", "Hello World!");  
        modelAndView.setViewName("index");  
        return modelAndView;
    }
    
}

 

其中@Controller 注解把该class指定为controller,controller 上的@RequestMapping 注解的 value值指定该controller所映射的请求。

方法上的@RequestMapping 注解指定该方法为一个action,value 值指定该action所映射的请求,method 中的RequestMethod.GET指定该action只接受get请求。

ModelAndView 中的setViewName指定了该action所对应的视图名称,解析视图时会在springservlet-config.xml文件指定的视图文件夹中寻找对应的视图。

 

添加视图,在项目/WEB-INF文件夹下新建一个views文件夹,并在views中添加index.jsp视图,视图内容如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    ${message}
</body>
</html>

  

运行项目,由于我们之前配置了:<mvc:view-controller path="/" view-name="forward:/helloworld/index"/> 所以直接可以看到结果:

1

把请求的URL地址改为配置的地址:http://localhost:8080/SpringMVCLesson/helloworld/index,可以看到结果相同:

2

代码下载:http://pan.baidu.com/s/1o6LRw7o

 

http://www.cnblogs.com/liukemng/p/3725582.html

分享到:
评论

相关推荐

    SpringMVC ---- HelloWorld ---- 代码

    SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- Hello...

    Maven+SpringMVC的入门级HelloWorld实例

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

    (代码)SpringMVC第1讲:HelloWorld

    这就是SpringMVC实现"HelloWorld"的基本流程。 在后续的章节中,我们将逐步探索更复杂的功能,如处理表单数据、文件上传下载、国际化、异常处理、视图解析以及SpringMVC与其他Spring模块的集成,比如Spring ...

    SpringMVC-Helloworld

    "SpringMVC-Helloworld"示例是入门SpringMVC的常见起点,它帮助开发者理解如何配置和运行一个基本的Spring MVC应用。 在"SpringMVCLearningChapter1"中,我们可能找到了以下几个关键知识点: 1. **SpringMVC架构**...

    SpringMVC-HelloWorld_helloworld_joint2p_

    在这个"SpringMVC-HelloWorld_helloworld_joint2p_"项目中,我们主要学习了Spring MVC的基本架构,如何配置Spring MVC,编写控制器,以及如何设置视图解析。这个简单的"HelloWorld"例子是理解更复杂Spring MVC应用的...

    IDEA SpringMVC HelloWorld 实例

    对于初学者来说,使用 IDEA 创建一个简单的 SpringMVC HelloWorld 示例是一个很好的起点,能够快速熟悉这两个工具的使用。 首先,让我们了解 SpringMVC 的核心组件和工作流程: 1. **DispatcherServlet**:这是 ...

    springmvc-helloworld

    **SpringMVC 框架入门详解** ...通过 "springmvc-helloworld" 示例,你已经迈出了学习 SpringMVC 的第一步。继续深入研究,你将能熟练掌握这一强大的 Web 开发框架,为构建高效、可维护的 Java Web 应用奠定基础。

    springmvc_helloWorld

    在这个名为"springmvc_helloWorld"的项目示例中,我们将探讨如何利用Spring MVC实现一个简单的表单请求与响应。该项目旨在帮助初学者理解Spring MVC的核心概念和工作流程。 1. **Spring MVC 框架介绍** Spring MVC...

    SpringMVC入门很简单之HelloWorld

    在"SpringMVC入门很简单之HelloWorld"这个主题中,我们将探讨如何设置一个基本的SpringMVC项目并实现简单的"Hello, World!"展示。 首先,项目结构至关重要。在给定的文件名称列表中,我们看到了几个关键目录: 1. ...

    SpringMVC-1 概述与HelloWorld实现

    SpringMVC的具体实现步骤:加入Spring所依赖的jar包、在web.xml文件中配置DispatcherServlet、加入SpringMVC的配置文件,并配置视图解析器、创建请求处理器类和处理器,并标识为处理器、编写视图页面……

    springmvc注解版 helloworld

    在这个"springmvc注解版 helloworld"项目中,我们将深入探讨如何使用注解来配置和实现一个简单的Hello World应用。这个项目特别适合初学者入门,因为每个步骤都有详细的注释,确保你能理解每一行代码的作用。 首先...

    springmvc版HelloWorld

    这是关于springmvc版的HelloWorld,主要是呈现了spirngmvc处理请求的过程

    springmvc-maven-webapp-helloworld 源码

    【标题】"SpringMVC Maven Webapp HelloWorld 源码解析" 在Web开发领域,SpringMVC是一个广泛应用的Java框架,用于构建可扩展且模块化的Web应用程序。它作为Spring框架的一部分,提供了处理HTTP请求、视图渲染以及...

    springMVC+spring+dubbo hello world测试项目

    在这个"springMVC+spring+dubbo hello world测试项目"中,我们可以期待看到以下主要目录和文件: 1. `src/main/java`:包含项目的源代码,可能有如com.example.demo包,下设Service、Controller和配置类等。 2. `...

    springmvc项目helloworld

    通过这个简单的"springmvc项目helloworld",我们可以学习到Spring MVC的基础架构和工作流程,这将为进一步深入学习和开发复杂的Spring MVC应用打下坚实基础。在实际项目中,你可以逐步添加更多的控制器、模型、视图...

    SpringMVC HelloWorld

    在这个“SpringMVC HelloWorld”项目中,我们将学习如何设置一个基本的Spring MVC环境并实现一个简单的“Hello, World!”示例。 1. **环境搭建** - **Spring Framework**: 首先,你需要下载Spring框架的核心库,...

    springmvc入门helloworld

    在"springmvc入门helloworld"这个主题中,我们将探讨如何从零开始搭建一个简单的Spring MVC项目,展示其基本工作流程和关键组件。以下是详细的知识点讲解: 1. **Spring MVC 概述** - Spring MVC 是Spring框架的一...

    SpringMVC_HelloWorld:SpringMVC的一个hello world的demo,开启学习SpringMVC的大门

    SpringMVC_HelloWorld SpringMVC的一个hello world的demo,开启学习SpringMVC的大门。 SpringMVC 框架提供了一个DispatchServlet作为前端控制器来分派请求,同时提供灵活的配置处理程序映射,视图解析,语言环境和...

    SpringMVC3.1.2 入门级HelloWorld源码

    (maven查看的dependency) [INFO] SpringStart:SpringStart:war:V1.0.0 [INFO] +- log4j:log4j:jar:1.2.17:compile [INFO] +- org.apache.openejb:javaee-api:jar:5.0-1:provided [INFO] +- javax.faces:jsf-api:jar:...

    SpringMVC 3.0 HelloWorld 源码 (Maven)

    通过这个“SpringMVC 3.0 HelloWorld”项目,我们可以学习到Spring MVC的基础知识,包括Controller的创建、请求映射、依赖注入以及Maven的项目构建。这是一个很好的起点,帮助开发者进一步理解Spring MVC框架,以及...

Global site tag (gtag.js) - Google Analytics