2014-01-09 59 views
0

我有[web.xml中]簡單的彈簧mvc輸出程序有什麼問題?

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
      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_2_5.xsd" 
      version="2.5">  


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



    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class> 
      org.springframework.web.context.ContextLoaderListener 
     </listener-class> 
    </listener> 
</web-app> 

另外[調度-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:p="http://www.springframework.org/schema/p" 
     xmlns:aop="http://www.springframework.org/schema/aop" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"> 



<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
     <value> 
      /home=HomeController 
     </value> 
    </property> 
</bean> 

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

<bean 
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
    <property name="order" value="1"></property> 
</bean> 

<bean name="HomeController" class="com.spring.mvcc.HomeController"></bean> 

</beans> 

[HomeController.java]

@Controller 
public class HomeController { 

    @RequestMapping({"/","/home"}) 
    public String showHomePage(Map<String, Object> model){ 
     model.put("spittles","works"); 

     return "home";  
    } 
} 

[home.jsp]

<html> 
<body> 
    <h2>HI!</h2> 
</body> 
</html> 

當我試圖通過我的瀏覽器,如運行它(我改變了我的的Tomcat端口):本地主機:9090 // MyProject的/家 - 結果:沒有happends。只是一個空白頁面。

這有什麼問題?

+0

'home.jsp'在哪裏? – SudoRahul

+0

你爲什麼直接運行'home.jsp'?嘗試使用'localhost:9090/MyProject/home'運行# –

+0

home.jsp位於WEB-INF/views/ – solvator

回答

0

我認爲這個問題是您的配置。 首先,您要混合使用XML配置和註釋配置,這通常不是一件好事(可能會導致讀者和Spring混淆)。其次,你還沒有告訴Spring實際上在任何地方尋找註解配置。

我會做的是下面的,

[調度員的servlet]

<?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:p="http://www.springframework.org/schema/p" 
     xmlns:aop="http://www.springframework.org/schema/aop" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd 
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 


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

<bean 
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
    <property name="order" value="1"></property> 
</bean> 

<context:component-scan base-package="your.package.here" /> 
<mvc:annotation-driven />  

請注意,我已經添加了兩個名字空間(MVC和上下文),並取消了SimpleUrlHandlerMapping建立和你HomeController bean。

但是,最後兩行發生了奇蹟,它們基本上「激活」了註釋。

還有一些方法可以在沒有註釋的情況下做到這一點,擴展MultiActionController可能是一種方法,但它看起來像你想要的註釋(和基於春天的文件,這些天似乎是首選的方式去)。

編輯:另外,DefaultAnnotationHandlerMapping從3.2開始已被棄用。但是,添加命名空間似乎毫無用處。我只是刪除它。

+0

我很感謝迴應,我會盡快嘗試。 – solvator

+0

不要忘記在base-package參數中輸入你的名字空間。當我去嘗試時,我做到了。 :) – jsundin

+0

對不起,它不會工作。現在這是一個空白頁面.. – solvator

0

回到Home.jsp是認爲,你應該訪問本地主機:9090 // MyProject的/家

+0

它沒有幫助.. – solvator

+0

試試這個@RequestMapping(value =「home」) – sambean

+0

對不起,它不工作.. – solvator