2012-12-17 42 views
1

我試圖使用我的web應用註釋控制器春3 MVC支持。 我的配置如下:@Controller沒有被調用的GET請求

1- web.xml中:

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
</servlet> 

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

2- applicationContext.xml中:我的網頁是web應用文件夾直接

<context:component-scan base-package="com.myapp" /> 
    <mvc:annotation-driven /> 
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/"/> 
     <property name="suffix" value=".jsp"/> 
    </bean> 

3下 - 控制器:

@Controller 
@RequestMapping("/test.jsp") 
public class Test{ 

    @RequestMapping(method = RequestMethod.GET) 
    public String get() { 
     System.out.println("######## GET METHOD FOR test.jsp ########"); 
     return "test.jsp"; 
    } 

} 

注:我加載的applicationContext的ServletContextListener如下:

ApplicationContext context = new ClassPathXmlApplicationContext(
        "classpath:spring/config/applicationContext.xml"); 

請告知如何解決這個問題,謝謝。

我也有一個問題,如果有可能,使調度員的servlet分派具體jsp頁面並不是所有的頁面中的應用,因爲不是所有的我的jsp頁面中有控制器。

回答

3

的web.xml中調度servlet名稱是dispatcher。在這種情況下,Spring試圖加載dispatcher-servlet.xml(servlet_name-servlet.xml)。而您在applicationContext.xml中定義了您的彈簧配置。將它重命名爲dispatcher-servlet.xml

或者你也可以問春在servlet的初始化設置,參數去閱讀的applicationContext。例如:

<servlet> 
    <servlet-name>spring</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/applicationContext.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>/springmvc/*</url-pattern> 
</servlet-mapping> 

關於你提到的第二個問題,你可以使用Spring的view-controller映射直接渲染視圖。

<mvc:view-controller path="demo/flot" view-name="demo/flot"/> 

閱讀:17.15.5 Configuring View Controllers

+0

跟着你的筆記,並且仍然有同樣的問題,是否可以與我加載的applicationContext的方式(請大家看看編輯問題)?也可以這與get方法的返回字符串有關嗎?請指教。 –

+0

您需要通過查看日誌來檢查彈簧配置是否已加載。也正如@ tesla1984所提到的,將返回字符串更改爲「test」而不是「test.jsp」 –

1

變化return "test.jsp"return test。您返回的字符串將添加prefixsuffix

0

解決如下:

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

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
      <param-value> 
      classpath:spring/config/applicationContext.xml 
     </param-value> 
    </context-param> 


    <servlet> 
     <servlet-name>spring</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>classpath:spring/config/dispatcherServlet.xml</param-value> 
     </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>spring</servlet-name> 
     <url-pattern>/myapp/*</url-pattern> 
    </servlet-mapping>