Spring MVC 学习笔记一 HelloWorld

Spring MVC 的使用可以按照以下步骤进行(使用Eclipse):

  1. 加入JAR包
  2. 在web.xml中配置DispatcherServlet
  3. 加入Spring MVC的配置文件
  4. 编写处理请求的处理器,并添加对应注解
  5. 编写视图

下面按照国际惯例先来一个HelloWorld,在新建项目前最好是在Eclipse中安装一个名叫Spring IDE的插件,它会在你以后进行Spring相关开发中提供诸多便捷功能。新建一个Dynamic Web Project。

点击两次Next,来到向导的第三个界面上,选中红框中的复选框。这个选项是用来生成web.xml文件的,也可以在第一个界面中直接点击Finish而不生成web.xml,在Eclipse将项目文件和目录生成以后自己手动添加(能生成还是直接生成吧!费那劲干啥!:) )

项目生成以后就是下面这个样子:

下面开始Spring MVC的使用:

1、加入JAR包,需要以下JAR包:

commons-logging-1.2.jar
spring-aop-4.3.2.RELEASE.jar
spring-beans-4.3.2.RELEASE.jar
spring-context-4.3.2.RELEASE.jar
spring-core-4.3.2.RELEASE.jar
spring-expression-4.3.2.RELEASE.jar
spring-web-4.3.2.RELEASE.jar
spring-webmvc-4.3.2.RELEASE.jar

Spring Framework我使用的是4.3.2的,也可以是其他4.x版本。其中commons-logging这个包不是Spring Framework中自带的,需要自己下载,这是Spring用来做日志的。

找到以上JAR包并复制(Ctrl+C),然后到Eclipse项目中WEB-INF下的lib目录上粘贴(Ctrl+V)就导入到项目中了,导入后就是下面这个样子。

2、配置web.xml

打开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"
    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>HelloWorld</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
</web-app>

我们把DispatcherServlet的配置写在<welcome-file-list>节点之后,如果你觉得这个<welcome-file-list>节点碍眼的话删了也可以。这里在配置DispatcherServlet的时候用到了Spring IDE的辅助功能:在XML文件的编辑区内按Alt + / 在弹出的列表中选择“dispatcherservlet - DispatcherServlet declaration”,会自动插入DispatcherServlet需要的配置信息,非常方便!

当你在列表中选择“dispatcherservlet - DispatcherServlet declaration”后生成的配置信息如下(未改动前):

<?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"
    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>HelloWorld</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <!-- The front controller of this Spring Web application, responsible for handling all application requests -->
    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>location</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Map all requests to the DispatcherServlet for handling -->
    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>url</url-pattern>
    </servlet-mapping>
</web-app>

下面是修改后的实际配置

<?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"
    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>HelloWorld</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <!-- 配置DispatcherServlet -->
    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置初始化参数:配置Spring MVC配置文件的位置和名称 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-config.xml</param-value>
        </init-param>
        <!-- load-on-startup 为 1,是指当Web App被加载时DispatcherServlet就会被创建,而不是在处理第一次请求时候 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <!-- / 表示响应所有请求 -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

3、DispatcherServlet的配置写好了,但是我们还没有创建springmvc-config.xml这个配置文件,所以现在就创建它。在项目的src目录上点击右键,选择New--Other打开新建对话框,做如下选择:

生成的springmvc-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:context="http://www.springframework.org/schema/context"
    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/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">

</beans>

在继续配置之前我们先在src目录内创建一个包,这个包的名字就叫com.demo.controller(你可以取一个你认为合适的包名称!),然后继续配置springmvc-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:context="http://www.springframework.org/schema/context"
    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/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">

    <!-- 配置自动扫描的包 -->
    <context:component-scan base-package="com.demo.controller"></context:component-scan>

    <!-- 配置视图解析器 把Controller方法返回的视图解析为实际视图 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/views/"></property>
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

4、编写处理请求的处理器,并添加对应注解

现在我们创建用于响应请求的Controller,在刚才新建的包内创建HelloWorld类,IDE会生成HelloWorld.java,这个就是我们的Controller的源码文件。我们在这个文件中添加响应请求的方法并添加注解。完成后如下:

package com.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

//使用Controller注解使之成为可以响应请求的控制器
@Controller
public class HelloWorld {

    /**
     * 使用RequestMapping注解映射要响应的URL
     * 该方法的返回值会被视图解析器解析为实际物理视图
     * 通过我们配置的视图解析器(InternalResourceViewResolver)解析后的实际视图为:前缀 + returnValue + 后缀
     * 结合我们的Spring MVC配置文件中配置的前缀和后缀组合起来就是:/WEB-INF/views/welcome.jsp
     */
    @RequestMapping("/helloworld")
    public String hello() {
        //打印一句话我们将在控制台中看到,不会显示到页面上
        System.out.println("Hello World");
        return "welcome";
    }
}

有了Controller我们还需要一个视图,也就是我们在public String hello()这个方法中返回的welcome这个视图,在项目的WEB-INF目录上点右键选择New--Folder新建一个目录(我们配置的视图的前缀“/WEB-INF/views/”,是WEB-INF目录下的views目录),在这个新建的目录上点右键选择New--JSP File新建一个叫welcome的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>hello world</title>
</head>
<body>
    <h2>Hello World</h2>
</body>
</html>

需要准备的东西都差不多,现在写一个页面来测试一下我们的Hello World是否可以正常工作。在WebContent目录下新建一个JSP文件,名字随便,我这里叫index.jsp,写个超链接来访问我们在HelloWorld这个Controller里映射的URL。

<%@ 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>
    <!-- 访问我们映射的URL -->
    访问<a href="helloworld">helloworld</a>
</body>
</html>

好了,现在在这个index.jsp文件上点右键,选择Run As --- Run on Server(或者使用快捷键:Alt+Shift+X R),如果之前没有配置服务器则会出现下面第一个窗口让你先配置一个服务器,配置好以后第二次使用Run As --- Run on Server时就是下面第二个窗口的界面了,直接点Finish即可。

(我本机上安装的是Tomcat7,所以选择Tomcat v7.0 Server,如果你安装的是Tomcat6或Tomcat8请选择对应的版本)

如不出什么意外我们应该能看到下面的界面:

上面就是index.jsp页面,点击页面上的那个超链接就可以跳转到下面的页面(我们的welcome视图):

到这里我们的helloworld就完成了,这是最基础的Spring MVC的应用,能成功完成就算是有个好的开始了。

最后贴一张整个项目的目录结构

Spring MVC 学习笔记一 HelloWorld的更多相关文章

  1. Spring MVC 学习笔记(整理)

    SpringMVC学习 1.概述 Spring MVC是一种基于Java实现MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行解耦,基于请求-响应模型帮助我们 ...

  2. spring MVC学习笔记

    为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平.你的一个决定会影响团队未来的几年.要考虑方面太多: 1.简单易用,以提高开发效率.使小部分的精力在框架上,大部 ...

  3. Spring mvc 学习笔记

    记录下学习spring-mvc的技术要点,项目结构路径如下: 1. 首先要在web.xml中添加Servlet和filter的配置: <!-- 转码,防止乱码--> <filter& ...

  4. Spring MVC 学习笔记 json格式的输入和输出

    Spring mvc处理json需要使用jackson的类库,因此为支持json格式的输入输出需要先修改pom.xml增加jackson包的引用 <!-- json --> <dep ...

  5. Spring MVC学习笔记——SiteMesh的使用(转)

    转自 SiteMesh的使用 SiteMesh的介绍就不多说了,主要是用来统一页面风格,减少重复编码的. 它定义了一个过滤器,然后把页面都加上统一的头部和底部. 需要先在WEB-INF/lib下引入s ...

  6. Spring MVC学习笔记--认识SpringMVC

    Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框 ...

  7. spring mvc学习笔记一:hello world

    下面是创建springmvc简单案例的步骤: 项目的目录结构如下: 此案例使用maven构建. 第一步:创建动态web工程,然后项目->configure->convert to mave ...

  8. Spring MVC学习笔记——用户增删该查和服务器端验证

    建立一个动态web项目,起名为SpringMVC_crud 导包,其中包括jstl的一些包等 1.先写一个User.java,是用户类 文件User.java文件 package org.common ...

  9. Spring MVC学习笔记——Welcome

    参考: http://blog.csdn.net/hehexiaoyou/article/details/23747617 http://www.codingyun.com/article/47.ht ...

随机推荐

  1. 我的常用mixin 之 px

    $unit: .667px; @function px($value){ @return $unit * $value; } $unit: 1px; 时 px(1) 就是 1px 一般情况下,设计师给 ...

  2. Class 实现IDisposing方法

    public class MyResourceHog : IDisposable  {   // 已经被处理过的标记   private bool _alreadyDisposed = false;  ...

  3. JAVA基础知识之网络编程——-基于UDP协议的通信例子

    UDP是一种不可靠的协议,它在通信两端各建立一个socket,这两个socket不会建立持久的通信连接,只会单方面向对方发送数据,不检查发送结果. java中基于UDP协议的通信使用DatagramS ...

  4. BZOJ 1835 基站选址(线段树优化DP)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1835 题意:有N个村庄坐落在一条直线上,第 i(i>1)个村庄距离第1个村庄的距离 ...

  5. WPF工作笔记:本地化支持、主进程通知、两种最常用异步编程方式

    1.本地化支持 (1)重写控件默认的依赖属性LanguageProperty FrameworkElement.LanguageProperty.OverrideMetadata( typeof(Fr ...

  6. C/C++ 对常见字符串库函数的实现

    在c中的string.h头文件中存在很多对字符串进行操作的函数,利用这些函数可以方便的对字符串进行操作.下面将对常见的字符串函数进行解释和实现. strcpy 函数原型:char* _strcpy(c ...

  7. MongoDB (四) MongoDB 数据模型

    在 MongoDB 中的数据有灵活的模式.在相同集合中文档并不需要有相同的一组字段或结构的公共字段的集合,文档可容纳不同类型的数据. MongoDB设计模式的一些考虑 可根据用户要求设计架构. 合并对 ...

  8. 数往知来 ASP.NET 表单的提交_url传值_重定向 &lt;十八&gt;

    一.表单提交时注意 如果是以get方式提交数据的时候,在接收时是用QueryString方式进行接收 如果是以post请求数据时在接收时是用Form进行接收 为什么么要这样做呢?我们用Request[ ...

  9. ExtJs自学教程(1):一切从API开始

    题 记 该系列文章不侧重全方位的去介绍ExtJs的使用,只是侧重于解决ExtJs问题的思考方法.写的人不用长篇大论,学的人则能够自立更生.l  学习的人只要有一些CSS的javascript的基础知识 ...

  10. ural 1108

    大数乘法    不会java   比赛的时候各种细节RE  WA  ........ #include <cstdio> #include <cstring> #include ...