1. maven ssh搭建
jar冲突maven处理
spring配置:c3p0,sessionfactory,transactionManager
c3p0 :
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${user}"></property>
<property name="password" value="${password}"></property>
<property name="driverClass" value="${driverClass}"></property>
<property name="jdbcUrl" value="${url}"></property>
<property name="initialPoolSize" value="${init}"></property>
<property name="maxPoolSize" value="${max}"></property>
</bean>
sessionFactory : 不适用原配置文件+自动扫描entrty配置文件
<bean id="SessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="javax.persistence.validation.mode">none</prop>
</props>
</property>
<property name="mappingLocations">
<list>
<value>classpath:com/vincent/ssh/*/entity/*.hbm.xml</value>
</list>
</property>
</bean>
transactionManager : 使用注解式事务
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="SessionFactory"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
web.xml配置:struts拦截器,springstruts监听器
2. 业务分层+抽取常用方法Base层+资源文件分类
Dao→Service→Action:除Action外全部从接口开始编写
BaseDao:第一次实用反射,Entry,继承HibernateDaoSupport实现CRUD基础业务(save,update,delete,list,findById)
public interface BaseDao<T> {
public void save(T entity);
public void update(T entity);
public void delete(Serializable id);
public T findObjectById(Serializable id);
public List<T> findAll();
}
实现类用Spring注入继承类要用的SessionFactory
<bean id="xDao" abstract="true">
<property name="sessionFactory" ref="SessionFactory"></property>
</bean>
<bean id="userDao" class="com.vincent.ssh.user.dao.impl.UserDaoImpl" parent="xDao">
</bean>
(继承父bean配置方便资源文件分类)
BaseAction:抽取页面会用到的公共属性(全选集合,分页相关元素?:尚未接触)
public abstract class BaseAction extends ActionSupport {
protected String[] selectedRow;
3. struts-spring插件
由监听器实现?(大概),action类的创建由Spring负责处理,自用引入有@Resource注解的元素
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
Action类本身没有添加注解或被扫描
package com.vincent.ssh.user.action;
import com.vincent.ssh.user.service.UserService;
public class UserAction extends BaseAction {
@Resource
private UserService userService;
4. 琐碎
(1):jq的获取input值
$('#表单id').val();
(2):js设置响应action与控制表单提交
document.form[0].action = "url";
document.form[0].submit(); (form获取页面所有表单,下标选择类似数组)
(3):ognl获取栈顶属性不需要加任何标识符;List对象同理,在内指定value后取出内部类值可直接写属性名
用户名:<s:textfield name="user.name" cssClass="s_text" id="userName" cssStyle="width:160px;"/>
<s:iterator value="userList" status="st">
<tr <s:if test="#st.odd">bgcolor="f8f8f8"</s:if>>
<td align="center"><input type="checkbox" name="selectedRow" value="<s:property value="id"/>"/></td>
<td align="center"><s:property value="name"/></td>
<td align="center"><s:property value="account"/></td>
<td align="center"><s:property value="dept"/></td>
<td align="center"><s:property value="gender?'男':'女'"/></td>
<td align="center"><s:property value="email"/></td>
<td align="center">
<a href="javascript:doEdit('<s:property value="id"/>')">编辑</a>
<a href="javascript:doDelete('<s:property value="id"/>')">删除</a>
</td>
</tr>
</s:iterator>
(4):标签实际应用,例子为单数行加背景
<s:iterator value="userList" status="st">
<tr <s:if test="#st.odd">bgcolor="f8f8f8"</s:if>>
(5):jsp页面的Map定义法(struts限定?)
<s:select name="user.dept" list="#{'部门A':'部门A','部门B':'部门B'}"/>
(6):js方法传值+action请求?传值
传:
<a href="javascript:doEdit('<s:property value="id"/>')">编辑</a>
接收:
function doEdit(id){
document.forms[0].action = "${basePath}ssh/user_editUI.action?user.id="+ id;
document.forms[0].submit();
}
Action方接收:user.id自动装填到User类内的id属性