4

我是spring mvc的新手,之前我通过根包名称“localhost/spring”访问了主页,但我无法找出我改变了什么,我得到了这个错误。Web.xml:

    <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>

有任何想法吗?谢谢

4

3 回答 3

6

我相信应用程序可能没有扫描包含控制器的包。我看到正在扫描一个 dao 包,但我认为您不会将控制器放在那里。在您的配置中,使用控制器扫描包。

<context:component-scan base-package="by.mvc.spring" />
于 2013-07-01T08:44:01.653 回答
2

如果您使用 , 等标签@RequestMapping@Controller则必须使用<mvc:annotation-driven />而不是<annotation-driven />.

在这里你有更多关于它的信息。

于 2013-07-01T08:57:45.803 回答
2

如果您正在使用<annotation-driven />并且您有一个或多个使用@RequestMapping 的包,则@Controller 您必须将标签设置<context:component-scan base-package="com.mvc.example" />为明确指示扫描控制器的位置,仅此而已。

祝你好运!

于 2014-04-09T01:04:50.197 回答