在eclipse中使用Maven創建spring+springMVC工程

前言

      花了兩週時間去學習研究的,雖然網上有各種教程可以照着做,但是在實踐過程中總會出現一些教程上沒有出現的錯誤。然後又花時間去了解錯誤,尋找解決方法,以至於時間很久。本文除了講述怎麼搭建項目,還講述我在搭建項目過程中遇到的問題,發生該問題的原因,以及我怎麼解決的問題。

 

 

準備工作:

  1.安裝好Maven

  2.在eclipse中配置好Maven

 關於安裝和配置,請網上查找教程自行安裝配置。

 

一.新建Maven web工程

 打開eclipse(這裏我使用的是eclipse mars),點擊File-new-Maven project

彈出如下窗口,填寫Maven工程放置的位置,圖中圈出的地方。選好放置的地方,點擊next.

 

 

然後出現該方框,選擇Maven工程的類型,我們要建的是一web工程,所以,選擇圈出工程類型。

 

 

彈出如下窗口,紅色打叉提示我們要填寫工程的Group Id和Artifact Id。在這裏插幾句,Group Id和Artifact Id是幹嗎用的。這裏Group Id和Artifact Id叫做座標,是工程的座標,Maven就像一個座標空間,通過座標去查找相應的文件。簡單說就是給文件一個標誌。

 

 

 

填寫好座標以後,點擊finish。

 

新建好工程之後,發現工程報了一個錯

 

 

 

打開報錯的文件,查看報錯原因。

 

 

 

打開,報錯文件提示缺少這個類javax.servlet.http.HttpServlet,我們可以在pom.xml文件裏引入這個包。

選中pom文件,點右鍵-Maven-add dependency

彈出下邊的窗口,在第一個紅色方框中輸入,ser ,下邊的紅色方框會進行模糊查詢,顯示查詢結果,然後選擇第一個,finish。然後錯誤就會消失。

 

 

二.配置文件

1.pom.xml(最終版,pom裏引入依賴的方式就像上邊引入servlet一樣,這裏不再贅述,只把最終結果貼出來)

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>springMVC3</groupId>
  <artifactId>springMVC3</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>springMVC3 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
    	<groupId>javax.servlet</groupId>
    	<artifactId>servlet-api</artifactId>
    	<version>2.5</version>
    </dependency>
    
     <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-core</artifactId>
    	<version>4.1.4.RELEASE</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-context</artifactId>
    	<version>4.1.4.RELEASE</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-webmvc</artifactId>
    	<version>4.1.3.RELEASE</version>
    </dependency>
   
  </dependencies>
  <build>
    <finalName>springMVC3</finalName>
    <plugins>
    	<plugin>
    		<groupId>org.apache.maven.plugins</groupId>
    		<artifactId>maven-assembly-plugin</artifactId>
    		<version>2.2-beta-5</version>
    	</plugin>
    </plugins>
  </build>
</project>

 

 

 

 

 

 

spring-core.jar
這個jar 文件包含Spring框架基本的核心工具類。Spring其它組件要都要使用到這個包裏的類,是其它組件的基本核心,當然你也可以在自己的應用系統中使用這些工具類。
外部依賴Commons Logging,(Log4J)。


spring-context:這個jar 文件爲Spring 核心提供了大量擴展。可以找到使用Spring ApplicationContext特性時所需的全部類,JDNI所需的全部類,instrumentation組件以及校驗Validation方面的相關類。
外部依賴spring-beans, (spring-aop)。

spring-webmvc.jar
這個jar 文件包含Spring MVC框架相關的所有類。包括框架的Servlets,Web MVC框架,控制器和視圖支持。當然,如果你的應用使用了獨立的MVC框架,則無需這個JAR文件裏的任何類。
外部依賴spring-web, (spring-support,Tiles,iText,POI)。

spring-web.jar
這個jar 文件包含Web應用開發時,用到Spring框架時所需的核心類,包括自動載入Web Application Context特性的類、Struts與JSF集成類、文件上傳的支持類、Filter類和大量工具輔助類。
外部依賴spring-context, Servlet API, (JSP API, JSTL, Commons FileUpload, COS)。

 

maven-assembly-plugin 

這是一個插件,Maven在將工程打包的時候,所打包的東西是不包括依賴包的,要想將依賴包也包含進去,必須引入這個插件。如果既不引入這個插件,也沒有另外在WEB-INF文件夾下新建lib文件夾引入依賴的jar包,再在自動部署中進行設置(如下圖),工程就會一直報錯,提示找不到包,找不到類,找不到xml文件什麼的。我當時就在這裏卡了好久,請教了別人,查閱了一些資料。

2.mvc-dispatcher-servlet.xml

 

在WEB-INF文件夾下建立文件夾configs,spring,和文件mvc-dispatcher-servlet.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.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">


	<!-- 本配置文件是工名爲mvc-dispatcher的DispatcherServlet使用, 提供其相關的Spring MVC配置 -->


	<!-- 啓用Spring基於annotation的DI, 使用戶可以在Spring MVC中使用Spring的強大功能。 激活 @Required 
		@Autowired,JSR 250's @PostConstruct, @PreDestroy and @Resource 等標註 -->
	<context:annotation-config/>


	<!-- DispatcherServlet上下文, 只管理@Controller類型的bean, 忽略其他型的bean, 如@Service -->
	<context:component-scan base-package="com">
		<context:include-filter type="annotation"
			expression="org.springframework.stereotype.Controller" />
	</context:component-scan>


	<!-- HandlerMapping, 無需配置, Spring MVC可以默認啓動。 DefaultAnnotationHandlerMapping 
		annotation-driven HandlerMapping -->


	<!-- 擴充了註解驅動,可以將請求參數綁定到控制器參數 -->
	<mvc:annotation-driven/>


	<!-- 靜態資源處理, css, js, imgs -->
	<mvc:resources mapping="/css/**" location="/WEB-INF/css/"/>
	<mvc:resources mapping="/js/**" location="/WEB-INF/js/" />




	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsps/" />
		<property name="suffix" value=".jsp" />
	</bean>
</beans>

 

 

 

 

 

 

3.web.xml

 

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
          http://xmlns.jcp.org/xml/ns/javaee/web-app_2_4.xsd"
          version="2.4">
  <display-name>Archetype Created Web Application</display-name>
  
   <!-- DispatcherServlet, Spring MVC的核心 -->
  <servlet>
		<servlet-name>mvc-dispatcher</servlet-name>
		<servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- DispatcherServlet對應的上下文配置, 默認爲/WEB-INF/$servlet-name$-servlet.xml
		 -->
		<init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>/WEB-INF/configs/spring/mvc-dispatcher-servlet.xml</param-value>
        </init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>mvc-dispatcher</servlet-name>
	    <!-- mvc-dispatcher攔截所有的請求-->
		<url-pattern>/</url-pattern>
	</servlet-mapping>
  
</web-app>

 

 

 

 

 

 

這裏文件已經有解釋了,不過多說明,只是注意引入的上邊的

mvc-dispatcher-servlet.xml文件的引入路徑要對。

其次

 

xmlns="http://xmlns.jcp.org/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
          http://xmlns.jcp.org/xml/ns/javaee/web-app_2_4.xsd"
          version="2.4"

web-app標籤裏的這串東西在新建工程的時候,web.xml裏是沒有的,是自己加進去的,它的作用是拿來規範xml文件引入的標籤,對xml文件進行規定,哪些標籤可以引入。

 

三.java類

 

在下圖位置新建包和java類

 

 

 

TestController.java

package com;


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


@Controller
@RequestMapping("/Test")
public class TestController {


	@RequestMapping("/mvc")
	public String helloMvc() {
		return "Test";
	}
}	@RequestMapping("/mvc")
	public String helloMvc() {
		return "Test";
	}
}

四.jsp頁面,css文件,js文件

 

新建css文件夾和Test.css文件,新建js文件夾和Test.js文件,新建jsps文件夾和Test.jsp,位置如下。

 


 

 

 

 

 

Test.css

 

body{
	background:red;
}

 

 

 

 

 

Test.js

 

$(function() {
alert("123!");
})

 

 

 

 

 

 

這裏注意,想以美元符號去獲取html元素,對其進行操作。也就是想使用jquery就要在jsp頁面引入jquery.min.js,並且在jsp頁面中要放在所有js文件之前。否則或報錯說$未定義undefined。

 

Test.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>
<link rel="stylesheet" type="text/css" href="../css/Test.css">
<script src="../js/jquery.min.js"></script>
<script src="../js/Test.js"></script>


</head>
<body>
hello ,this is a test.
</body>
</html>

 

 

這樣子,就可以把工程部署到tomcat裏,然後啓動tomcat,打開瀏覽器輸入http://localhost:8080/工程名/Test/mvc

就可以訪問了。

 

此過程中遇到的問題

1.在使用eclipse引入依賴的時候,eclipse出現了問題

我引入依賴時,都是選中工程的pom.xml點右鍵-Maven-add Maven

彈出下邊的窗口進行引入的

 

 

 

但是,有幾次我在下圖中的方框1輸入搜索的artifactId字符時,方框2並沒有得出模糊查詢的結果


 

 

 

我網上搜索的解決辦法是,打開Maven repositories如下圖,選中圈出紅線部分,點右鍵,選擇rebuild  index。然後去重新引入依賴就可以了。

 

2.關於訪問Test.jsp路徑的問題

我是按照慕課的spring mvc教程來學習的,慕課上訪問jsp頁面的路徑直接是不加工程名的,形如:http://localhost:8080/Test/mvc。而我在實踐過程中,怎麼也訪問不到我的頁面。後來請教了別人才知道,這是根項目和非根項目的區別。tomcat根項目的頁面訪問時,訪問路徑中不用加項目名稱,,而非根項目的頁面訪問路徑中一定要有項目名稱。

3.其他問題

如依賴包未被Maven打包,還有jquery文件引入位置不當的問題在上邊已經說明了,這裏不再說明。

 

 

好了,花了兩週的時間去搭了這個項目,再花一早上的時間寫這篇博文,因爲網絡的原因,寫幾個字就停一下,卡住了。希望對你有幫助.

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章