SpringMVC Hello World 實例

環境的準備

安裝JDK

安裝tomcat

安裝eclipse for j2ee

下載spring-framework

下載依賴包

配置開發環境

  • 啓動eclipse
  • 配置tomcate。windows-->preferences-->server-->runtime environments。add tomcat,安裝地址爲tomcat8的解壓目錄,jre選擇jre7

開發Hello World

新建web工程

  • 新建 Dynamic Web Project

新建web工程

target runtime 選擇 Apache Tomcat v8.0windows

Dynamic web module version 選擇 3.1。注意 tomcat7,不支持高版本瀏覽器

Configuration 選擇 Tomcat v8.0tomcat

  • 添加 source folder

添加源碼目錄

  • 配置 web module

配置生產web.xml

勾選 Generate web.xml deployment descriptororacle

添加工程內容

  • 添加依賴包

將spring-framework的包拷貝到WebContent/WEB_INF/lib下。app

將commons-logging的包拷貝到WebContent/WEB_INF/lib下。

將log4j的包拷貝到WebContent/WEB_INF/lib下。

  • 修改web.xml
<?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" version="3.1">
	<display-name>SpringMVC</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>

	<servlet>
		<servlet-name>SpringMVC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>SpringMVC</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
</web-app>
  • 添加servlet 在WebContent/WEB_INF下添加 SpringMVC-servlet.xml文件,內容以下:
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	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-4.1.xsd
   http://www.springframework.org/schema/context 
   http://www.springframework.org/schema/context/spring-context-4.1.xsd">

	<context:component-scan base-package="com.tutorialspoint" />

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

</beans>
  • 添加jsp文件 在WebContent/WEB_INF/jsp下添加 hello.jsp,內容以下:
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
	<title>Hello World</title>
</head>
<body>
   <h2>${message}</h2>
</body>
</html>
  • 添加controller 在src下添加class文件:HelloController.java,內容以下:
package org.springtest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.ui.ModelMap;

@Controller
public class HelloController{
 
   @RequestMapping(value = "/hello", method = RequestMethod.GET)
   public String printHello(ModelMap model) {
      model.addAttribute("message", "Hello Spring MVC Framework World!");

      return "hello";
   }
}

運行工程

  • 新建tomcat server 在servers視圖中新建一個server

新建一個server

新建server 直接點擊finish

新建的server

  • 配置tomcat server

選擇server,而後右鍵,能夠看到有 open start stop restart等操做

輸入圖片說明

  • 運行spring工程

右鍵web porject, Run As --> Run on Server.

在eclipse的瀏覽器,或者本機的瀏覽器地址欄輸入:http://localhost:808/SpringMVC/hello 就能夠看到輸出的內容

調試

當修改了java的內容後,等上幾秒鐘就會從新編譯,而且推送到tomcat目錄下,刷新頁面就能夠看到變化。

常見問題

訪問tomcat 404

是由於在servers視圖中建立了server,可是沒有配置使用tocat的安裝目錄致使。

訪問tomcat 404

解決方法:在servers視圖刪除server,並新建,新建後 勾選 「server location」 下的 「use tomcat installation」,並保存

若是「server locations」下爲灰色,則刪除server後重建,或者多刪除幾回。

spring工程沒法啓動

表現爲tomcat沒法啓動

tomcat 沒法啓動

啓動spring工程報錯,異常信息以下:

嚴重: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SpringMVC]]
	at java.util.concurrent.FutureTask.report(Unknown Source)
	at java.util.concurrent.FutureTask.get(Unknown Source)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SpringMVC]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
	... 6 more
Caused by: java.lang.NoClassDefFoundError: Lorg/apache/commons/logging/Log;
	at java.lang.Class.getDeclaredFields0(Native Method)
	at java.lang.Class.privateGetDeclaredFields(Unknown Source)
	at java.lang.Class.getDeclaredFields(Unknown Source)
	at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
	at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:256)
	at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:132)
	at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65)
	at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:334)
	at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:774)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:305)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5066)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	... 6 more
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1332)
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166)
	... 20 more

觀察日誌能夠看出,是因爲缺乏了 common-logging 和 log4j的包

訪問spring工程報404

訪問地址: http://localhost:8080/SpringMVC/hello 報404 是因爲在servers視圖,沒有勾選 「server options」 下的 「publish module contexts to separate XML files」,並保存。

server options設置

解決辦法:勾選「publish module contexts to separate XML files」

相關文章
相關標籤/搜索