Tutorial:Create Spring 3 MVC Hibernate 3 Example using Maven in Eclipse
- By Viral Patel on November 10, 2010
Let us make a complete end-to-end application using Spring 3.0 MVC as front end technology and Hibernate as backend ORM technology. For this application we will also use Maven for build and dependency management and MySQL as database to persist the data.
The application will be a simple Contact Manager app which will allow user to add new contacts. The list of contacts will be displayed and user will be able to delete existing contacts.
Spring 3.0 MVC Series
- Part 1: Introduction to Spring 3.0 MVC framework
- Part 2: Create Hello World Application in Spring 3.0 MVC
- Part 3: Handling Forms in Spring 3.0 MVC
- Part 4: Spring 3 MVC Tiles Plugin Tutorial with Example in Eclipse
- Part 5: Spring 3 MVC Internationalization & Localization Tutorial with Example in Eclipse
- Part 6: Spring 3 MVC Themes in Spring-Tutorial with Example
- Part 7: Create Spring 3 MVC Hibernate 3 Example using Maven in Eclipse
Our Goal
As describe above, our goal is to create a contact manager application which will allow the user to add a contact or remove it. The basic requirement of the Contact Manager app will be:
- Add new contact in the contact list.
- Display all contacts from contact list.
- Delete a contact from contact list.
Following is the screenshot of end application.

Application Architecture
We will have a layered architecture for our demo application. The database will be accessed by a Data Access layer popularly called as DAO Layer. This layer will use Hibernate API to interact with database. The DAO layer will be invoked by a service layer. In our application we will have a Service interface called ContactService.

Getting Started
For our Contact Manager example, we will use MySQL database. Create a table contacts in any MySQL database. This is very preliminary example and thus we have minimum columns to represent a contact. Feel free to extend this example and create a more complex application.
CREATE TABLE CONTACTS
(
id INT PRIMARY KEY AUTO_INCREMENT,
firstname VARCHAR(30),
lastname VARCHAR(30),
telephone VARCHAR(15),
email VARCHAR(30),
created TIMESTAMP DEFAULT NOW()
);
Creating Project in Eclipse
The contact manager application will use Maven for build and dependency management. For this we will use the Maven Dynamic Web Project in Eclipse as the base architecture of our application.
Download the below source code:
Maven Dynamic Web Project (6.7 KB)
Unzip the source code to your hard drive and import the project in Eclipse. Once the project is imported in Eclipse, we will create package structure for Java source. Create following packages under src/main/java folder.
- net.viralpatel.contact.controller – This package will contain Spring Controller classes for Contact Manager application.
- net.viralpatel.contact.form – This package will contain form object for Contact manager application. Contact form will be a simple POJO class with different attributes such as firstname, lastname etc.
- net.viralpatel.contact.service – This package will contain code for service layer for our Contact manager application. The service layer will have one ContactService interface and its corresponding implementation class
- net.viralpatel.contact.dao – This is the DAO layer of Contact manager application. It consists of ContactDAO interface and its corresponding implementation class. The DAO layer will use Hibernate API to interact with database.
Entity Class – The Hibernate domain class
Let us start with the coding of Contact manager application. First we will create a form object or hibernate POJO class to store contact information. Also this class will be an Entity class and will be linked with CONTACTS table in database.
Create a java class Contact.java under net.viralpatel.contact.form package and copy following code into it.
File: src/main/java/net/viralpatel/contact/form/Contact.java
package net.viralpatel.contact.form;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="CONTACTS")
public class Contact {
@Id
@Column(name="ID")
@GeneratedValue
private Integer id;
@Column(name="FIRSTNAME")
private String firstname;
@Column(name="LASTNAME")
private String lastname;
@Column(name="EMAIL")
private String email;
@Column(name="TELEPHONE")
private String telephone;
public String getEmail() {
return email;
}
public String getTelephone() {
return telephone;
}
public void setEmail(String email) {
this.email = email;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getFirstname() {
return firstname;
}
public String getLastname() {
return lastname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
The first thing you’ll notice is that the import statements import from javax.persistence rather than a Hibernate or Spring package. Using Hibernate with Spring, the standard JPA annotations work just as well and that’s what I’m using here.
- First we’ve annotated the class with
@Entitywhich tells Hibernate that this class represents an object that we can persist. - The
@Table(name = "CONTACTS")annotation tells Hibernate which table to map properties in this class to. The first property in this class on line 16 is our object ID which will be unique for all events persisted. This is why we’ve annotated it with@Id. - The
@GeneratedValueannotation says that this value will be determined by the datasource, not by the code. - The
@Column(name = "FIRSTNAME")annotation is used to map this property to the FIRSTNAME column in the CONTACTS table.
The Data Access (DAO) Layer
The DAO layer of Contact Manager application consist of an interface ContactDAO and its corresponding implementation class ContactDAOImpl. Create following Java files in net.viralpatel.contact.dao package.
File: src/main/java/net/viralpatel/contact/dao/ContactDAO.java
package net.viralpatel.contact.dao;
import java.util.List;
import net.viralpatel.contact.form.Contact;
public interface ContactDAO {
public void addContact(Contact contact);
public List<Contact> listContact();
public void removeContact(Integer id);
}
File: src/main/java/net/viralpatel/contact/dao/ContactDAOImpl.java
package net.viralpatel.contact.dao;
import java.util.List;
import net.viralpatel.contact.form.Contact;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class ContactDAOImpl implements ContactDAO {
@Autowired
private SessionFactory sessionFactory;
public void addContact(Contact contact) {
sessionFactory.getCurrentSession().save(contact);
}
public List<Contact> listContact() {
return sessionFactory.getCurrentSession().createQuery("from Contact")
.list();
}
public void removeContact(Integer id) {
Contact contact = (Contact) sessionFactory.getCurrentSession().load(
Contact.class, id);
if (null != contact) {
sessionFactory.getCurrentSession().delete(contact);
}
}
}
The DAO class in above code ContactDAOImpl implements the data access interface ContactDAO which defines methods such as listContact(), addContact() etc to access data from database.
Note that we have used two Spring annotations @Repository and @Autowired.
Classes marked with annotations are candidates for auto-detection by Spring when using annotation-based configuration and classpath scanning. The @Component annotation is the main stereotype that indicates that an annotated class is a “component”.
The @Repository annotation is yet another stereotype that was introduced in Spring 2.0. This annotation is used to indicate that a class functions as a repository and needs to have exception translation applied transparently on it. The benefit of exception translation is that the service layer only has to deal with exceptions from Spring’s DataAccessException hierarchy, even when using plain JPA in the DAO classes.
Another annotation used in ContactDAOImpl is @Autowired. This is used to autowire the dependency of the ContactDAOImpl on the SessionFactory.
The Service Layer
The Service layer of Contact Manager application consist of an interface ContactService and its corresponding implementation class ContactServiceImpl. Create following Java files in net.viralpatel.contact.service package.
File: src/main/java/net/viralpatel/contact/service/ContactService.java
package net.viralpatel.contact.service;
import java.util.List;
import net.viralpatel.contact.form.Contact;
public interface ContactService {
public void addContact(Contact contact);
public List<Contact> listContact();
public void removeContact(Integer id);
}
File: src/main/java/net/viralpatel/contact/service/ContactServiceImpl.java
package net.viralpatel.contact.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import net.viralpatel.contact.dao.ContactDAO;
import net.viralpatel.contact.form.Contact;
@Service
public class ContactServiceImpl implements ContactService {
@Autowired
private ContactDAO contactDAO;
@Transactional
public void addContact(Contact contact) {
contactDAO.addContact(contact);
}
@Transactional
public List<Contact> listContact() {
return contactDAO.listContact();
}
@Transactional
public void removeContact(Integer id) {
contactDAO.removeContact(id);
}
}
In above service layer code, we have created an interface ContactService and implemented it in class ContactServiceImpl. Note that we used few Spring annotations such as @Service, @Autowired and @Transactional in our code. These annotations are called Spring stereotype annotations.
The @Service stereotype annotation used to decorate the ContactServiceImpl class is a specialized form of the @Component annotation. It is appropriate to annotate the service-layer classes with @Service to facilitate processing by tools or anticipating any future service-specific capabilities that may be added to this annotation.
Adding Spring MVC Support
Let us add Spring MVC support to our web application.
Update the web.xml file and add servlet mapping for org.springframework.web.servlet.DispatcherServlet. Also note that we have mapped url / with springServlet so all the request are handled by spring.
File: /src/webapp/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Spring3-Hibernate</display-name> <welcome-file-list> <welcome-file>list.html</welcome-file> </welcome-file-list> <servlet> <servlet-name>spring</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
Once the web.xml is configured, let us add spring-servlet.xml and jdbc.properties files in /src/main/webapp/WEB-INF folder.
File: /src/main/webapp/WEB-INF/jdbc.properties
jdbc.driverClassName= com.mysql.jdbc.Driver jdbc.dialect=org.hibernate.dialect.MySQLDialect jdbc.databaseurl=jdbc:mysql://localhost:3306/ContactManager jdbc.username=root jdbc.password=testpass
The jdbc.properties file contains database connection information such as database url, username, password, driver class. You may want to edit the driverclass and dialect to other DB if you are not using MySQL.
File: /src/main/webapp/WEB-INF/spring-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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<context:annotation-config />
<context:component-scan base-package="net.viralpatel.contact" />
<bean id="jspViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:messages" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="/WEB-INF/jdbc.properties" />
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.databaseurl}" p:username="${jdbc.username}"
p:password="${jdbc.password}" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<tx:annotation-driven />
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
</beans>
The spring-servlet.xml file contains different spring mappings such as transaction manager, hibernate session factory bean, data source etc.
- jspViewResolver bean – This bean defined view resolver for spring mvc. For this bean we also set prefix as “/WEB-INF/jsp/” and suffix as “.jsp”. Thus spring automatically resolves the JSP from WEB-INF/jsp folder and assigned suffix .jsp to it.
- messageSource bean – To provide Internationalization to our demo application, we defined bundle resource property file called messages.properties in classpath.
Related: Internationalization in Spring MVC - propertyConfigurer bean – This bean is used to load database property file jdbc.properties. The database connection details are stored in this file which is used in hibernate connection settings.
- dataSource bean – This is the java datasource used to connect to contact manager database. We provide jdbc driver class, username, password etc in configuration.
- sessionFactory bean – This is Hibernate configuration where we define different hibernate settings. hibernate.cfg.xml is set a config file which contains entity class mappings
- transactionManager bean – We use hibernate transaction manager to manage the transactions of our contact manager application.
File: /src/main/resources/hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<mapping class="net.viralpatel.contact.form.Contact" />
</session-factory>
</hibernate-configuration>
File: /src/main/resources/messages_en.properties
label.firstname=First Name label.lastname=Last Name label.email=Email label.telephone=Telephone label.addcontact=Add Contact label.menu=Menu label.title=Contact Manager label.footer=© ViralPatel.net
Spring MVC Controller
We are almost done with our application. Just add following Spring controller class ContactController.java to net.viralpatel.contact.controller package.
File: /src/main/java/net/viralpatel/contact/controller/ContactController.java
package net.viralpatel.contact.controller;
import java.util.Map;
import net.viralpatel.contact.form.Contact;
import net.viralpatel.contact.service.ContactService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class ContactController {
@Autowired
private ContactService contactService;
@RequestMapping("/index")
public String listContacts(Map<String, Object> map) {
map.put("contact", new Contact());
map.put("contactList", contactService.listContact());
return "contact";
}
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addContact(@ModelAttribute("contact")
Contact contact, BindingResult result) {
contactService.addContact(contact);
return "redirect:/index";
}
@RequestMapping("/delete/{contactId}")
public String deleteContact(@PathVariable("contactId")
Integer contactId) {
contactService.removeContact(contactId);
return "redirect:/index";
}
}
The spring controller defines three methods to manipulate contact manager application.
- listContacts method – This method uses Service interface ContactServer to fetch all the contact details in our application. It returns an array of contacts. Note that we have mapped request “/index” to this method. Thus Spring will automatically calls this method whenever it encounters this url in request.
- addContact method – This method adds a new contact to contact list. The contact details are fetched in
Contactobject using@ModelAttributeannotation. Also note that the request “/add” is mapped with this method. The request method should also be POST. Once the contact is added in contact list usingContactService, we redirect to /index page which in turn callslistContacts()method to display contact list to user.
Related: Forms in Spring MVC - deleteContact method – This methods removes a contact from the contact list. Similar to
addContactthis method also redirects user to /index page once the contact is removed. One this to note in this method is the way we have mapped request url using @RequestMapping annotation. The url “/delete/{contactId}” is mapped thus whenever user send a request /delete/12, the deleteCotact method will try to delete contact with ID:12.
Finally add following JSP file to WEB-INF/jsp folder.
File: /src/main/webapp/WEB-INF/jsp/contact.jsp
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>Spring 3 MVC Series - Contact Manager | viralpatel.net</title>
</head>
<body>
<h2>Contact Manager</h2>
<form:form method="post" action="add.html" commandName="contact">
<table>
<tr>
<td><form:label path="firstname"><spring:message code="label.firstname"/></form:label></td>
<td><form:input path="firstname" /></td>
</tr>
<tr>
<td><form:label path="lastname"><spring:message code="label.lastname"/></form:label></td>
<td><form:input path="lastname" /></td>
</tr>
<tr>
<td><form:label path="email"><spring:message code="label.email"/></form:label></td>
<td><form:input path="email" /></td>
</tr>
<tr>
<td><form:label path="telephone"><spring:message code="label.telephone"/></form:label></td>
<td><form:input path="telephone" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="<spring:message code="label.addcontact"/>"/>
</td>
</tr>
</table>
</form:form>
<h3>Contacts</h3>
<c:if test="${!empty contactList}">
<table class="data">
<tr>
<th>Name</th>
<th>Email</th>
<th>Telephone</th>
<th> </th>
</tr>
<c:forEach items="${contactList}" var="contact">
<tr>
<td>${contact.lastname}, ${contact.firstname} </td>
<td>${contact.email}</td>
<td>${contact.telephone}</td>
<td><a href="delete/${contact.id}">delete</a></td>
</tr>
</c:forEach>
</table>
</c:if>
</body>
</html>
Download Source code
Click here to download full source code of Contact manager application (16 KB)
That’s All folks
Compile and execute the Contact manager application in Eclipse.

If you read this far, you should follow me on twitter here.
Get our Articles via Email. Enter your email address.
Great tutorial. It heped me a lot. Thank you
Thanks Marty
This is an excellent tutorial. It helped me so much.
Congratulations!
great tutorial … thanks
can you post the tutorial for how to intergrate JSF , Spring and Hibranet like a this tutorial.
thanks a lot ….
I am trying to try the same.. In your sample it says list.html in the web.xml welcomefile list
I don’t see that file in your example.
Hw does it go to contacts.jsp page. if you give the url as http://localhost:8080/Appname/index.jsp
??
in list.html write
but since index.jsp is not there it will give bean not found exception..so give contact.jsp inside
hope this helps!!
Sorry,but i did not get the list.html part you explained.
Can you please elaborate a bit.It would be helpful for me.
Great job on the tutorial helped me alot thanks.
awesome!!!
learned alot!!
Really I should thank you a lot for this great tutorial. Few months back, I was afraid to start with Spring thinking that it would be difficult. After reading your blog, I have gained the confidence. Thank you so much
Guys, I was able to successfully build but when I run the server I get a http 404 status and I see the following in the console:
log4j:WARN No appenders could be found for logger (org.springframework.web.servlet.DispatcherServlet).
log4j:WARN Please initialize the log4j system properly.
can anyone please help!
Thanks!
Guys, I downloaded the code and when I build and run it I get a bunch of errors as below, can anyone please help?
javax.servlet.ServletException: Servlet.init() for servlet spring threw exception
root cause
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘contactController’: Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private net.viralpatel.contact.service.ContactService net.viralpatel.contact.controller.ContactController.contactService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘contactServiceImpl’: Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private net.viralpatel.contact.dao.ContactDAO net.viralpatel.contact.service.ContactServiceImpl.contactDAO; nested exception is org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1064)
same here, i’m looking right now for an answer
Hi, The autowiring may fails in case you have not define Getter/Setter methods. Please check if you have defined getter/setter for ContactDAO.
thanks for the tutorial…eventually it worked by adding jar files….
What is the purpose of “BindingResult result” in the “addContact” method in ContactController?
Is it needed?
Another question is the method listContacts(Map map) in ContactController.java can be void right? the return “contacts” is not necessary??
Sorry I am new to this so all these questions!
Hi,
Need to change hibernate entity manager dependency version from “3.3.2.ga” to “3.3.2.GA”
Maven throws exception if version is “3.3.2.ga”
Thanks,
Ganesh
which application selected in this code.
I am trying to run it using jetty plugin and getting 404 error when access the url
http://localhost:8080/coolapp/index.jsp
Any idea on what can be missing. I am seeing in the logs that controller is created.(I put a sysout in constructor)
Does anyone know the maven dependencies for this project?
I downloaded this example then i added the necessary jars but when i run the project got this problem:
Does anyone got the same error?
HIi Guys,
This sounds like a great work by Viral. Thanks for this.
I am a novice too for spring3 and hibernate. When I run the project with this pom file
4.0.0
Spring3HibernateMaven
Spring3HibernateMaven
war
0.0.1-SNAPSHOT
maven-compiler-plugin
1.5
1.5
maven-war-plugin
2.0
javax.servlet
servlet-api
2.5
org.springframework
spring-beans
${org.springframework.version}
org.springframework
spring-jdbc
${org.springframework.version}
org.springframework
spring-web
${org.springframework.version}
org.springframework
spring-webmvc
${org.springframework.version}
org.springframework
spring-core
${org.springframework.version}
org.springframework
spring-expression
${org.springframework.version}
org.springframework
spring-tx
${org.springframework.version}
org.springframework
spring-orm
${org.springframework.version}
org.hibernate
hibernate-entitymanager
3.6.0.Final
<!–
org.slf4j
slf4j-log4j12
1.4.2
–>
taglibs
standard
1.1.2
javax.servlet
jstl
1.1.2
mysql
mysql-connector-java
5.1.11
commons-dbcp
commons-dbcp
20030825.184428
commons-pool
commons-pool
20030825.183949
3.0.2.RELEASE
UTF-8
Please note that I had to add more of spring dependency to make it run, also mysql dependency to match my database.
I am using tomcat7, eclipse Helios 3.7, java 6 with m2e plugins.
This works fine but when I try to run I get error saying’
org.hibernate.MappingException: Unable to load class [ net.viralpatel.contact.form.Contact] declared in Hibernate configuration entry
Coud any on help me please?
sham
I Got the Below mentioned Error wen i run the program…. Can Any one Help me to get out of this prob????
SEVERE: Context initialization failed
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/tx]
Offending resource: ServletContext resource [/WEB-INF/spring-servlet.xml]
at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:284)
Can anyone tell me where to add jars?
We are using Maven as dependency management. So it will take care of JAR files required for the project. In case you want to manually manage the dependencies, simply add all required JAR files under WEB-INF/lib.
Hi,
Thanks for the simple but great tutorial. I have, however, put up a slightly modified version which works as well (as of Feb 2012 that is
here:
http://iamtrishulpani.wordpress.com/2012/02/12/springmvc-hibernate-maven-glassfish-netbeans-sample-project/
so that others can download a more recent version.
Thanks again,
Trishul
This is a great tutorial. However, since it was done in 2010, the dependencies in pom.xml file are a bit out of date. Thanks to Trishul. His version works well right now (Feb 2010) except the web.xml in his version caused an error when I ran the app under tomcat 7:
File “/WEB-INF/spring-form.tld” not found
I had to remove the following lines from web.xml and all worked.
http://www.springframework.org/tags/form
spring-form.tld
Why?
because the container ( at least tomcat 7) will only look for WEB-INF/spring-form.tld and will not find the tld in the jar file if the jsp-config is in the web.xml file.
sorry type: “Feb 2010″ should be “Feb 2012″
Hey
great tutorial
one small question – what tool have you used to create architrectural diagram?
Thanks Alex. I’ve use just the MS Word to create the architectural dia
Thanks to Viral for his great work and also thanks to Trishul for his help here.
Trishul’s POM worked for me.
Hi Viral and all,
I had to come back here for a silly (!) reason. It may sound trivial. Apology for that.
Could you help me please on CSS? I seem to unable to access CSS at all. I tried to put the CSS (themes folder) as part 6 Theme tutorial. But I can not see the CSS. I tried put it everywhere even in the WEB-INF and that not work either. JSP pages are fine as I checked form web browser, it can show the css name in head tag but can not access it.
I also exported the project as war then looked that ‘theme’ folder is under contactmgmt ( Webapp.)
Hence I can not get the Theme in my maven project.. Does it has naything to do with maven?
My web folder structure is
-webapp
—–themes.
—-WEB-INF
—-classes
—–jsp
—–lib
—–jdbsc.propertise
—–spring-servlet.xml
—-tiles.xml
—–web.xml
—-index.jsp
Could any one upload a sample maven project where css is accessible, please?
Many Thanks in advance.
Sham
sorry, the structure did not show well in the last post
webapp
—-index.jsp
—–themes.
—-WEB-INF
———–—-classes
———–—-jsp
———–—-lib
———–—-jdbsc.propertise
———–—-spring-servlet.xml
———–—–tiles.xml
———–—-web.xml
it is alas , but your examples simple dont work !