Après avoir vu le traitement du formulaire avec Spring ici , je vous présente aujourd’hui une petite application qui permet d’ajouter, lire, modifier et supprimer un employe de la base de données.
Pour débuter, Apres avoir créé un projet maven nommé SpringMvcCrud.
il faut ajouter les dependencies dans le fichier pom.xml.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> | |
<modelVersion>4.0.0</modelVersion> | |
<groupId>training</groupId> | |
<artifactId>SpringMvcCrud</artifactId> | |
<packaging>war</packaging> | |
<version>0.0.1-SNAPSHOT</version> | |
<name>SpringMvcCrud Maven Webapp</name> | |
<url>http://maven.apache.org</url> | |
<!-- Specifying the Versions of Spring, Hiberante, MySQL etc --> | |
<properties> | |
<spring.version>4.1.5.RELEASE</spring.version> | |
<hibernate.version>4.3.8.Final</hibernate.version> | |
<mysql.version>5.1.10</mysql.version> | |
<junit-version>4.11</junit-version> | |
<servlet-api-version>3.1.0</servlet-api-version> | |
<jsp-version>2.1</jsp-version> | |
<jstl-version>1.2</jstl-version> | |
<java.version>1.7</java.version> | |
</properties> | |
<dependencies> | |
<dependency> | |
<groupId>org.springframework</groupId> | |
<artifactId>spring-core</artifactId> | |
<version>${spring.version}</version> | |
</dependency> | |
<dependency> | |
<groupId>org.springframework</groupId> | |
<artifactId>spring-context</artifactId> | |
<version>${spring.version}</version> | |
</dependency> | |
<dependency> | |
<groupId>org.springframework</groupId> | |
<artifactId>spring-web</artifactId> | |
<version>${spring.version}</version> | |
</dependency> | |
<dependency> | |
<groupId>org.springframework</groupId> | |
<artifactId>spring-webmvc</artifactId> | |
<version>${spring.version}</version> | |
</dependency> | |
<dependency> | |
<groupId>org.springframework</groupId> | |
<artifactId>spring-orm</artifactId> | |
<version>${spring.version}</version> | |
</dependency> | |
<!-- Hibernate 4 dependencies --> | |
<dependency> | |
<groupId>org.hibernate</groupId> | |
<artifactId>hibernate-core</artifactId> | |
<version>${hibernate.version}</version> | |
</dependency> | |
<dependency> | |
<groupId>org.hibernate</groupId> | |
<artifactId>hibernate-c3p0</artifactId> | |
<version>${hibernate.version}</version> | |
</dependency> | |
<!--MYSQL Connector --> | |
<dependency> | |
<groupId>mysql</groupId> | |
<artifactId>mysql-connector-java</artifactId> | |
<version>${mysql.version}</version> | |
</dependency> | |
<!-- Servlet and JSP --> | |
<dependency> | |
<groupId>javax.servlet</groupId> | |
<artifactId>javax.servlet-api</artifactId> | |
<version>${servlet-api-version}</version> | |
</dependency> | |
<dependency> | |
<groupId>javax.servlet.jsp</groupId> | |
<artifactId>jsp-api</artifactId> | |
<version>${jsp-version}</version> | |
<scope>provided</scope> | |
</dependency> | |
<!-- JSTL dependency --> | |
<dependency> | |
<groupId>jstl</groupId> | |
<artifactId>jstl</artifactId> | |
<version>${jstl-version}</version> | |
</dependency> | |
<dependency> | |
<groupId>junit</groupId> | |
<artifactId>junit</artifactId> | |
<version>3.8.1</version> | |
<scope>test</scope> | |
</dependency> | |
</dependencies> | |
<build> | |
<finalName>SpringMvcCrud</finalName> | |
<plugins> | |
<plugin> | |
<artifactId>maven-compiler-plugin</artifactId> | |
<version>2.3.2</version> | |
<configuration> | |
<source>${java.version}</source> | |
<target>${java.version}</target> | |
</configuration> | |
</plugin> | |
</plugins> | |
</build> | |
</project> |
Voici aussi le fichier de configuration de la base de données:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Database related properties | |
database.url=jdbc:mysql://localhost:3306/test | |
database.user=root | |
database.password= | |
database.driver=com.mysql.jdbc.Driver | |
#hibernate related properties | |
hibernate.dialect=org.hibernate.dialect.MySQLDialect | |
hibernate.hbm2ddl.auto=update | |
hibernate.show_sql=true | |
hibernate.format_sql=true |
La classe Employe.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.persistance.model; | |
import java.io.Serializable; | |
import javax.persistence.Entity; | |
import javax.persistence.GeneratedValue; | |
import javax.persistence.GenerationType; | |
import javax.persistence.Id; | |
@Entity | |
public class Employe implements Serializable{ | |
private int id; | |
private String name; | |
private String tel; | |
private String adress; | |
@Id | |
@GeneratedValue(strategy=GenerationType.AUTO) | |
public int getId() { | |
return id; | |
} | |
public void setId(int id) { | |
this.id = id; | |
} | |
public String getName() { | |
return name; | |
} | |
public void setName(String name) { | |
this.name = name; | |
} | |
public String getTel() { | |
return tel; | |
} | |
public void setTel(String tel) { | |
this.tel = tel; | |
} | |
public String getAdress() { | |
return adress; | |
} | |
public void setAdress(String adress) { | |
this.adress = adress; | |
} | |
} |
Créer l'interface IEmployeDao
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.persistance.dao; | |
import java.util.List; | |
import com.persistance.model.Employe; | |
public interface IEmployeDao { | |
public void add(Employe emp); | |
public List<Employe> findAll(); | |
public void delete(Employe emp); | |
public Employe update(Employe emp); | |
public Employe findById(int id); | |
} |
Créer la classe EmployeDao qui implémente l'interface IEmployeDao
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.persistance.dao; | |
import java.util.List; | |
import org.hibernate.SessionFactory; | |
import org.springframework.beans.factory.annotation.Autowired; | |
import org.springframework.stereotype.Repository; | |
import com.persistance.model.Employe; | |
@Repository | |
public class EmployeDao implements IEmployeDao { | |
@Autowired | |
SessionFactory sessionFactory; | |
public SessionFactory getSessionFactory() { | |
return sessionFactory; | |
} | |
public void setSessionFactory(SessionFactory sessionFactory) { | |
this.sessionFactory = sessionFactory; | |
} | |
@Override | |
public void add(Employe emp) { | |
sessionFactory.getCurrentSession().save(emp); | |
// TODO Auto-generated method stub | |
} | |
@Override | |
public List<Employe> findAll() { | |
// TODO Auto-generated method stub | |
return sessionFactory.getCurrentSession().createQuery("from Employe").list(); | |
} | |
@Override | |
public void delete(Employe emp) { | |
// TODO Auto-generated method stub | |
sessionFactory.getCurrentSession().delete(emp); | |
} | |
@Override | |
public Employe update(Employe emp) { | |
// TODO Auto-generated method stub | |
sessionFactory.getCurrentSession().update(emp); | |
return emp; | |
} | |
@Override | |
public Employe findById(int id) { | |
// TODO Auto-generated method stub | |
return (Employe) sessionFactory.getCurrentSession().get(Employe.class,id); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.training.service; | |
import java.util.List; | |
import com.persistance.model.Employe; | |
public interface IEmployeService { | |
public void add(Employe emp); | |
public void delete(Employe emp); | |
public List<Employe> findAll(); | |
public Employe update(Employe emp); | |
public Employe findById(int employeeId); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.training.service; | |
import java.util.List; | |
import org.springframework.beans.factory.annotation.Autowired; | |
import org.springframework.stereotype.Service; | |
import org.springframework.transaction.annotation.Transactional; | |
import com.persistance.dao.IEmployeDao; | |
import com.persistance.model.Employe; | |
@Service | |
@Transactional | |
public class EmployeService implements IEmployeService { | |
@Autowired | |
IEmployeDao employeDao; | |
@Override | |
public void add(Employe emp) { | |
employeDao.add(emp); | |
// TODO Auto-generated method stub | |
} | |
@Override | |
public void delete(Employe emp) { | |
// TODO Auto-generated method stub | |
employeDao.delete(emp); | |
} | |
@Override | |
public List<Employe> findAll() { | |
// TODO Auto-generated method stub | |
return employeDao.findAll(); | |
} | |
@Override | |
public Employe update(Employe emp) { | |
// TODO Auto-generated method stub | |
return employeDao.update(emp); | |
} | |
@Override | |
public Employe findById(int employeeId) { | |
// TODO Auto-generated method stub | |
return employeDao.findById(employeeId); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.training.controller; | |
import java.io.IOException; | |
import java.lang.reflect.Method; | |
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.annotation.ModelAttribute; | |
import org.springframework.web.bind.annotation.RequestMapping; | |
import org.springframework.web.bind.annotation.RequestMethod; | |
import org.springframework.web.servlet.ModelAndView; | |
import com.persistance.model.Employe; | |
import com.training.service.IEmployeService; | |
@Controller | |
public class EmployeController { | |
@Autowired | |
IEmployeService employeService; | |
@RequestMapping(value = "/") | |
public ModelAndView listEmploye(ModelAndView model) throws IOException { | |
List<Employe> listEmploye = employeService.findAll(); | |
model.addObject("listEmploye", listEmploye); | |
model.setViewName("home"); | |
return model; | |
} | |
@RequestMapping(value = "/add", method = RequestMethod.GET) | |
public ModelAndView add(ModelAndView model) { | |
Employe emp = new Employe(); | |
model.addObject("emp", emp); | |
model.setViewName("EmployeForm"); | |
return model; | |
} | |
@RequestMapping(value = "/save", method = RequestMethod.POST) | |
public ModelAndView save(@ModelAttribute Employe emp) { | |
employeService.add(emp); | |
return new ModelAndView("redirect:/"); | |
} | |
@RequestMapping(value = "/delete", method = RequestMethod.GET) | |
public ModelAndView delete(HttpServletRequest req) { | |
int employeeId = Integer.parseInt(req.getParameter("id")); | |
Employe emp = employeService.findById(employeeId); | |
employeService.delete(emp); | |
return new ModelAndView("redirect:/"); | |
} | |
@RequestMapping(value = "/update", method = RequestMethod.GET) | |
public ModelAndView update(HttpServletRequest req) { | |
int employeeId = Integer.parseInt(req.getParameter("id")); | |
Employe emp = employeService.findById(employeeId); | |
ModelAndView model = new ModelAndView("EmployeForm"); | |
model.addObject("emp", emp); | |
return model; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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:context="http://www.springframework.org/schema/context" | |
xmlns:mvc="http://www.springframework.org/schema/mvc" | |
xmlns:tx="http://www.springframework.org/schema/tx" | |
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | |
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd | |
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd | |
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd"> | |
<!-- Specifying base package of the Components like Controller, Service, | |
DAO --> | |
<context:component-scan base-package="com"></context:component-scan> | |
<!-- Getting Database properties --> | |
<context:property-placeholder location="classpath:application.properties"/> | |
<mvc:annotation-driven /> | |
<!-- Specifying the Resource location to load JS, CSS, Images etc --> | |
<mvc:resources mapping="/resources/**" location="/resources/" /> | |
<!-- View Resolver --> | |
<bean | |
class="org.springframework.web.servlet.view.InternalResourceViewResolver"> | |
<property name="prefix" value="/WEB-INF/pages/" /> | |
<property name="suffix" value=".jsp" /> | |
</bean> | |
<!-- DataSource --> | |
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" | |
id="dataSource"> | |
<property name="driverClassName" value="${database.driver}"></property> | |
<property name="url" value="${database.url}"></property> | |
<property name="username" value="${database.user}"></property> | |
<property name="password" value="${database.password}"></property> | |
</bean> | |
<!-- Hibernate SessionFactory --> | |
<bean id="sessionFactory" | |
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> | |
<property name="dataSource" ref="dataSource"></property> | |
<property name="hibernateProperties"> | |
<props> | |
<prop key="hibernate.dialect">${hibernate.dialect}</prop> | |
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> | |
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop> | |
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop> | |
</props> | |
</property> | |
<property name="packagesToScan" value="com.persistance.model"></property> | |
</bean> | |
<!-- Transaction --> | |
<bean id="transactionManager" | |
class="org.springframework.orm.hibernate4.HibernateTransactionManager"> | |
<property name="sessionFactory" ref="sessionFactory" /> | |
</bean> | |
<tx:annotation-driven transaction-manager="transactionManager" /> | |
</beans> |
La page d'ajout EmployeForm.jsp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" | |
pageEncoding="ISO-8859-1"%> | |
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> | |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |
<html> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> | |
<title>Insert title here</title> | |
</head> | |
<body> | |
<form:form action="save" method="post" modelAttribute="emp" > | |
<form:hidden path="id"/> | |
Name | |
<form:input path="name"/> | |
Tel | |
<form:input path="tel"/> | |
Adress | |
<form:input path="adress"/> | |
<input type="submit" value="Save"/> | |
</form:form> | |
</body> | |
</html> |
La page de consultation Home.jsp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" | |
pageEncoding="ISO-8859-1"%> | |
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> | |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |
<html> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> | |
<title>Insert title here</title> | |
</head> | |
<body> | |
<div align="center"> | |
<h1>Employe List</h1> | |
<table border="1"> | |
<th>Name</th> | |
<th>tel</th> | |
<th>adress</th> | |
<th>Action</th> | |
<c:forEach var="emp" items="${listEmploye}"> | |
<tr> | |
<td>${emp.name}</td> | |
<td>${emp.tel}</td> | |
<td>${emp.adress}</td> | |
<td><a href="update?id=${emp.id}">Edit</a> | |
<a href="delete?id=${emp.id}">delete</a></td> | |
</tr> | |
</c:forEach> | |
</table> | |
<h4> | |
New Employee Register <a href="add">here</a> | |
</h4> | |
</div> | |
</body> | |
</html> |
Il ne faut pas oublier la modification dans le fichier web.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> | |
<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> | |
<listener> | |
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> | |
</listener> | |
<context-param> | |
<param-name>contextConfigLocation</param-name> | |
<param-value>/WEB-INF/spring-servlet.xml</param-value> | |
</context-param> | |
</web-app> |
Voici une vidéo pour cet exemple:
Code source complet github
This comment has been removed by the author.
ReplyDeletemerci bien pour ce partage,ça reflète ta gentillesse Ramzi
ReplyDeleteMerci wajdi
Deletemerci ramzi pour votre initiative.
ReplyDeletemerci marouene pour le suivi.
DeleteIt is very good blog and useful for students and developer ,Thanks for sharing
ReplyDeleteCore Java Online Training
Java Online Course
Java Online Training Hyderabad
Good Job Rabmzi :)
ReplyDeleteMerci ramzi
ReplyDeleteGood work thankssssssss
ReplyDeleteperde modelleri
ReplyDeleteMobil Onay
MOBİL ÖDEME BOZDURMA
Nft Nasil Alınır
Ankara Evden Eve Nakliyat
TRAFİK SİGORTASI
DEDEKTOR
Web Site Kurma
aşk kitapları
Good content. You write beautiful things.
ReplyDeletevbet
mrbahis
vbet
sportsbet
hacklink
korsan taksi
taksi
mrbahis
sportsbet
Good text Write good content success. Thank you
ReplyDeletebonus veren siteler
mobil ödeme bahis
poker siteleri
betmatik
slot siteleri
kralbet
kibris bahis siteleri
betpark
alsancak
ReplyDeleteçankırı
düzce
gaziemir
kaş
İDOLT
https://saglamproxy.com
ReplyDeletemetin2 proxy
proxy satın al
knight online proxy
mobil proxy satın al
LASR
شركة تنظيف بيوت بجازان vaFnVf0AB7
ReplyDelete