使用配置方式进行ssh的整合以及管理员管理的案例

一、Hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
   <session-factory>
   
   <!-- 数据库连接url地址 -->
        <property name="connection.url">
            jdbc:mysql://localhost:3306/spring
        </property>
        <!-- 数据库连接的用户名 -->
        <property name="connection.username">root</property>
        <!-- 数据库连接的用户密码 -->
        <property name="connection.password">root</property>
        <!-- 数据库连接驱动 -->
        <property name="connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
        <!-- 数据库方言 -->
        <property name="dialect">
            org.hibernate.dialect.MySQLDialect
        </property>

<!-- c3p0的配置 -->
        <!-- hibernate4.org.hibernate.c3p0.internal.C3P0ConnectionProvider -->
        <property name="hibernate.connection.provider_class">
            org.hibernate.c3p0.internal.C3P0ConnectionProvider
        </property>
        <!-- 最小数量 -->
        <property name="hibernate.c3p0.min_size">3</property>
        <!-- 最大数量 -->
        <property name="hibernate.c3p0.max_size">10</property>

<!--设定数据库连接的过期时间,以秒为单位, 如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 -->
        <property name="hibernate.c3p0.timeout">120</property>

<!--每3000秒检查所有连接池中的空闲连接 以秒为单位 -->
        <property name="hibernate.c3p0.idle_test_period">3000</property>

<!-- 当连接池耗尽并接到获得连接的请求,则新增加连接的数量 -->
        <property name="hibernate.c3p0.acquire_increment">5</property>

<!-- 缓存 Statement 对象的数量 -->
        <property name="hibernate.c3p0.max_statements">100</property>
        <!-- 是否每次连接都验证连接是否可用 -->
        <property name="hibernate.c3p0.validate">true</property>

<!-- 显示sql语句 -->
        <property name="hibernate.show_sql">true</property>

<!-- hbm2ddl -->
        <property name="hibernate.hbm2ddl.auto">update</property>

<!-- 映射文件 -->
        <mapping resource="com/buslines/domain/Admin.hbm.xml" />
   </session-factory>
</hibernate-configuration>

二、Spring相关配置

(1)applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    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.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
          http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
         http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

<!-- hibernate c3p0 sessionFactory -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="configLocation">
            <value>classpath:hibernate.cfg.xml</value>
        </property>
    </bean>

<!-- 创建模板对象 -->
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

<!-- 封装dao对象 -->
    <bean id="hibernateDaoSupport"
        class="org.springframework.orm.hibernate4.support.HibernateDaoSupport"
        abstract="true">
        <property name="hibernateTemplate" ref="hibernateTemplate" />
    </bean>

<!--事务管理器 -->
    <bean id="hibernateTransactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

<!-- 事务管理器的通知 -->
    <tx:advice id="txAdvice" transaction-manager="hibernateTransactionManager">
        <tx:attributes>
            <tx:method name="save*" isolation="DEFAULT" propagation="REQUIRED" />
            <tx:method name="update*" isolation="DEFAULT" propagation="REQUIRED" />
            <tx:method name="delete*" isolation="DEFAULT" propagation="REQUIRED" />
        </tx:attributes>
    </tx:advice>

<!-- aop配置 -->
    <aop:config>
        <aop:pointcut expression="execution(* com.buslines.service..*.*(..))"
            id="txpoint" />
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txpoint" />
    </aop:config>
    
    <import resource="spring-dao.xml"/>
    <import resource="spring-service.xml"/>
    <import resource="spring-action.xml"/>
</beans>

(2)spring-dao.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    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.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
          http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
         http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
        
        <!-- 配置dao对象 -->
        <bean id="baseDaoImpl" class="com.buslines.dao.impl.BaseDaoImpl" parent="hibernateDaoSupport"/>
        <bean id="adminDaoImpl" class="com.buslines.dao.impl.AdminDaoImpl" parent="baseDaoImpl"/>
</beans>

(3)spring-service.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx" 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.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
          http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
         http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

<!-- 配置dao对象 -->
    <bean id="baseServiceImpl" class="com.buslines.service.impl.BaseServiceImpl">
        <property name="baseDao" ref="baseDaoImpl" />
    </bean>
    <bean id="adminServiceImpl" class="com.buslines.service.impl.AdminServiceImpl" parent="baseServiceImpl">
        <property name="adminDao" ref="adminDaoImpl" />
    </bean>
</beans>

(4)spring-action.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    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.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
        
     <bean id="baseAction" class="com.buslines.action.BaseAction">
     <property name="baseService" ref="baseServiceImpl"/>
     </bean>
     
     <bean id="adminAction" class="com.buslines.action.AdminAction" parent="baseAction" scope="prototype">
       <property name="adminService" ref="adminServiceImpl"/>
     </bean>
</beans>

三、struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>

<constant name="struts.objectFactory" value="spring" />

<package name="admins" extends="json-default" namespace="/hytc">
        <interceptors>
            <!-- 定义一个自己的拦截器栈 -->
            <interceptor-stack name="mydefaultStack">
                <!-- 引入拦截器栈 -->
                <interceptor-ref name="paramsPrepareParamsStack">
                    <!-- 修改prepare拦截器栈的属性 -->
                    <param name="prepare.alwaysInvokePrepare">false</param>
                </interceptor-ref>
            </interceptor-stack>
        </interceptors>
        <!-- 让自己的action采用自己定义的拦截器栈 -->
        <default-interceptor-ref name="mydefaultStack" />

<action name="adminAction_*" class="adminAction" method="{1}">

<result name="login" type="json"></result>
            <result name="init">/WEB-INF/index.jsp</result>
            <result name="go">/WEB-INF/page/admin_select.jsp</result>

<result name="select" type="json">
                <!-- 忽略配置 -->
                <param name="ignoreHierarchy">false</param>
                <param name="root">pagination</param>
            </result>

<result name="save" type="json">
                <!-- 忽略配置 -->
                <param name="ignoreHierarchy">false</param>
                <param name="root">data</param>
            </result>
            <result name="update" type="json">
                <!-- 忽略配置 -->
                <param name="ignoreHierarchy">false</param>
                <param name="root">data</param>
            </result>
            <result name="delete" type="json">
                <!-- 忽略配置 -->
                <param name="ignoreHierarchy">false</param>
                <param name="root">data</param>
            </result>
        </action>
        </action>
    </package>

</struts>

四、web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>ssh</display-name>

<!-- 延迟关闭session 的顺序位于struts2过滤之上 否则延迟关闭session不起作用 -->
    <filter>  
         <filter-name>opensession</filter-name>  
          <filter-class>  
            org.springframework.orm.hibernate4.support.OpenSessionInViewFilter  
          </filter-class>  
           <init-param>    
               <param-name>flushMode</param-name>    
              <param-value>AUTO</param-value>    
         </init-param>   
          <init-param>    
               <param-name>singleSession</param-name>    
              <param-value>true</param-value>    
          </init-param>    
      </filter>  
      <filter-mapping>  
         <filter-name>opensession</filter-name>  
         <url-pattern>/*</url-pattern>  
     </filter-mapping>

<!-- 启动struts的配置 -->
    <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

<filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

<!-- 监听器来加载spring的配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

<welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
</web-app>

五、相关接口和实现

(一)Dao

(1)BaseDao
public interface BaseDao {

/**
     * 保存实体对象
     * @param entity
     * @return
     */
    Serializable save(Object entity);

/**
     * 保存或者更新实体对象
     * @param entity
     */
    void saveOrUpdate(Object entity);

/**
     * 更新实体对象
     * @param entity
     */
    void update(Object entity);
    
    /**
     * 删除实体对象
     * @param entity
     */
    void delete(Object entity);
    
    /**
     * 根据id删除实体对象
     * @param clazz
     * @param id
     */
    void deleteById(final Class clazz,Integer id);
    
    /**
     * 更具id查询实体对象
     * @param id
     * @return
     */
    Object getObject(Class clazz,Integer id);

/**
     * 查询所有实体对象
     * @param clazz
     * @return
     */
    List getObjects(final Class clazz);

/**
     * 分页查询实体对象
     * @param clazz
     * @param firstResult
     * @param MaxResults
     * @return
     */
    List getObjects(final Class clazz, final int firstResult,
            final int maxResults);
    
    
    /**
     * 获取总记录数
     * @param clazz
     * @return
     */
    Integer getCount(final Class clazz);

/**
     * 条件查询分页实体对象
     * @param clazz
     * @param whereSql
     * @param firstResult
     * @param MaxResults
     * @return
     */
    List getObjects(final Class clazz, final String whereSql,
            final int firstResult, final int maxResults);
    
    /**
     * 条件的获取总记录数
     * @param clazz
     * @return
     */
    Integer getCount(final Class clazz,final String whereSql);
    
    /**
     * 条件查询分页实体对象并且有排序的字段
     * @param clazz
     * @param whereSql
     * @param firstResult
     * @param MaxResults
     * @return
     */
    List getObjects(final Class clazz, final String whereSql,
            final int firstResult, final int maxResults,final String sort,final String order);
    
    
    
    //boolean checkColumn(final Class clazz,final String value);

}

(2)AdminDao
public interface AdminDao extends BaseDao{

}

(3)BaseDaoImpl

public class BaseDaoImpl extends HibernateDaoSupport implements BaseDao {

@Override
    public Serializable save(Object entity) {
        return getHibernateTemplate().save(entity);
    }

@Override
    public void saveOrUpdate(Object entity) {
        getHibernateTemplate().saveOrUpdate(entity);

}

@Override
    public void update(Object entity) {
        getHibernateTemplate().update(entity);

}

@Override
    public void delete(Object entity) {
        getHibernateTemplate().delete(entity);

}

@Override
    public void deleteById(final Class clazz, final Integer id) {
        delete(getHibernateTemplate().get(clazz, id));
    }

/**
     * hql QBC 本定sql 等
     */
    @Override
    public List getObjects(final Class clazz) {
        return getHibernateTemplate().execute(new HibernateCallback<List>() {

@Override
            public List doInHibernate(Session session)
                    throws HibernateException {
                
                return session.createCriteria(clazz).list();
            }
        });
    }

@Override
    public List getObjects(final Class clazz, final int firstResult,
            final int maxResults) {
        return getHibernateTemplate().execute(new HibernateCallback<List>() {

@Override
            public List doInHibernate(Session session)
                    throws HibernateException {
                return session.createCriteria(clazz)
                        .setFirstResult(firstResult).setMaxResults(maxResults)
                        .list();
            }
        });
    }

@Override
    public Integer getCount(final Class clazz) {

return getHibernateTemplate().execute(new HibernateCallback<Integer>() {

@Override
            public Integer doInHibernate(Session session)
                    throws HibernateException {
                return Integer.valueOf(session
                        .createQuery(
                                " select count(e) from " + clazz.getName()
                                        + " as e ").uniqueResult().toString());
            }
        });
    }

@Override
    public List getObjects(final Class clazz, final String whereSql,
            final int firstResult, final int maxResults) {
        return getHibernateTemplate().execute(new HibernateCallback<List>() {

@Override
            public List doInHibernate(Session session)
                    throws HibernateException {
                return session
                        .createQuery(
                                " from " + clazz.getName() + " as e "
                                        + whereSql).setFirstResult(firstResult)
                        .setMaxResults(maxResults).list();
            }
        });
    }

@Override
    public Integer getCount(final Class clazz, final String whereSql) {
        return getHibernateTemplate().execute(new HibernateCallback<Integer>() {

@Override
            public Integer doInHibernate(Session session)
                    throws HibernateException {
                return Integer.valueOf(session
                        .createQuery(
                                " select count(e) from " + clazz.getName()
                                        + " as e " + whereSql).uniqueResult()
                        .toString());
            }
        });
    }

@Override
    public List getObjects(final Class clazz, final String whereSql,
            final int firstResult, final int maxResults, final String sort,
            final String order) {
        return getHibernateTemplate().execute(new HibernateCallback<List>() {

@Override
            public List doInHibernate(Session session)
                    throws HibernateException {
                return session
                        .createQuery(
                                " from " + clazz.getName() + " as e "
                                        + whereSql + " order by " + sort + " "
                                        + order).setFirstResult(firstResult)
                        .setMaxResults(maxResults).list();
            }
        });
    }

@Override
    public Object getObject(Class clazz, Integer id) {
        return getHibernateTemplate().get(clazz, id);
    }

}

(4)AdminDaoImpl

public class AdminDaoImpl extends BaseDaoImpl implements AdminDao{

}

(二)Service

(1)BaseService

public interface BaseService {

/**
     * 保存实体对象
     * @param entity
     * @return
     */
    Serializable save(Object entity);

/**
     * 保存或者更新实体对象
     * @param entity
     */
    void saveOrUpdate(Object entity);

/**
     * 更新实体对象
     * @param entity
     */
    void update(Object entity);
    
    /**
     * 删除实体对象
     * @param entity
     */
    void delete(Object entity);
    
    /**
     * 根据id删除实体对象
     * @param clazz
     * @param id
     */
    void deleteById(final Class clazz,Integer id);

/**
     * 更具id查询实体对象
     * @param id
     * @return
     */
    Object getObject(Class clazz,Integer id);

/**
     * 查询所有实体对象
     * @param clazz
     * @return
     */
    List getObjects(final Class clazz);

/**
     * 分页查询实体对象
     * @param clazz
     * @param firstResult
     * @param MaxResults
     * @return
     */
    List getObjects(final Class clazz, final int firstResult,
            final int MaxResults);
    
    
    /**
     * 获取总记录数
     * @param clazz
     * @return
     */
    Integer getCount(final Class clazz);

/**
     * 条件查询分页实体对象
     * @param clazz
     * @param whereSql
     * @param firstResult
     * @param MaxResults
     * @return
     */
    List getObjects(final Class clazz, final String whereSql,
            final int firstResult, final int maxResults);
    
    /**
     * 条件的获取总记录数
     * @param clazz
     * @return
     */
    Integer getCount(final Class clazz,final String whereSql);
    
    /**
     * 条件查询分页实体对象并且有排序的字段
     * @param clazz
     * @param whereSql
     * @param firstResult
     * @param MaxResults
     * @return
     */
    List getObjects(final Class clazz, final String whereSql,
            final int firstResult, final int maxResults,final String sort,final String order);
    
    /**
     * 批量删除实体bean
     * @param ids
     */
    void deleteObjects(Class clazz,String ids);
}

(2)AdminService

public interface AdminService extends BaseService {
    
}

(3)BaseServiceImpl

public class BaseServiceImpl implements BaseService {
    private BaseDao baseDao;

public void setBaseDao(BaseDao baseDao) {
        this.baseDao = baseDao;
    }

@Override
    public Serializable save(Object entity) {
        // TODO Auto-generated method stub
        return baseDao.save(entity);
    }

@Override
    public void saveOrUpdate(Object entity) {
        baseDao.saveOrUpdate(entity);

}

@Override
    public void update(Object entity) {
        baseDao.update(entity);

}

@Override
    public void delete(Object entity) {
        baseDao.delete(entity);

}

@Override
    public void deleteById(Class clazz, Integer id) {
        baseDao.deleteById(clazz, id);

}

@Override
    public List getObjects(Class clazz) {
        return baseDao.getObjects(clazz);
    }

@Override
    public List getObjects(Class clazz, int firstResult, int maxResults) {
        return baseDao.getObjects(clazz, firstResult, maxResults);
    }

@Override
    public Integer getCount(Class clazz) {
        return baseDao.getCount(clazz);
    }

@Override
    public List getObjects(Class clazz, String whereSql, int firstResult,
            int maxResults) {
        return baseDao.getObjects(clazz, whereSql, firstResult, maxResults);
    }

@Override
    public Integer getCount(Class clazz, String whereSql) {
        return baseDao.getCount(clazz, whereSql);
    }

@Override
    public List getObjects(Class clazz, String whereSql, int firstResult,
            int maxResults, String sort, String order) {
        return baseDao.getObjects(clazz, whereSql, firstResult, maxResults,
                sort, order);
    }

@Override
    public Object getObject(Class clazz, Integer id) {
        // TODO Auto-generated method stub
        return baseDao.getObject(clazz, id);
    }

@Override
    public void deleteObjects(Class clazz, String ids) {
        // 拆分ids的字符串1,2,13
        String idarr[] = ids.split(",");
        if (idarr.length == 1) {
            baseDao.delete(baseDao.getObject(clazz, Integer.valueOf(idarr[0])));
        } else {
            for (int i = 0; i < idarr.length; i++) {
                baseDao.delete(baseDao.getObject(clazz,
                        Integer.valueOf(idarr[i])));
            }
        }

}

}

(4)AdminServiceImpl

public class AdminServiceImpl extends BaseServiceImpl implements AdminService{
    private AdminDao adminDao;
    
    public void setAdminDao(AdminDao adminDao) {
        this.adminDao = adminDao;
    }
}
六、action实现

(1)BaseAction

public class BaseAction extends ActionSupport implements ServletContextAware,
        ServletRequestAware, SessionAware {

// 封装servlet有关的api
    public ServletContext application;
    public HttpServletRequest request;
    public Map session;

// 分页对象
    public Pagination pagination;
    
    
    public BaseService baseService;

// 当前页
    public int page;
    // 每页显示的记录数
    public int rows;
    
    public Serializable data;
    
    public Integer id;
    
    public String ids;
    
    public void setIds(String ids) {
        this.ids = ids;
    }
    public void setId(Integer id) {
        this.id = id;
    }

public Serializable getData() {
        return data;
    }

public void setPage(int page) {
        this.page = page;
    }

public void setRows(int rows) {
        this.rows = rows;
    }

public Pagination getPagination() {
        return pagination;
    }

@Override
    public void setSession(Map<String, Object> session) {
        this.session = session;

}

@Override
    public void setServletRequest(HttpServletRequest request) {
        this.request = request;

}

@Override
    public void setServletContext(ServletContext application) {
        this.application = application;

}
    
    public void setBaseService(BaseService baseService) {
        this.baseService = baseService;
    }
    
    
    /**
     *转发界面
     */
    public String go(){
        return "go";
    }

}

(2)AdminAction

public class AdminAction extends BaseAction implements ModelDriven<Admin>,Preparable{

private AdminService adminService;

private String name;
    
    private Admin entity;

public void setEntity(Admin entity) {
        this.entity = entity;
    }

public void setName(String name) {
        this.name = name;
    }

public void setAdminService(AdminService adminService) {
        this.adminService = adminService;
    }
    
    public String save(){
        data = adminService.save(entity);
        return "save";
    }
    
    
    public String update(){
        System.out.println(entity.toString());
        adminService.update(entity);
        System.out.println("update");
        return "update";
    }

public String delete(){
        adminService.deleteObjects(Admin.class,ids);
        return "delete";
    }
    public String select() {

// 组合sql语句的操作
        String sql = spliceWhereSql();
        // 获取总记录数
        // 调用baseDao中的baseService
        long total = adminService.getCount(Admin.class, sql);
        // 创建分页对象
        pagination = new Pagination(page, rows, total);
        // 获取开始的记录数
        int firstResult = (int) pagination.getStartSize();
        // 获取每页显示的记录数
        int maxResults = rows;
        // 查询当前页中的信息
        List rows = adminService.getObjects(Admin.class, sql, firstResult,
                maxResults);
        // 设置查询出来信息 赋值给当前页对象
        pagination.setRows(rows);
        return "select";
    }

/**
     * 组合拼接sql语句的 版权归redarmychen所有 hj
     *
     * @return
     */
    private String spliceWhereSql() {
        // 定义sql语句
        String whereSql = " where 1=1 ";
        // 拼接sql语句
        if (name != null && !"".equals(name)) {
            whereSql = whereSql + " and name like ‘%" + name + "%‘ ";
        }
        // 返回sql语句
        return whereSql;
    }

/**
     * 登录操作
     *
     * @return
     */
    public String login() {
        return SUCCESS;
    }

/**
     * 登录成功的初始化操作
     *
     * @return
     */
    public String init() {
        return "init";
    }

@Override
    public void prepare() throws Exception {
        // TODO Auto-generated method stub
        
    }
    
    
    
    public void prepareSave() throws Exception {
        entity = new Admin();
    }
    
    public void prepareUpdate() throws Exception {
        // 如果页面中传入的参数与数据库中的字段完全一致,则只需要new一个新的对象,否则调用
        // adminService.getObject(Category.class, id)这个方法查询数据,返回这个对象即可
        entity = (Admin) adminService.getObject(Admin.class, id);
    }

@Override
    public Admin getModel() {
        // TODO Auto-generated method stub
        return entity;
    }

}

七、页面显示

admin_select.jsp

<!-- easyui的样式文件 -->
<link rel="stylesheet" type="text/css"
    href="./themes/default/easyui.css">
<!-- 图标样式的文件 -->
<link rel="stylesheet" type="text/css"
    href="${pageContext.request.contextPath }/themes/icon.css">
<!-- 引入jquery easyui文件 -->
<!-- jQuery文件 -->
<script type="text/javascript"
    src="${pageContext.request.contextPath }/js/easyui/jquery.min.js"></script>
<!-- jQuery easyui的文件 -->
<script type="text/javascript"
    src="${pageContext.request.contextPath }/js/easyui/jquery.easyui.min.js"></script>
<!-- 自定义js文件 -->
<script type="text/javascript"
    src="${pageContext.request.contextPath }/js/admin/admin.js"></script>
</head>

<body class="easyui-layout" data-options="fit:true">
    <div data-options="region:‘north‘" style="height:40px">
        <div style="margin-top: 5px">
              用户名:<input type="text" id="aname"/>
              <input type="button" id="searchBtn" value="搜索"/>
        </div>
    </div>
    <div data-options="region:‘center‘,fit:true">
      <table id="dg"></table>
    </div>
<!-- 用户的添加对话框开始 -->
    <div id="adddlg" style="width:400px">
        <div style="padding:10px 60px 20px 60px">
            <form id="addff" class="easyui-form" method="post"
                data-options="novalidate:false">
                <table cellpadding="5">
                    <tr>
                        <td>用户名:</td>
                        <td><input class="easyui-textbox" type="text" name="name"
                            data-options="required:true,validType:{checkName:[]}" ></input></td>
                    </tr>
                    <tr>
                        <td>密码:</td>
                        <td><input class="easyui-textbox" name="pass"
                            data-options="required:true" ></input></td>
                    </tr>
                </table>
            </form>
        
        </div>
    </div>

<!-- 用户的添加对话框结束 -->

<!--用户的更新对话框开始 -->
    <div id="updatedlg" style="width:400px">
        <div style="padding:10px 60px 20px 60px">
            <form id="updateff" class="easyui-form" method="post"
                data-options="novalidate:false">
                <table cellpadding="5">
                <input type="hidden" name="id"/>
                    <tr>
                        <td>用户名:</td>
                        <td><input class="easyui-textbox" type="text" name="name"
                            data-options="required:true"></input></td>
                    </tr>
                    
                    <tr>
                        <td>密码:</td>
                        <td><input class="easyui-textbox" name="pass"
                            data-options="required:true" ></input></td>
                    </tr>
        
                </table>
            </form>
        </div>
    </div>

<!-- 类别的更新对话框结束 -->
</body>

admin.js

// 搜索的地址
var searchUrl = "./hytc/adminAction_select.action"; // page=3
var saveUrl = "./hytc/adminAction_save.action";
var deleteUrl = "./hytc/adminAction_delete.action";
var updateUrl = "./hytc/adminAction_update.action";
//查询条件
var queryParams = null;
// 当文档加载完毕,然后触发该匿名函数
$(document).ready(function() {
    initDialog();
    // 初始化数据
    initData();
    //获取按钮对象
    var $searchBtn=$("#searchBtn");
    //注册事件
    $searchBtn.click(function(){
        //获取输入的条件值
        var value=$("#aname").val();
        //查询条件
        queryParams={name:value};
        //重新初始化数据
        initData();
    });
});
/**
 * 初始化对话框
 */
function initDialog() {
    $(‘#adddlg‘).dialog({
        title : ‘添加用户‘,
        width : 400,
        closed : true,
        cache : false,
        modal : true,
        buttons : [ {
            text : ‘添加‘,
            iconCls : ‘icon-ok‘,
            handler : function() {
                // 调用添加的方法
                submitAddForm();

}
        }, {
            text : ‘取消‘,
            iconCls : ‘icon-cancel‘,
            handler : function() {
                // 取消添加,关闭对话框
                $(‘#adddlg‘).dialog(‘close‘);
            }
        } ]
    });
//更新用户
    $(‘#updatedlg‘).dialog({
        title : ‘更新用户‘,
        width : 400,
        closed : true,
        cache : false,
        modal : true,
        buttons : [ {
            text : ‘更新‘,
            iconCls : ‘icon-ok‘,
            handler : function() {
                // 调用更新的方法
                submitUpdateForm();
            }
        }, {
            text : ‘取消‘,
            iconCls : ‘icon-cancel‘,
            handler : function() {
                // 取消更新,关闭对话框
                $(‘#updatedlg‘).dialog(‘close‘);
            }
        } ]
    });
}
/**
 * 初始化数据
 */
function initData() {
    
    // 显示数据
    $(‘#dg‘).datagrid({
        url : searchUrl, // 请求的url地址 每次请求都会附带 page:当前页,page=3&rows=10;
        // rows:每页显示记录数
        queryParams : queryParams,
        method : "post", // 请求的方式
        //height:300,
        pageSize : 3, // 每页显示的数量
        pageList : [ 3, 5, 10, 15 ], // 可选的每页显示的数量的集合
        pagination : true, // 添加分页效果
        loadMsg : "正在加载数据,请稍候",
        singleSelect : false, // 可以选择多行
        columns : [ [ {
            field : ‘cbk‘,
            title : "全选",
            width : 100,
            checkbox : true
        }, {
            field : "id",
            title : "序号",
            width : 100
        }, {
            field : "name",
            title : "用户名称",
            width : 100
        },

{
            field : "pass",
            title : "密码",
            width : 100,
            align : "right"
        } ] ],
        toolbar : [ {
            iconCls : "icon-add",
            text : "添加用户",
            handler : function() {
                // 调用添加用户的函数
                newObject();
                $(‘#selectrole‘).combobox({
                    url :selectRoleUrl,
                    valueField : ‘id‘,
                    textField : ‘name‘,
                    loadFilter:function(data){
                        return data.roles;
                    }
                });
            }
        }, {
            iconCls : "icon-edit",
            text : "编辑用户",
            handler : function() {
                editObject();// 调用编辑方法
            }
        },

{
            iconCls : "icon-remove",
            text : "删除用户",
            handler : function() {
                deleteObject();
            }
        }, {
            iconCls : "icon-help",
            text:"帮助",
            handler : function() {
                alert("帮助按钮");
            }
        } ],
    });

// 通过getPager方法 获取分页的对象
    var pager = $("#dg").datagrid("getPager");

// 重新设置分页对象的值
    pager.pagination({
        pageSize : 3,// 每页显示的数量
        pageList : [ 3, 5, 10, 15 ],// 可选的每页显示的数量的集合
        beforePageText : "当前页", // 文本
        afterPageText : "共{pages}页", // 文本
        displayMsg : "当前页从{from}到{to}共{total}记录"// 文本
    });
}

// 添加用户
function newObject() {
    // 清空form表单
    $(‘#addff‘).form(‘clear‘);
    // 打开添加的对话框
    $(‘#adddlg‘).dialog(‘open‘);
}

// 提交对话框中的form表单,完成用户的添加
function submitAddForm() {
    $(‘#addff‘).form({
        url : saveUrl,
        onSubmit : function() {
            // do some check
            // return false to prevent submit;
            return $(this).form(‘validate‘);
        },
        success : function(data) {
            if (data > 0) {
                // 添加成功,关闭对话框
                $(‘#adddlg‘).dialog(‘close‘);
                $("#dg").datagrid("reload");
                show("用户添加成功");
            } else {
                show("用户添加失败");
            }
        }
    });
    // submit the form
    $(‘#addff‘).submit();
}

// 提交对话框中的form表单,完成用户的更新
function submitUpdateForm() {
    $(‘#updateff‘).form({
        url : updateUrl,
        onSubmit : function() {
            return $(this).form(‘validate‘);
        },
        success : function() {
            // 更新成功,关闭对话框
            $(‘#updatedlg‘).dialog(‘close‘);
            $("#dg").datagrid("reload");
            show("用户更新成功");
        }
    });
    // submit the form
    $(‘#updateff‘).submit();
}

// 获取多行
function getSelections() {
    var ids = [];
    // 获取选中的行
    var rows = $(‘#dg‘).datagrid(‘getSelections‘);
    // 遍历选中的行
    for (var i = 0; i < rows.length; i++) {
        // 得到具体的行对象
        var row = rows[i];
        // 得到该行的id值,存入到ids数组中
        ids.push(row.id);
    }
    return ids;
}

// 删除用户
function deleteObject() {
    // 获取要删除行对应id的集合
    var ids = getSelections();
    if (ids.length == 0) {
        show("请选择要删除的用户");
    } else {
        $.messager.confirm(‘确认‘,‘你确定要删除该用户信息吗?‘,function(r){
            if(r){
                // 发送ajax请求
                $.post(deleteUrl, {
                    ids : ids.join(",")
                }, function(data) {
                    
                        // 重新加载datagrid数据
                        $("#dg").datagrid("reload");
                        show("用户删除成功");
                    
                }, "json");
            }else{
                show("取消删除操作");
            }
        });
        
    }
}
// 编辑用户
function editObject() {
    // 获取选中的所有的行
    var rows = $(‘#dg‘).datagrid(‘getSelections‘);
    // 判断rows大小
    if (rows.length == 0) {
        show("请选择要编辑的用户");
    } else if (rows.length == 1) {
        var row = rows[0];// 获取选中行的对象
        // 重新加载form表单数据
        loadLocal(row);
        $(‘#updatedlg‘).dialog(‘open‘);
    } else {
        show("请选择单行");
    }

/*     var row = $(‘#dg‘).datagrid(‘getSelected‘);
     if (row){
    $(‘#dlg‘).dialog(‘open‘).dialog(‘setTitle‘,‘Edit User‘);
     $(‘#fm‘).form(‘load‘,row); url = ‘update_user.php?id=‘+row.id; }*/
    
}

/**
 * 重新加载方法
 * @param row
 */
function loadLocal(row) {
    $(‘#updateff‘).form(‘load‘, {
        id : row.id,
        name : row.name,
        pass : row.pass,
    });
}

//弹出消息框
function show(msg) {
    $.messager.show({
        // 高度
        height : 80,
        // 消息框的标题
        title : "信息提示",
        msg : msg,
        // 消息框弹出的样式
        showType : ‘slide‘,
        // 居中弹出消息框
        style : {
            right : ‘‘,
            top : document.body.scrollTop + document.documentElement.scrollTop
                    + 200,
            bottom : ‘‘
        },
        // 设置消息框的过期时间
        timeout : 600
    });
}

时间: 2024-11-06 17:47:25

使用配置方式进行ssh的整合以及管理员管理的案例的相关文章

SSH整合(配置方式)

工程目录: /SSH1/src/cn/itcast/domain/Book.java package cn.itcast.domain; /** * 图书 */ public class Book { private Integer id; // 图书编号 private String name; // 图书名称 private Double price; // 图书价格 public Integer getId() { return id; } public void setId(Intege

SSH框架整合的其它方式

--------------------siwuxie095 SSH 框架整合的其它方式 1.主要是整合 Spring 框架和 Hibernate 框架时,可以不写 Hibernate 核心配置文件:hibernate.cfg.xml 2.把Hibernate 核心配置文件中的配置全都转移到 Spring 核心配置文件中 3.具体实现 applicationContext.xml: <?xml version="1.0" encoding="UTF-8"?&g

spring,springmvc,mybatis基本整合(一)--xml文件配置方式(2)

spring,springmvc,mybatis基本整合(一)–xml文件配置方式(2)之mapper接口 一,整合结构 二,所需jar包 如上图. 三,整合配置 1,web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://j

SSH框架整合所需jar包及文件配置

Hibernate 版本:hibernate-release-4.3.8.Final 核心jar包:\lib\required antlr-2.7.7 dom4j-1.6.1 hibernate-commons-annotations-4.0.5.Final hibernate-core-4.3.8.Final hibernate-jpa-2.1-api-1.0.0.Final jandex-1.1.0.Final javassist-3.18.1-GA jboss-logging-3.1.3.

配置github的SSH key及GitHub项目上传方式一——使用终端命令行

GitHub是一个开源的大仓库,我们经常从github上下载项目进行学习和研究,下面是一个完整的步骤--往GitHub上传一个新项目. 一.注册GitHub账号 1.注册GitHub账号,地址:https://github.com 注册账户 账户选择 2.登录: 登录.png 3.登录之后的页面,是我们star其他人的一些信息,类似于QQ空间的好友状态 D2A62592-D46E-43B8-82B5-1628131CBC67.png 二.配置GitHub的SSH key 1.查看系统中是否配置过

SSH框架整合demo

Struts.Spring.Hibernate整合 一.创建web工程,搭建Struts框架开发环境: 这里只导入了项目中所需要的重要的jar包,以后根据业务要求继续导入相关的包. 步骤1::导入struts框架所需的jar包 步骤2:在web.xml中配置struts2.0主过滤器 步骤3:导入struts.xml配置文件 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app versio

SSH框架整合过程总结

---------------------siwuxie095 SSH 框架整合过程总结 (一)导入相关 jar 包(共 41 个) 1.导入 Spring 的核心 jar 包和日志相关的 jar 包(6 个) Commons Logging 下载链接: http://commons.apache.org/proper/commons-logging/download_logging.cgi LOG4J 下载链接: https://www.apache.org/dist/logging/log4

SSH框架整合

ssh框架整合步骤如下 提示:myeclipse环境.工程环境.tomcat环境的jdk保持一致 1.新建一个工程,把工程的编码为utf-8 2.把jsp的编码形式改成utf-8 3.把jar包放入到lib下 4.建立三个src folder src 存放源代码 config 存放配置文件 hibernate 存放hibernate的配置文件 spring 存放spring的配置文件 struts 存放struts的配置文件 struts.xml test 存放单元测试 5.在src下建立包 c

【转】SSH中 整合spring和proxool 连接池

[摘要:比来做的一个项目中应用到了毗邻池技巧,大概我们人人比拟认识的开源毗邻池有dbcp,c3p0,proxool.对那三种毗邻池来讲,从机能战失足率来讲,proxool轻微比前两种好些.本日我首要简略] 最近做的一个项目中运用到了连接池技术,可能我们大家比较熟悉的开源连接池有dbcp,c3p0,proxool.对这三种连接池来说,从性能和出错率来说,proxool稍微比前两种好些.今天我主要简单的讲述一下proxool,我在项目中成功的配置和源码. 第一步:首先去http://proxool.