Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Spring Mvc 404 error

Status
Not open for further replies.

tuyetcuc1

Programmer
Jan 3, 2010
3
0
0
CA
Hi:

I took a course on Spring 2.56 from Interface21 and the labs I got get it to work during the training.

But when I tried it at home it doesn't work.
I go to the following url and it's find.

It display "This is my JSP page. " This is from the default index.jsp page.
When I tried the url as suggested in the lab "
It gives me a 404 error.

Note, the Tomcat 6 console didnot show any errors meaning it didn't invoke the code for the url.
I am using Myeclipse 8 on Tomcat6.
Here is my Spring information:

Web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns=" xmlns:xsi=" xsi:schemaLocation="
version="2.4">

<!-- Beans in these files will makeup the configuration of the root web application context -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/accounts-application-config.xml</param-value>
</context-param>

<!-- Bootstraps the root web application context before servlet initialization -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Deploys the 'accounts' dispatcher servlet whose configuration resides in /WEB-INF/accounts-servlet-config.xml -->
<servlet>
<servlet-name>accounts</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/accounts-servlet-config.xml</param-value>
</init-param>
</servlet>

<!-- Maps all /accounts URLs to the 'accounts' servlet -->
<servlet-mapping>
<servlet-name>accounts</servlet-name>
<url-pattern>/accounts/*</url-pattern>
</servlet-mapping>

</web-app>

Accounts-servlet-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=" xmlns:xsi=" xmlns:context=" xsi:schemaLocation="
<!--
The configuration for your 'accounts' Dispatcher Servlet.

This example uses component scanning to automatically
pick up controllers.
- Dependencies of controllers are wired using @Autowired support.
- The URI scheme is controller using @RequestMapping annotations
-->

<context:component-scan base-package="accounts.web"/>

<!--
if you would not have used component scanning you would have had
to wire up the controller yourself:

<bean class="accounts.web.AccountController">
<constructor-arg ref="accountManager"/>
</bean>
-->

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

</beans>

accounts-application-config.xml:

?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=" xmlns:xsi=" xmlns:tx=" xmlns:context=" xsi:schemaLocation="
<!-- The configuration of the account manager application. -->

<context:annotation-config/>

<!-- Weaves in transactional advice around @Transactional methods -->
<tx:annotation-driven transaction-manager="transactionManager" />

<!-- The account manager service that can load accounts from the database -->
<bean id="accountManager" class="accounts.internal.HibernateAccountManager">
<constructor-arg ref="sessionFactory" />
</bean>

<!-- A Hibernate SessionFactory for mapping Accounts and Restaurants from object to relation tables -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingLocations">
<list>
<value>classpath:accounts/internal/Account.hbm.xml</value>
<value>classpath:accounts/internal/Beneficiary.hbm.xml</value>
</list>
</property>
</bean>

<!-- Creates an in-memory "rewards" database populated with test data for fast testing -->
<bean id="dataSource" class="accounts.testdb.TestDataSourceFactory">
<property name="testDatabaseName" value="rewards"/>
<property name="schemaLocation" value="classpath:accounts/testdb/schema.sql"/>
<property name="testDataLocation" value="classpath:accounts/testdb/test-data.sql"/>
</bean>

<!-- Drives transactions using Hibernate APIs when requested -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<!-- Translates Hibernate exceptions to Spring Data Access Exceptions -->
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>

</beans>

Here is the AccountControler.java:
package accounts.web;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.ServletRequestBindingException;
import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import accounts.Account;
import accounts.AccountManager;

/**
* A Spring MVC @Controller controller handling requests for both the
* account summary and the account details pages. The accountDetails()
* method return an account, corresponding to a given entity id. The
* accountSummary() method returns a list with all accounts.
*/
@Controller
public class AccountController {

private AccountManager accountManager;

/**
* Creates a new AccountController with a given account manager.
*/
@Autowired public AccountController(AccountManager accountManager) {
this.accountManager = accountManager;
}


/**
* The @RequestMapping annotation takes care of setting the URL
* this controller will react this.
*/
@RequestMapping("/accountDetails.htm")
public ModelAndView accountDetails(HttpServletRequest request)
throws ServletRequestBindingException {
long id = ServletRequestUtils.getRequiredLongParameter(request, "entityId");
ModelAndView mav = new ModelAndView("accountDetails");
mav.addObject("account", accountManager.getAccount(id));
return mav;
}

@RequestMapping("/accountSummary.htm")
public ModelAndView accountSummary() {
List<Account> accounts = accountManager.getAllAccounts();
ModelAndView mav = new ModelAndView();
mav.setViewName("accountSummary");
mav.addObject("accounts", accounts);
return mav;
}
}


The database is hsqldb.

Any help or hint would be greatly appreciated it.

Yours,

Frustrated.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top