2014-10-29 65 views
0

我在我的項目hello中使用Spring的基於Java的配置。WebMVC映射.jsp不帶@ComponentScan的基於Java的配置

這是我的配置:

@Configuration 
@EnableWebMvc 
public class Config{ 
    @Scope("session") 
    public A a(){ 
     return new A(); 
    } 
} 

這是我web.xml

<web-app> 
    <servlet> 
    <servlet-name>world</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>world</servlet-name> 
    <url-pattern>*.html</url-pattern> 
    </servlet-mapping> 
</web-app> 

這是我的課A

@Controller 
public class A{ 
    @RequestMapping("test.html") 
    public String foo(){ 
    return "bar"; 
    } 
} 

這是我的文件bar.jsp

abc 

這是我pom.xml

... 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.1.1.RELEASE</version> 
    </dependency> 
... 

無論如何,如果我要求http://localhost/hello/test.html我得到了一個空白頁面,而不是abc和輸出:

DispatcherServlet with name 'world' processing GET request for [/hello/test.html] 
Looking up handler method for path /test.html 
Did not find handler method for [/test.html] 
No mapping found for HTTP request with URI [/hello/test.html] in DispatcherServlet with name 'world' 
+0

嘗試使用'http:// localhost:8080/{alpha}/world/hello/test.html'您已經缺少端口(8080)和servlet名稱'world',並且{aplha}必須如果您直接使用Tomcat或使用**上下文,請將其替換爲項目名稱根**如果您正在使用IDE,那麼可以通過以下操作獲取該值:在IDE中選擇項目 - >右鍵單擊 - >屬性 - > ** Web項目設置** – 2014-10-30 01:44:26

+0

我的錯誤,與此無關'servlet-name'是關於'url-pattern',從'* .html'更改爲**/** – 2014-10-30 12:37:42

+0

@ManuelJordan端口80是正確的,因爲我在控制檯中得到了一個輸出。 'url-pattern'也是正確的,因爲我在控制檯中得到了一個輸出。上下文根是正確的,因爲我在控制檯中獲得輸出。 url-pattern是正確的,因爲我在控制檯中獲得輸出。 – 2014-10-30 12:46:16

回答

0

我錯過了@Bean的配置。

@Configuration 
@EnableWebMvc 
public class Config{ 
    @Bean 
    @Scope("session") 
    public A a(){ 
     return new A(); 
    } 
} 

和Foo必須是這樣的:

public String foo(){ 
    return "bar.jsp"; 
} 
0

我不能添加評論,以便張貼這作爲一個答案..

您可以在Config.java到下面的代碼片段:

  • 避免在foo方法中添加.jsp擴展名
  • 解決的觀點,而無需添加註釋@Bean
@Bean 
public UrlBasedViewResolver setupViewResolver() { 
    UrlBasedViewResolver resolver = new UrlBasedViewResolver(); 
    resolver.setPrefix("/WEB-INF/pages/"); 
    resolver.setSuffix(".jsp"); 
    resolver.setViewClass(JstlView.class); 
    return resolver; 
} 

替代使用JSP的Web應用程序的路徑前綴,您可以定義在世界servlet.xml中的視圖解析過

+0

對不起,我已經自己回答了這個問題。 – 2014-10-30 10:44:24