2013-07-11 42 views
0

我一直在嘗試約一個星期以獲得一個簡單的Spring Hello世界風格的項目運行沒有任何運氣..所以我希望可以幫助。Spring MVC基於註釋的Hello World不起作用

我想訪問這個URL(localhost:8080/test/welcome)來顯示「Hello World!」。

我的目標是使用Spring註釋,而不是通過xml配置bean。

當前當我訪問上述URL時,我得到一個HTTP狀態404(所請求的資源不可用)錯誤。

的就是這些文件我有:

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="3.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <display-name>test</display-name> 
    <!-- Spring MVC --> 
    <servlet> 
     <servlet-name>test-dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>test-dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/test-dispatcher-servlet.xml 
     </param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
</web-app> 

test-dispatcher-servlet.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    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 
     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"> 
    <context:component-scan base-package="com.test.test.controllers"/> 
    <mvc:annotation-driven /> 
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix"> 
      <value>/WEB-INF/pages/</value> 
     </property> 
     <property name="suffix"> 
      <value>.jsp</value> 
     </property> 
    </bean> 
</beans> 

WelcomeController.java

package com.test.test.controllers; 

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

@Controller 
@RequestMapping("/welcome") 
public class WelcomeController { 

    @RequestMapping(method = RequestMethod.GET) 
    public String printWelcome(Model model) { 

     return "welcome"; 
    } 
} 

welcome.jsp

<html> 
<body> 
<h2>Hello World!</h2> 
</body> 
</html> 

pom.xml

<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>com.test</groupId> 
    <artifactId>test</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>test</name> 
    <build> 
     <finalName>test</finalName> 
    </build> 
    <properties> 
     <maven.compiler.source>1.7</maven.compiler.source> 
     <maven.compiler.target>1.7</maven.compiler.target> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <org.springframework.version>3.2.3.RELEASE</org.springframework.version> 
     <org.springframework.security.version>3.1.4.RELEASE</org.springframework.security.version> 
    </properties> 
    <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>jstl</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.25</version> 
     </dependency> 
     <!-- Spring Dependencies --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-expression</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 
     <!-- Spring Security Dependencies --> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-core</artifactId> 
      <version>${org.springframework.security.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-web</artifactId> 
      <version>${org.springframework.security.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-config</artifactId> 
      <version>${org.springframework.security.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-acl</artifactId> 
      <version>${org.springframework.security.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-taglibs</artifactId> 
      <version>${org.springframework.security.version}</version> 
     </dependency> 
    </dependencies> 
</project> 

我的項目結構: project-folder-structure

我只是想不通爲什麼它不工作,我不知道如果我能連條它比我已經有任何進一步...

我有很多關於春天的問題,但我想他們w生病不得不等待另一個問題。到目前爲止,這種體驗比我做過的其他任何事情都更具挑戰性......它只是設置它!我迫不及待地想要實際編程!

感謝您的任何幫助。

+0

更改網址格式爲/*並嘗試 – Renjith

+0

您的Web應用程序容器(Tomcat?Glassfish?)是否將WAR部署爲報告? – Raedwald

+0

@Renjith感謝不幸的是,這並沒有改變任何東西。 – Mick

回答

2

你有沒有把你的控制器放在src/test/java文件夾中的原因是什麼?據我所知,該文件夾在打包過程中被跳過,所以WAR-file在打包時不再包含控制器。

創建一個名爲src/main/java的文件夾。我注意到你正在使用Maven插件,所以通常它會自動被選爲源文件夾。如果沒有,右鍵單擊您的項目,然後轉至Maven,然後更新配置(或類似的東西)。

現在將包com.test.test.controller移動到src/main/java文件夾並再次構建+部署。

+0

謝謝迪米特里,很好的接收..但不幸的是,這並沒有解決問題。這個問題似乎是另一回事。我現在正在看Raedwald的評論,但我不確定如何檢查應用程序是否使用tomcat服務器在eclipse中進行了部署。我在啓動服務器時查看了控制檯,但沒有看到與部署war文件相關的任何內容..所以也許這是正確的方向。 – Mick

+0

您是否嘗試使用命令行:'mvn clean install tomcat:run'選項已經?我不再相信IDE和部署。在使用Maven命令行進行部署之前,務必關閉其他Tomcat,因爲它將打開自己的Tomcat實例(在端口8080處)。 – g00glen00b

+0

本週我一直在考慮10個小時一直致力於與日食有關的問題..(我之前有另一個與eclipse默認版本2.3 servlets)。順便說一下,謝謝。我跑了一個maven乾淨,並重新在eclipse上運行服務器,並注視着它現在的工作!現在回到解決我使用maven安全註釋的原始問題:) – Mick