J'essaie d'apprendre Java, Hibernate et le modèle MVC. Suite à divers tutoriel en ligne j'ai réussi à mapper ma base de données, j'ai créé quelques méthodes principales pour le tester et cela fonctionne. En outre, j'ai créé quelques pages en utilisant le modèle MVC et je suis capable d'afficher certaines données fausses ainsi dans une vue. le problème est que je ne peux pas connecter les deux. ce que j'aiJava Mvc Et Hibernate
Mon opinion se présente comme suit
<%@ include file="/WEB-INF/jsp/include.jsp" %>
<html>
<head>
<title>Users</title>
<%@ include file="/WEB-INF/jsp/head.jsp" %>
</head>
<body>
<%@ include file="/WEB-INF/jsp/header.jsp" %>
<img src="images/rss.png" alt="Rss Feed"/>
<%@ include file="/WEB-INF/jsp/menu.jsp" %>
<div class="ContainerIntroText">
<img src="images/usersList.png" class="marginL150px" alt="Add New User"/>
<br/>
<br/>
<div class="usersList">
<div class="listHeaders">
<div class="headerBox">
<strong>FirstName</strong>
</div>
<div class="headerBox">
<strong>LastName</strong>
</div>
<div class="headerBox">
<strong>Username</strong>
</div>
<div class="headerAction">
<strong>Edit</strong>
</div>
<div class="headerAction">
<strong>Delete</strong>
</div>
</div>
<br><br>
<c:forEach items="${users}" var="user">
<div class="listElement">
<c:out value="${user.firstName}"/>
</div>
<div class="listElement">
<c:out value="${user.lastName}"/>
</div>
<div class="listElement">
<c:out value="${user.username}"/>
</div>
<div class="listElementAction">
<input type="button" name="Edit" title="Edit" value="Edit"/>
</div>
<div class="listElementAction">
<input type="image" src="images/delete.png" name="image" alt="Delete" >
</div>
<br />
</c:forEach>
</div>
</div>
<a id="addUser" href="addUser.htm" title="Click to add a new user"> </a>
</body>
</html>
Mon contrôleur
public class UsersController implements Controller {
private UserServiceImplementation userServiceImplementation;
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ModelAndView modelAndView = new ModelAndView("users");
List<User> users = this.userServiceImplementation.get();
modelAndView.addObject("users", users);
return modelAndView;
}
public UserServiceImplementation getUserServiceImplementation() {
return userServiceImplementation;
}
public void setUserServiceImplementation(UserServiceImplementation userServiceImplementation) {
this.userServiceImplementation = userServiceImplementation;
}
}
Mes définitions servelet
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- the application context definition for the springapp DispatcherServlet -->
<bean name="/home.htm" class="com.rssFeed.mvc.HomeController"/>
<bean name="/rssFeeds.htm" class="com.rssFeed.mvc.RssFeedsController"/>
<bean name="/addUser.htm" class="com.rssFeed.mvc.AddUserController"/>
<bean name="/users.htm" class="com.rssFeed.mvc.UsersController">
<property name="userServiceImplementation" ref="userServiceImplementation"/>
</bean>
<bean id="userServiceImplementation" class="com.rssFeed.ServiceImplementation.UserServiceImplementation">
<property name="users">
<list>
<ref bean="user1"/>
<ref bean="user2"/>
</list>
</property>
</bean>
<bean id="user1" class="com.rssFeed.domain.User">
<property name="firstName" value="firstName1"/>
<property name="lastName" value="lastName1"/>
<property name="username" value="username1"/>
<property name="password" value="password1"/>
</bean>
<bean id="user2" class="com.rssFeed.domain.User">
<property name="firstName" value="firstName2"/>
<property name="lastName" value="lastName2"/>
<property name="username" value="username2"/>
<property name="password" value="password2"/>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
et enfin cette classe pour accéder à la base de données
public class HibernateUserDao extends HibernateDaoSupport implements UserDao {
public void addUser(User user) {
getHibernateTemplate().saveOrUpdate(user);
}
public List<User> get() {
User user1 = new User();
user1.setFirstName("FirstName");
user1.setLastName("LastName");
user1.setUsername("Username");
user1.setPassword("Password");
List<User> users = new LinkedList<User>();
users.add(user1);
return users;
}
public User get(int id) {
throw new UnsupportedOperationException("Not supported yet.");
}
public User get(String username) {
return null;
}
}
la connexion de base de données se produit dans ce fichier
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:hsql://localhost/rss"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>com/rssFeed/domain/User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties" >
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="userDao" class="com.rssFeed.dao.hibernate.HibernateUserDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
</beans>
et UserServiceImplementation classe ressemble à ce
public class UserServiceImplementation implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void add(User user) throws UserAlreadyExistsException {
if (userDao.get(user.getUsername()) != null) { //user already exists
throw new UserAlreadyExistsException();
}
else{
userDao.addUser(user);
}
}
private static List<User> users;
static {
User user1 = new User();
user1.setFirstName("FirstName");
user1.setLastName("LastName");
user1.setUsername("my username");
user1.setPassword("my Password");
users = new LinkedList<User>();
users.add(user1);
}
public User createUser(User u) {
User user = new User();
user.setId(users.size() + 1);
user.setFirstName(u.getFirstName());
user.setLastName(u.getLastName());
user.setUsername(u.getUsername());
user.setPassword(u.getPassword());
users.add(user);
return user;
}
public List<User> get() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
public User get(int id) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
Pourriez-vous me aider à résoudre ce problème j'ai passé les 4 derniers jours et des nuits sur cette question sans succès
Merci
Qu'est-ce qui ne fonctionne pas? et pouvez-vous nous montrer le code pour UserServiceImplementation? – oedo
désolé je l'ai oublié, je veux remplacer les données fausses définies dans le fichier de définition servelet avec des données de la base de données – GigaPr
@GigaPr poster la bonne réponse afin que quelqu'un d'autre pourrait résoudre son problème avec ce problème – ant