SpringMVC框架下Web項目的搭建與部署

這篇文章已被廢棄。html

如今,Deolin使用Maven構建項目,而不是下載Jar文件,使用Jetty插件調試項目,而不是外部啓動Tomcat。java

 

SpringMVC比起Servlet/JSP方便了太多 web

 

Web容器——Tomcatspring

訪問http://tomcat.apache.org/download-90.cgiapache

根據操做系統,選擇並下載Binary Distributions - Core下的zip文件,解壓。瀏覽器

測試:運行%tomcat%\bin\startup.bat瀏覽器訪問localhost:8080…spring-mvc

成功。tomcat

 

下載JAR文件mvc

http://repo.spring.io/release/org/springframework/spring/4.3.7.RELEASE/app

若是想要選擇其餘的版本,改變連接中的4.3.7便可。

選擇*-dist.zip便可。

 

構建項目

1.在eclipse Java EE中新建一個動態Web項目(Dynamic Web Project)

 

 

 

2.更改配置路徑

 

 

3.聲明依賴庫

 

 

 4.單純在項目中聲明jar文件,只能讓eclipse可以找到這些jar文件,

使代碼中引入這些類時不至於編譯報錯,但僅僅這樣是不足的,

爲了讓Web容器也能訪問到項目所需的jar文件,須要複製一份到WEB-INF/lib目錄下。

 

5.編寫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"
> <display-name>DemoApp</display-name> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value><!-- 等完成了SpringMVC的配置文件再來補全 --></param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>

 

 6.生成並編寫SpringMVC配置文件。

在此以前須要生成一個區別於「src」的全新的代碼文件夾(Source Folder),專門用於存放配置文件。

對於會用到不止一個框架的JavaWeb項目來講,將全部的配置文件統一塊兒來是合適的。

與「src」同樣,「conf」內的文件會輸出到項目的classpath中(與「src」內的java文件先編譯成class文件輸出不一樣的是,xml文件被直接複製到classpth中)。

 

 

 

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

    <!-- 註解處理器適配器、處理器映射器 -->
    <mvc:annotation-driven />

    <!-- 處理器(@controller) -->
    <context:component-scan base-package="controller" />

    <!-- 視圖解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

</beans>

 

 7.補全web.xml

            <param-value>classpath:springframework/springmvc-servlet.xml</param-value>

 

 8.web.xml已經完成,如今web容器能夠基於web.xml內的<servlet/>和<servlet-mapping/>來將請求URL映射到指定的Servlet類(對於SpringMVC來講,是DispatcherServlet.class)上了。

但在此以前,須要讓tomcat知道DemoApp的存在——指定tomcat的默認應用爲本演示項目。

編輯%tomcat%\conf\server.xml,在最後的「Host」標籤中添加「Context」標籤。 

 

嘗試着啓動tomcat(%tomcat%\bin\startup.bat)...

 

...結果是啓動失敗,控制檯閃退。

Deolin嘗試了不少次,仍是沒能在閃退前成功地將控制檯窗口截圖。

 

查看一下日誌文件(%tomcat%\logs\catalina.*.log

 

問題在於缺乏了Apache Commons Logging庫(http://commons.apache.org/proper/commons-logging/download_logging.cgi

 

下載解壓完畢後,將jar文件複製到WEB-INF/lib

 

 

再次啓動tomcat…

 

啓動成功。

 

9.編寫個控制器和JSP

/DemoApp/src/controller/ForumController.java

package controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class ForumController { @RequestMapping(value="/forum") public String requestMethod(Model m) { m.addAttribute("oneName", "oneValue"); System.out.println("Hey, there"); return "Forum"; } }

 

/DemoApp/WebContent/WEB-INF/jsp/Forum.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<!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>title</TITLE>
    </HEAD>
    <BODY> ${oneName} </BODY>
</HTML>

 

重啓tomcat,瀏覽器訪問  localhost:8080

(因爲在tomcat配置文件的Context標籤中定義了本應用的路徑(path)爲「/」,因此URL中沒有「上下文」部分)

 

 

10.聲明靜態資源

比起測試經過,更有趣的事情是出現了一個新的警告。

 

每次請求時,tomcat會去訪問Web應用根路徑下的favicon.ico做爲網頁的圖標,而這個請求會被DispatcherServlet認爲是一個用來請求控制器的URI而攔截。

因爲控制器中不存在映射了[/favicon.ico]的請求方法,那麼天然會出現noHandlerFound警告

解決方法是爲這個URI單獨添加專門的映射。

 

/DemoApp/conf/springframework/springmvc-servlet.xml的<beans/>標籤內。

    <!-- 爲靜態資源單獨映射 -->
    <mvc:resources mapping="/favicon.ico" location="/favicon.ico" />

 

單純變動SpringMVC的配置文件並不須要重啓tomcat,等應用完成了部署,瀏覽器再次訪問  localhost:8080

 

 

警告消失了。

至此,Web項目便搭建和部署完成了。

 

遠程Debug

1.首先要讓tomcat開放用於Debug的端口。

編輯%tomcat%\bin\startup.bat

全部指令的前面添加一條指令

set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

 

測試:重啓動tomcat

能夠看到啓動最初的消息中出現了新增配置中的信息。

 

2.在eclipse中啓動Debug(初次啓動)

 

 

 Debug View顯示Debug已經開始

 

添加斷點

 

瀏覽器再次訪問 localhost:8080。

斷點正常工做。

 

 3.退出Debug

遠程Debug不影響tomcat,須要退出Debug模式僅僅須要在eclipse的Debug View中中斷Debug便可。

 

4.平常啓動Debug

初次配置過Debug之後,每次啓動debug便不在須要配置,直接啓動便可。

相關文章
相關標籤/搜索