2013-07-01 111 views
3

我是Spring新的mvc,早些時候,我通過根包名「localhost/spring」訪問主頁,我無法找到我我改變了我得到這個錯誤。 web.xml中:org.springframework.web.servlet.PageNotFound - 找不到使用URI的HTTP請求的映射Spring 3

<servlet> 
    <servlet-name>appServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

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

首頁控制器

@Controller 
public class HomeController { 

private UserServiceImpl userService; 

@Inject 
public HomeController(UserServiceImpl userService) 
{ 
    this.userService = userService; 
} 

@RequestMapping(value="/") 
public String home(Model model) { 

    System.out.println("Sdfsd"); 

    model.addAttribute("users", userService.getUsers()); 

    return "home"; 
} 

} 

的servlet-context.xml中:

<annotation-driven /> 


<resources mapping="/resources/**" location="/resources/" /> 

<context:component-scan base-package="by.mvc.dao" /> 

<beans:bean id="dataSource" 
    class="org.apache.commons.dbcp.BasicDataSource"> 
    <beans:property name="driverClassName" value="org.hsqldb.jdbcDriver" /> 
    <beans:property name="url" value="jdbc:hsqldb:hsql://localhost/user_db" /> 
    <beans:property name="username" value="root" /> 
    <beans:property name="password" value="root" /> 
    <beans:property name="initialSize" value="5" /> 
    <beans:property name="maxActive" value="10" /> 
</beans:bean> 

<beans:bean id="sessionFactory" 
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <beans:property name="dataSource" ref="dataSource" /> 
    <beans:property name="packagesToScan" value="by.mvc.dao" /> 
    <beans:property name="hibernateProperties"> 
     <beans:props> 
      <beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</beans:prop> 
     </beans:props> 
    </beans:property> 
</beans:bean> 

<beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <beans:property name="sessionFactory" ref="sessionFactory"/> 
</beans:bean> 

<beans:bean class="org.springframework.web.servlet.view.tiles2.TilesViewResolver"/> 

<beans:bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
    <beans:property name="definitions"> 
     <beans:list> 
      <beans:value>/WEB-INF/views/views.xml</beans:value> 
     </beans:list> 
    </beans:property> 
</beans:bean> 

任何想法?謝謝

+0

你使用的是什麼網址? –

+0

localhost/spring - 基本包或localhost/SpringMvc的名稱 - 項目名稱 - 相同的結果 – kassie

+0

還有一個問題,包含homecontroller的包是什麼? –

回答

6

我相信應用程序可能不會掃描包含控制器的軟件包。我看到一個道包被掃描,但我認爲你不會把你的控制器放在那裏。在您的配置中使用控制器掃描軟件包。

<context:component-scan base-package="by.mvc.spring" /> 
+0

然後我得到這個錯誤: 找不到匹配的類型爲[by.mvc.dao.UserServiceImpl]的bean的依賴關係:期望至少有一個符合條件的bean作爲此依賴項的自動導向候選項。依賴註釋:{} – kassie

+0

好,控制器正在工作。將'@ Component'添加到UserServiceImpl類中,並確保將其掃描到其中一個包中。然後將'@ Autowired'添加到控制器中的userService字段。 –

+0

謝謝,修復它。 – kassie

2

如果您使用的是像@RequestMapping@Controller等標籤,你必須使用<mvc:annotation-driven />而不是<annotation-driven />

Here你有更多關於它的信息。

+0

不,因爲在他的servlet-context中,mvc被定義爲標準名稱空間! –

+0

是的,它爲我工作。只需在** root-context.xml **中使用** **,而不是在** servlet-context.xml中使用** ** ** –

2

如果您使用的是<annotation-driven />,並且您使用@RequestMapping,@Controller還有一個包,則必須將標記<context:component-scan base-package="com.mvc.example" />設置爲明確表示要掃描控制器的位置,這就是全部。

祝你好運!

相關問題