【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境

文章目录

    • 基础SpringMVC环境搭建
      • 1.准备工作
      • 2.下载 Spring 框架
      • 3.下载Common-Logging包
      • 4.新建动态网站
      • 5.Spring MVC 的配置
      • 6.控制器代码实现
      • 7.JSP 代码实现
      • 8.启动 TomCat 服务器
      • 7.访问项目页面
      • 8.如果遇到 404 错误
      • 附:基于注解的配置

基础SpringMVC环境搭建

1.准备工作

  • Eclipse IDE
  • JDK 1.8
  • Tomcat 7.0

2.下载 Spring 框架

  • 下载地址: https://repo.spring.io/libs-release-local/org/springframework/spring/
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第1张图片
    这里可以选择需要的版本。本文以当前最新版 5.1.7 为例。点击进入。
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第2张图片
    点击 spring-framework-5.1.7.RELEASE-dist.zip 下载 dist 文件包。
    下载完成后,解压,该文件夹下包含:
    • libs:Spring框架的class文件的jar包、Spring框架源文件包、Spring框架API文档包
    • schemas:Spring框架配置文件的XML Schemas 文档包
    • readme:Spring框架说明文档等。

3.下载Common-Logging包

  • 下载地址:http://commons.apache.org/proper/commons-logging/download_logging.cgi
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第3张图片
    同样以当前最新版为例。点击下载 commons-logging-1.2-bin.zip 并解压。

4.新建动态网站

  • 打开 Eclipse 工具。file —> new —> Dynamic Web Project
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第4张图片
  • 输入项目名称。点击 next。注意:先不要着急点 finish。
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第5张图片
  • 新项目暂时只配置一个 src 目录足够,所以再次点击 next
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第6张图片
  • 勾选 Generate web.xml deployment descriptor。然后点击 Finish
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第7张图片
  • 新建完成后,基本结构如下。
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第8张图片
  • 然后,将第 2 步中,解压后文件夹中 libs 子文件夹下的所有 jar 包 Copy 到 Spring 项目目录下的 WebContent/WEB-INF/lib 文件夹下。
  • 将第 3 步中解压后的文件夹中 commons-logging-1.2.jar 文件也 Copy 到 Spring 项目目录下的 WebContent/WEB-INF/lib 文件夹下。

【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第9张图片

5.Spring MVC 的配置

这里先演示Spring MVC 的基本配置。
如果想直接使用基于注解的配置。点击跳转到 附:基于注解的配置

  • 修改 WebContent/WEB-INF/web.xml 配置文件,配置信息如下:

<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>HRManagedisplay-name>
	<welcome-file-list>
		<welcome-file>index.htmlwelcome-file>
		<welcome-file>index.htmwelcome-file>
		<welcome-file>index.jspwelcome-file>
		<welcome-file>default.htmlwelcome-file>
		<welcome-file>default.htmwelcome-file>
		<welcome-file>default.jspwelcome-file>
	welcome-file-list>
	
	
	<servlet>
		
		<servlet-name>springmvcservlet-name>
		
		<servlet-class>
			org.springframework.web.servlet.DispatcherServlet
		servlet-class>
		
		<init-param>
			
			<param-name>contextConfigLocationparam-name>
			
			<param-value>/WEB-INF/springmvc-config.xmlparam-value>
		init-param>
		
		<load-on-startup>1load-on-startup>
	servlet>
	
	<servlet-mapping>
		
		<servlet-name>springmvcservlet-name>
		
		<url-pattern>/url-pattern>
	servlet-mapping>
web-app>

以上是 DispatcherServlet 的标准配置。Servlet 在 Web 启动时立即加载。 DispatcherServlet 加载时会默认去 WEB-INF 目录下查找对应的名称为 " servlet 名称 - servlet.xml " 的配置文件。SpringMVC 的配置文件 springmvc-config.xml 可以在任意指定目录去建立。只需要在上述配置文件的 param-value 中配置即可,但建议放在 WEB-INF 的根目录下。

如果遇到 WEB-INF 目录下没有 web.xml 文件的情况。你可能需要回忆一下第 4 步中最后一个步骤是否勾选了 Generate web.xml deployment descriptor 选项。如果忘记勾选,也可以手动建立 web.xml 文档。

  • 配置 spring-mvc-config.xml 。如果没有该文件,可以再 WEB-INF 文件夹上右键,新建 xml 文档,命名为 spring-mvc-config.xml 即可。配置信息如下:

<beans  xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<bean name="/hello" class="com.foxconn.controller.HelloSpringController" />
	
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
	
	<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
	
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />
beans>

6.控制器代码实现

以上,SpringMVC 的环境搭建已经完成。接下来,试着写一个 Demo 测试一下。

  • 在 Java Resource 的 src 目录下,先创建包和 一个 HelloSpringController 类。
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第10张图片
  • HelloSpringController 类需要实现 Controller 接口并实现其方法
package com.foxconn.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class HelloSpringController implements Controller{

	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception{
		//创建准备返回的 ModelAndView 对象
		ModelAndView mv = new ModelAndView();
		//添加数据模型,可以是任意POJO
		mv.addObject("message", "Hello SpringMVC");
		//设置视图名。视图解析器会根据该完全路径解析具体视图
		mv.setViewName("/WEB-INF/test/demo.jsp");
		//返回 ModelAndView 对象
		return mv;
	}
}
  • 有些朋友可能会在这一步碰到以下问题
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第11张图片
    HttpServletRequest 和 HttpServletResponse 无法解析。
    这两个类是位于 javax.servlet.http 包下的。
    需要 import javax.servlet.http.HttpServletRequest 和 javax.servlet.http.HttpServletResponse。
    但是为什么 Eclipse 没有提示呢?
    这是因为,我们没有将 Tomcat 添加到运行环境中。

  • 添加 Tomcat 到运行环境
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第12张图片
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第13张图片

  • 然后就可以正常导入 javax.servlet.http 包
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第14张图片

7.JSP 代码实现

  • 在 WEB-INF/test 目录下新建 demo.jsp 文件
    这个路径是第 6 步写在 HelloSpringController 文件中 mv 对象的 setViewName 方法指定的。
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<html>
<head>
<meta charset="UTF-8">
<title>Hello SpringMVCtitle>
head>
<body>
	<h1>Hello SpringMVCh1>
	
	
	<h2>${requestScope.message }h2>
body>
html>

【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第15张图片

8.启动 TomCat 服务器

  • 右击项目名称,依次选择 Run As —> Other —> Run on Server
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第16张图片
  • 启动成功
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第17张图片

7.访问项目页面

  • 在浏览器中输入 http://localhost:8080/hello
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第18张图片

8.如果遇到 404 错误

404 是网站开发中最常见的错误之一:即找不到资源,如果遇到该错误,请依次检查以下几点

  • web.xml 配置文件。web.xml 如果是自动生成,一般会有 welcome-file-list 标签,其中包含的是网站默认查找的网页名,即如果URL中只输入了项目名,如:http://localhost:8080/HelloSpring 时,会默认查找名称在该标签下的文件。另外,需要检查 serservlet 标签下 init-param 标签中 param-value 的值,路径是否与 springmvc-config.xml 配置文件匹配,即该配置文件是否起作用。
  • springmvc-config.xml 配置文件。handle 映射配置是否正确,其中 name 值为 url 中需要输入的映射请求,class 的值为 Controller 所在的完整路径。如上例中 name 的值为 /hello,class 的值为 com.foxconn.controller.HelloSpringController。就意为着当 URL 为 http://localhost:8080/HelloSpring/hello 时,会映射到 com.foxconn.controller.HelloSpringController 控制器下。
  • HelloSpringController。检查 HelloSpringController 中 handleRequest 方法是否设置解析视图。即 ModelAndView 对象的 setViewName 是否设置。
  • 页面。检查上一步中 ModelAndView 对象的 setViewName 的值与实际想要展示的页面所在的完整路径是否相同。如上例中 setViewName 的值为 /WEB-INF/test/demo.jsp。那么在项目的 WEB-INF 目录下,就需要存在 test 文件夹以及其里面的 demo.jsp 文件。

附:基于注解的配置

注解 是SpringMVC的一大特色。使用注解可以省去很多繁琐的配置。

  • 返回第 5 步。修改 spring-mvc-config.xml 配置文件如下:

<beans  xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/mvc
		http://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context.xsd">
	
	<context:component-scan base-package="com.foxconn.controller" />
	
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
	
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
beans>

使用注解,便不需要再在配置文件中使用 XML 描述 Bean。Spring 的扫描机制会自动查找指定路径(base-package)下所有基于注解的类型;
同时,配置处理映射器可以让其根据RequestMapping请求自动查找映射关系,省去了原本在 XML 配置文件中配置映射关系的繁琐步骤;
配置处理适配器来完成 Controller 对 RequestMapping 注解标注的方法的调用;
配置视图解析器来解析视图,完成 View 的呈现。

  • 注解配置完成后。修改 Controller 中的代码来使用一次
package com.foxconn.controller;

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

@Controller
public class HelloSpringController{

	@RequestMapping(value="/hello")
	public ModelAndView helloWorld() {
		ModelAndView mv = new ModelAndView();
		mv.addObject("message", "Hello SpringMVC");
		mv.setViewName("/WEB-INF/test/demo.jsp");
		return mv;
	}
}

使用注解之后,便不需要再实现 Controller 接口,所以也就不需要 Override 接口的方法。

  1. 使用 @Controller 注解标记这是一个 Controller,Spring 便会自动扫描这些基于注解的控制器类
  2. 使用 @RequstMapping 注解标记请求映射关系。其 value 值就是 URL 中需要调用的值,也就是基本配置中 beans 节点下 bean 节点的 name。
  3. 这里有些朋友可能会在导包时出现冲突,原因可能是在基本配置时导入了org.springframework.web.servlet.mvc.Controller,然后在修改为注解配置时没有切换这个包,导致 Eclipse 找不到 @Controller 的位置,所以建议先删除掉所有 import 的包,然后使用快捷键 Ctrl + Shift + O 一键导入。
  • 启动 Tomcat ,访问 http://localhost:8080/HelloSpring/hello
    【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境_第19张图片

你可能感兴趣的:(【SpringMVC】Eclipse 中搭建基础 SpringMVC 环境)