待用模板

注:“\\”后为补充说明内容;“【】”中为选择性内容
web:------------------------------------------------------------

<!-- 集成Spring -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext*.xml</param-value>
</context-param>
<!-- Struts2的配置 -->
<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>


<!-- 配置 spring 的 OpenSessionInView 过滤器 -->
<filter>
<filter-name>OpenSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInView</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>


\\LazyInitializationException异常说明
1,对于集合属性,默认是lazy="true"的,在第一次使用时才加载。
2,但在加载时,如果Session已经关掉了就会抛LazyInitializationException异常
struts2:------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<!-- 设置开发模式 -->
<constant name="struts.devMode" value="true" />
<!-- 指定主题使用simple(默认值为xhtml) -->
<constant name="struts.ui.theme" value="simple" />
<!-- 定义全局的国际化资源文件 -->
<constant name="struts.custom.i18n.resources" value="MessageResources"></constant>

<!-- 可以把相关的action都放在一个package中,以便于管理,形成模块 -->
<package name="default" extends="struts-default">

<!-- 将paramsPrepareParamsStack设置为默认栈,使用该栈是和ModelDriven以及Prepare拦截器配合使用 -->
<default-interceptor-ref name="paramsPrepareParamsStack"></default-interceptor-ref>

</package>
</struts>

hibernate:------------------------------------------------------------

<!-- 方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 其他配置 -->
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.jdbc.batch_size">30</property>
<!-- MySQL不支持fetch_size -->
<property name="hibernate.jdbc.fetch_size">100</property>

\\这里不配置数据库连接信息,Spring整合Hibernate时配置c3p0数据库连接池
spring:------------------------------------------------------------

<?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: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/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/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 配置bean的自动扫描与装配 -->
<context:component-scan base-package="cn.xxx.proname"></context:component-scan>
<!-- 配置SessionFactory(整合Hibernate) -->
<context:property-placeholder location="classpath:jdbc.properties" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<property name="dataSource">
<bean class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 数据库连接信息 -->
<property name="jdbcUrl" value="${jdbcUrl}"></property>
<property name="driverClass" value="${driverClass}"></property>
<property name="user" value="${username}"></property>
<property name="password" value="${password}"></property>
<!-- 其他配置 -->
<property name="initialPoolSize" value="3"></property>
<property name="maxPoolSize" value="5"></property>
<property name="minPoolSize" value="3"></property>
<property name="acquireIncrement" value="2"></property>
<property name="maxStatements" value="8"></property>
<property name="maxStatementsPerConnection" value="5"></property>
<property name="maxIdleTime" value="20"></property>
</bean>
</property>
<!-- 指定hibernate的配置文件的位置 -->
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 配置基于注解的事务支持-->
<tx:annotation-driven transaction-manager="transactionManager"/>

jdbc.properties------------------------------------------------------------

jdbcUrl = jdbc:mysql:///xxx_proname
driverClass = com.mysql.jdbc.Driver
username = root
password = root

BaseDao:------------------------------------------------------------

public interface BaseDao<T> {
save(entity : T) : void
delete(id : Serializable) : void
update(entity : T) :void
getById(id : Serializable) : T
getByIds(ids : Serializable[]) : List<T>
findAll() : List<T>
}

BaseDaoImpl:------------------------------------------------------------

public class BaseDaoImpl<T> implements BaseDao<T> {

@Resource
protected SessionFactory sessionFactory;
protected Class<T> clazz;

public BaseDaoImpl() {
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
this.clazz = (Class)pt.getActualTypeArguments()[0];
}

public void save(T entity) {
getSession().save(entity);
}

public void delete(Serializable id) {
Object obj = getSession().get(clazz, id);
getSession().delete(obj);
}

public void update(T entity) {
getSession().update(entity);
}

public T getById(Serializable id) {
return (T) getSession().get(clazz, id);
}

public List<T> getByIds(Serializable[] ids) {
return getSession().createCriteria(clazz)//
.add(Restrictions.in("id", ids))//
.list();
}

public List<T> findAll() {
return getSession().createCriteria(clazz).list();
}

/**
* 获取当前可用的Session
*
* @return
*/
protected Session getSession() {
return sessionFactory.getCurrentSession();
}
}

实体映射:------------------------------------------------------------

多对一
<many-to-one name="" class="" column=""></many-to-one>

一对多(Set)
<set name="">
<key column=""></key>
<one-to-many class=""/>
</set>

多对多(Set)
<set name="" table="">
<key column=""></key>
<many-to-many class="" column=""></many-to-many>
</set>

action:------------------------------------------------------------

/** 列表 */
public String list() {
return "list";
}
/** 删除 */
public String delete() {
return "toList";
}
/** 添加页面 */
public String addUI() {
return "addUI";
}
/** 添加 */
public String add() {
return "toList";
}
/** 修改页面 */
public String editUI() {
return "editUI";
}
/** 修改 */
public String edit() {
return "toList";
}

在strtus.xml中配置:

<action name="xxxAction_*" class="xxxAction" method="{1}">
<result name="list">/WEB-INF/jsp/xxxAction/list.jsp</result>
<result name="addUI">/WEB-INF/jsp/xxxAction/addUI.jsp</result>
<result name="editUI">/WEB-INF/jsp/xxxAction/editUI.jsp</result>
<result name="toList" type="redirectAction">xxxAction_list</result>
</action>

\\声明:
@Controller
@Scope("prototype")
XxxAction extends ActionSupport implements ModelDriven<Xx> {
@Resource
private XxxService xxxService;
}
service & dao:------------------------------------------------------------
1,创建接口 XxxService extends BaseDao<Xxx>
2,创建实现类 XxxServiceImpl extends BaseDaoImpl<Xxx> implements XxxService

\\声明:
@Service
XxxServiceImpl {}
jsp:------------------------------------------------------------
1,列表页面
<s:iterator value="..">
<s:a>
list示例:

<s:iterator value="#roleList">
${name },
${description }<br/>
</s:iterator>

2,表单页面
<s:form>
<s:hidden>
<s:textfield>
<s:textarea>
<s:select>
<s:radio>
<s:checkboxlist>
...
<s:a>
对于添加与修改功能共用的页面saveUI.jsp中要有:

<s:form action="forumManageAction_%{id == null ? 'add' : 'edit'}">
<s:hidden name="id"></s:hidden>

...
------------------------------------------------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值