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 学习笔记1 - First Helloworld by Eclipse【&amp; - java web 开发Tips集锦】

    Spring MVC 学习笔记1 - First Helloworld by Eclipse reference:http://www.gontu.org 1. 下载 Spring freamwork ...

  2. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

  3. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  4. Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息

    </pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...

  5. Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息

    Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...

  6. Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录

    Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...

  7. Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目

    Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目 Spring Tool Suite 是一个带有全套的Spring相关支持功能的Eclipse插件包. ...

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

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

  9. spring MVC学习笔记

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

随机推荐

  1. Java之HashMap在多线程情况下导致死循环的问题

    PS:不得不说Java编程思想这本书是真心强大.. 学习内容: 1.HashMap<K,V>在多线程的情况下出现的死循环现象   当初学Java的时候只是知道HashMap<K,V& ...

  2. emacs 新手笔记(四) —— 使用 dired 完成一些简单的文件和目录操作

    ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 据说熟悉了 dired,就可以在 emacs 下轻松管理文件和目录了,甚至不再需要 shell 和桌面操作. ...

  3. python xml包使用记录

    <?xml version="1.0" encoding="utf-8" ?> <request> <functionID> ...

  4. HDU 3333 Turing Tree (树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3333 题意就是询问区间不同数字的和. 比较经典的树状数组应用. //#pragma comment(l ...

  5. 《Java并发编程实战》第十五章 原子变量与非堵塞同步机制 读书笔记

    一.锁的劣势 锁定后假设未释放.再次请求锁时会造成堵塞.多线程调度通常遇到堵塞会进行上下文切换,造成很多其它的开销. 在挂起与恢复线程等过程中存在着非常大的开销,而且通常存在着较长时间的中断. 锁可能 ...

  6. Linux vsftpd服务配置具体解释

    [背景] 近日.一朋友dominoserver要进行升级.迁移,搭建了linux測试系统,也开启vsftpd服务,但是配置的ftp账号,程序无法正常下载附件. [问题跟踪] 通过ftpclient连接 ...

  7. android MultiDex multidex原理原理下遇见的N个深坑(二)

    android MultiDex 原理下遇见的N个深坑(二) 这是在一个论坛看到的问题,其实你不知道MultiDex到底有多坑. 不了解的可以先看上篇文章:android MultiDex multi ...

  8. hive小文件合并设置参数

    Hive的后端存储是HDFS,它对大文件的处理是非常高效的,如果合理配置文件系统的块大小,NameNode可以支持很大的数据量.但是在数据仓库中,越是上层的表其汇总程度就越高,数据量也就越小.而且这些 ...

  9. Git merge 不同的branch

    Git的优势是可以创建不同的branch,然后在每个branch上开发.那么问题是:如果不同的branch之间需要做同步,比如sourceBranch上做的修改也需要同步到targetBranch,改 ...

  10. Linux : Vim 使用与配置 (附 GitHub 自动化配置脚本)

    由于经常使用 vim 编辑配置文件,有时候也会进行使用vim 编写一些脚本和c/c++ 程序,所以配置一个常用的 vim 是很是必要的.这篇博文主要是记录vim使用和配置相关的一些知识点. 关于vim ...