У меня есть веб-приложение, которое использует Spring 3.0.1, Struts 2.0, Hibernate 3.3.2 и Apache Tiles, и я хочу представить шаблон OpenSessionInView. Я уже добавил фильтр в свой файл web.xml, но я не знаю, что делать дальше.Шаблон OpenSessionInView
web.xml файл
<?xml version="1.0" encoding="UTF-8"?>
<display-name>
Struts2Hibernate3Spring3Tile2Integration
</display-name>
<welcome-file-list>
<welcome-file>articles.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>
org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
</param-name>
<param-value>/WEB-INF/tiles-def.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<listener-class>
org.apache.struts2.tiles.StrutsTilesListener
</listener-class>
</listener>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Filtre pour OpenSessionInView -->
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
applicationContext.xml файл
<?xml version="1.0" encoding="UTF-8"?>
<!-- On demande à Spring de gérer l’ensemble des classes package ma.ecommerce -->
<context:component-scan base-package="ma.ecommerce" />
<!-- Pour accéder aux paramètres définis dans le fichier database.properties -->
<context:property-placeholder location="classpath:database.properties" />
<tx:annotation-driven transaction-manager="hibernateTransactionManager" />
<!-- La définition du bean sessionFactory en utilisant Spring ORM et Hibernate -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>ma.ecommerce.service.modele.Article</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props>
</property>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<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>
<bean id="hibernateTransactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="article" class="ma.ecommerce.presentation.action.ArticleAction" />
<bean id="articleBean" class="ma.ecommerce.domaine.ArticleBean" />
<bean id="articleDao" class="ma.ecommerce.dao.DaoImpl"/>
DaoImpl.java файл
@Repository("articleDao")
public class DaoImpl implements IDao
{
@Autowired
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@Override
public void saveArticle(Article article)
{
sessionFactory.getCurrentSession().saveOrUpdate(article);
}
@SuppressWarnings("unchecked")
@Override
public List<Article> getArticleList()
{
return (List<Article>)sessionFactory.getCurrentSession().createCriteria(Article.class).list();
}
спасибо, да, у меня есть часть в моем приложении, где клиент может добавлять, редактировать, удалять или перечислить свои статьи, и мне нужно получить доступ к базе данных, и, кстати, это своего рода домашнее задание, и меня спросили использовать OpenSessionInView ... –