阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

何用Eclipse搭建SpringMVC最小系统详解

409次阅读
没有评论

共计 8938 个字符,预计需要花费 23 分钟才能阅读完成。

前言

做 Java Web 开发的你,一定听说过 SpringMVC 的大名,作为现在运用最广泛的 Java 框架,它到目前为止依然保持着强大的活力和广泛的用户群。

本文介绍如何用 Eclipse 一步一步搭建 SpringMVC 的最小系统,所谓最小系统,就是足以使项目在 SpringMVC 框架下成功跑起来,并且能够做一些简单的事情(比如访问页面)的系统。

话不多说,让我们开始吧。所有的源代码和 jar 包都会在最后给出。

其他环境:
操作系统:Windos 10
Tomcat:v7.0
JDK : 1.7

源码已经上传,下载地址:

Linux 公社资源站下载:

—————————————— 分割线 ——————————————

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是 www.linuxidc.com

具体下载目录在 /2016 年资料 / 9 月 / 3 日 / 何用 Eclipse 搭建 SpringMVC 最小系统详解 /

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

—————————————— 分割线 ——————————————

正文

1. 新建一个项目

Paste_Image.png

我们用 eclipse 新建项目,选择 Dynamic Web Project(动态的 Web 项目)。

点击 Next

Paste_Image.png

Project name 里面写上 springmvc,这就是我们项目的名称,其他不用改,直接点击 Finish。

Paste_Image.png

OK,项目就建好了。

接下来一定要将项目的字符集改为 UTF-8

右键项目——properties

Paste_Image.png

改为 UTF-8,点击 OK。

2. 编写 web.xml

当我们打开 WebContent/WEB-INF 目录的时候,发现里面只有一个 lib 目录,这是存放各种 jar 包的地方。我们知道一个 web 项目必须要有一个 web.xml 文件才行。

既然没有,我们自己写一个咯。

右键 WEB-INF——new——file,新建一个 web.xml 文件。

点击 Finish

将以下内容填进去即可。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
            xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
            id="WebApp_ID">

<!-- 这是项目的名称 -->
<display-name>springmvc</display-name>


</web-app>

这样就完成了基本的配置,我的意思是说,现在这个项目就已经是一个标准的 web 项目了。

3. 验证 web 项目是否搭建成功

为了验证到目前为止的正确性,我们在 WebContent 目录下面新建一个 jsp 文件。

名字就叫 index.jsp

Paste_Image.png

内容如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
    <head>
        <meta charset="UTF-8" />
    </head>
    <body>
        恭喜,web 項目已經成功搭建!</body>
</html>

我们现在就将这个项目部署到 Tomcat, 来验证是否可以跑起来。

在项目上右键——Debug As——Debug on Server

直接点击 Finish

经过一段时间,控制台开始打印日志信息,当我们看到这些信息的时候,说明 Tomcat 已经启动完毕了。

Paste_Image.png

让我们打开浏览器,在地址栏输入以下信息

http://localhost:8088/springmvc/index.jsp

我电脑上 Tomcat 配置的端口号是 8088,具体情况视你自己的 Tomcat 决定,可能是 8080 等。

Paste_Image.png

可见,能够成功访问页面了,这说明我们到目前为止的操作是正确的。

3. 集成 SpringMVC

我们在 web.xml 文件里面添加下面的配置
3.1 配置监听器

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<listener>
    <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>

3.2 配置过滤器,解决 POST 乱码问题

<filter>
    <filter-name>encoding</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

3.3 配置 SpringMVC 分发器,拦截所有请求

<servlet>
     <servlet-name>springmvc</servlet-name>
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     <init-param>
         <param-name>namespace</param-name>
         <param-value>dispatcher-servlet</param-value>
     </init-param>
</servlet>

<servlet-mapping>
     <servlet-name>springmvc</servlet-name>
     <url-pattern>/</url-pattern>
 </servlet-mapping>

在这个配置中,我们规定了 DispatcherServlet 的关联 XML 文件名称叫做 dispatcher-servlet

注意,这里的路径是相对于 web.xml 来说的,也就是说,这个文件也在 WEB-INF 的根目录下。

所以,我们需要在 WEB-INF 的根目录下新建一个 dispatcher-servlet.xml 文件。

Paste_Image.png

至此,web.xml 文件的编写就告一段落了。

3.4 编写 dispatcher-servlet.xml
dispatcher-servlet.xml 的作用就是配置 SpringMVC 分发器。

配置如下:

<?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-3.0.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/util 
       http://www.springframework.org/schema/util/spring-util-3.0.xsd 
       http://www.springframework.org/schema/mvc 
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
      ">

         <!-- 开启注解模式驱动 -->    
         <mvc:annotation-driven></mvc:annotation-driven>
         <!-- 扫包 -->
         <context:component-scan base-package="com.springmvc.*"></context:component-scan>
         <!-- 静态资源过滤 -->
         <mvc:resources location="/resources/" mapping="/resources/**"/>


         <!-- 视图渲染 jsp/freemaker/velocity-->
         <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
               <!-- 制定页面存放的路径 -->
               <property name="prefix" value="/WEB-INF/pages"></property>
               <!-- 文件的后缀 -->
               <property name="suffix" value=".jsp"></property>
         </bean> 

</beans>

根据配置,有三个需要注意的地方。

  1. 它会扫描 com.springmvc 包下所有的 Java 类,但凡是遇到有注解的,比如 @Controller,@Service,@Autowired,就会将它们加入到 Spring 的 bean 工厂里面去。

  2. 所有的静态资源文件,比如说 js,css,images 都需要放在 /resources 目录下,这个目录现在我们还没有建。

  3. 所有的展示页面,比如 jsp 文件,都需要放置在 /WEB-INF/pages 目录下,这个目录现在我们也没有建。

OK,我们把对应的目录加上。

首先是 Java 文件的目录。

Paste_Image.png

我们在这个地方右键,新建一个 com 包, 再在里面建一个 springmvc 包,或者用 . 的方式一起建。

Paste_Image.png

点击 Finish

Paste_Image.png

根据 SpringMVC 的分层,我们在 springmvc 包下面建三个包,分别是 controller,service,dao

Paste_Image.png

这样的话,当我们项目一旦启动,springmvc 就会扫描这三个包,将里面但凡是有注解的类都提取起来,放进 Spring 容器(或者说 Spring 的 bean 工厂),借由 Spring 容器来统一管理。这也就是你从来没有去 new 一个 Controller 的原因。

接下来,我们来建静态资源的目录。

在 WebContent 目录下新建一个 resources 文件夹。

然后顺便把 js,css,img 的文件夹都建一下,这里就存放我们的静态资源文件。

Paste_Image.png

最后,我们在 WEB-INF 目录下建一个 pages 文件夹,作为展示页面的存放目录。

Paste_Image.png

将之前的 index.jsp 拷贝进来。

Paste_Image.png

这样就配置的差不多了。

5. 导包和验证

我们将 jar 包放到 lib 目录:

Paste_Image.png

然后启动项目,验证一下到目前为止的构建是否正确。

打开 Servers 视图,点击如图像是甲虫一样的图标。

Paste_Image.png

发现报错了,错误信息如下:

Paste_Image.png

错误:
Could not open ServletContext resource [/WEB-INF/applicationContext.xml]

它说我们在 WEB-INF 下面少了一个 applicationContext.xml 这个文件,原来,我们少了对 SpringBean 工厂的配置,它的意思就是说,我们要规定一下,在 Spring 容器启动的时候,需要自动加载哪些东西?

于是,我们把 applicationContext.xml 加上。

Paste_Image.png
<?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:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans   
  http://www.springframework.org/schema/beans/spring-beans.xsd  
  http://www.springframework.org/schema/aop   
  http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
  http://www.springframework.org/schema/tx   
  http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
  http://www.springframework.org/schema/context   
  http://www.springframework.org/schema/context/spring-context-4.0.xsd
  http://www.springframework.org/schema/util   
  http://www.springframework.org/schema/util/spring-util-4.0.xsd
  ">

</beans>

里面我们啥也不配置,再次启动 Tomcat。

Paste_Image.png

这回不报错了。

5. 配置 ViewController

我们知道,WEB-INF 目录下的任何资源都是无法直接通过浏览器的 url 地址去访问的,保证了安全性。这也是我们为什么把页面都放在该目录下的原因。

为了有所区分,我们还单独建立了一个 pages 文件夹,将这些页面保存起来。

Paste_Image.png

现在,为了访问这个页面,我们需要用到 SpringMVC 的页面跳转机制。

我们在 Controller 包下新建一个 ViewController

Paste_Image.png

点击 Finish

Paste_Image.png

ViewController 代码:

package com.springmvc.controller;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class ViewController {@RequestMapping("/view")
    public ModelAndView view(HttpServletRequest request){String path = request.getParameter("path") + "";
        ModelAndView mav = new ModelAndView();
        mav.setViewName(path);
        return mav;
    }
}

我只需要将想要访问的页面放在 path 里面,通过 url 传进来就行了。

因为添加了 java 类,因此我们重新启动 Tomcat。

启动完成后,在地址栏输入:
http://localhost:8088/springmvc/view?path=index

结果:

Paste_Image.png

没关系,我们看他报什么错。

message /springmvc/WEB-INF/pagesindex.jsp

pagesindex.jsp 是什么鬼??

原来,在 dispatcher-servlet.xml 中,我们少写了一个 “/”

Paste_Image.png

添上去就行了。

Paste_Image.png

保存后,因为修改了 XML 配置文件,因此我们还是需要重新启动 Tomcat。

启动完成后,继续!

Paste_Image.png

成功了。

6. 引入静态资源

比如,我在 resources/img 目录下放了一张图片,怎么引入到 index.jsp 呢?

Paste_Image.png
background : url(http://localhost:8088/springmvc/resources/img/bg.jpg);
background-size : 100% 100%;

的确,这是一种方式。可是,它有一个缺点就是根路径写死了,我们肯定不希望这样的��

其实,我们可以在 viewController 里面拿到项目根路径,然后传递到 jsp 页面就 OK 了。

Paste_Image.png

我们把调试信息“恭喜,web 項目已經成功搭建!”删掉。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
    <head>
        <meta charset="UTF-8" />
    </head>

    <style>
        body {background : url(${contextPath}/resources/img/bg.jpg);
            background-size : 100% 100%;
        }
    </style>
    <body>

    </body>
</html>

${contextPath} 可以取到 Controller 传过来的 contextPath 值。

Paste_Image.png

成功了!

Spring 学习之第一个 Spring MVC 程序(IDEA 开发环境)http://www.linuxidc.com/Linux/2016-06/132658.htm

SpringMVC 总结篇  http://www.linuxidc.com/Linux/2016-06/132659.htm

Spring+SpringMVC 企业快速开发架构搭建  http://www.linuxidc.com/Linux/2015-09/122942.htm

SpringMVC 的乱码处理  http://www.linuxidc.com/Linux/2015-07/120542.htm

Spring MVC+Spring3+Hibernate4 开发环境搭建 http://www.linuxidc.com/Linux/2013-07/87119.htm 

Spring MVC 整合 Freemarker 基于注解方式 http://www.linuxidc.com/Linux/2013-02/79660.htm 

基于注解的 Spring MVC 简单介绍 http://www.linuxidc.com/Linux/2012-02/54896.htm

SpringMVC 详细示例实战教程 http://www.linuxidc.com/Linux/2015-06/118461.htm

Spring MVC 框架搭建及详解 http://www.linuxidc.com/Linux/2012-01/52740.htm

SpringMVC 异常处理  http://www.linuxidc.com/Linux/2015-06/119049.htm

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-09/134872.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计8938字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7985344
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...