zoukankan      html  css  js  c++  java
  • 案例43-crm练习获取客户列表使用struts2

    1 src下配置文件

    1 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>
        <!-- 指定struts2是否以开发模式运行
                1.热加载主配置.(不需要重启即可生效)
                2.提供更多错误信息输出,方便开发时的调试
         -->
        <constant name="struts.devMode" value="true"></constant>
        <package name="crm" namespace="/" extends="struts-default" >
            <action name="CustomerAction_*" class="www.test.web.action.CustomerAction" method="{1}" >
                <result name="list" >/jsp/customer/list.jsp</result>
            </action>
        </package>
    </struts>
    View Code

    2 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>
        
            <!-- 
            #hibernate.dialect org.hibernate.dialect.MySQLDialect
            #hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
            #hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect
            #hibernate.connection.driver_class com.mysql.jdbc.Driver
            #hibernate.connection.url jdbc:mysql:///test
            #hibernate.connection.username gavin
            #hibernate.connection.password
             -->
             <!-- 数据库驱动 -->
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
             <!-- 数据库url -->
            <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
             <!-- 数据库连接用户名 -->
            <property name="hibernate.connection.username">root</property>
             <!-- 数据库连接密码 -->
            <property name="hibernate.connection.password">root</property>
            <!-- 数据库方言
                不同的数据库中,sql语法略有区别. 指定方言可以让hibernate框架在生成sql语句时.针对数据库的方言生成.
                sql99标准: DDL 定义语言  库表的增删改查
                          DCL 控制语言  事务 权限
                          DML 操纵语言  增删改查
                注意: MYSQL在选择方言时,请选择最短的方言.
             -->
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
            
            
            <!-- #hibernate.show_sql true 
                 #hibernate.format_sql true
            -->
            <!-- 将hibernate生成的sql语句打印到控制台 -->
            <property name="hibernate.show_sql">true</property>
            <!-- 将hibernate生成的sql语句格式化(语法缩进) -->
            <property name="hibernate.format_sql">true</property>
            <!-- 
            ## auto schema export  自动导出表结构. 自动建表
            #hibernate.hbm2ddl.auto create        自动建表.每次框架运行都会创建新的表.以前表将会被覆盖,表数据会丢失.(开发环境中测试使用)
            #hibernate.hbm2ddl.auto create-drop 自动建表.每次框架运行结束都会将所有表删除.(开发环境中测试使用)
            #hibernate.hbm2ddl.auto update(推荐使用) 自动生成表.如果已经存在不会再生成.如果表有变动.自动更新表(不会删除任何数据).
            #hibernate.hbm2ddl.auto validate    校验.不自动生成表.每次启动会校验数据库中表是否正确.校验失败.
             -->
            <property name="hibernate.hbm2ddl.auto">update</property>
            
             <!-- 指定hibernate操作数据库时的隔离级别 
                #hibernate.connection.isolation 1|2|4|8        
                0001    1    读未提交
                0010    2    读已提交
                0100    4    可重复读
                1000    8    串行化
             -->
             <property name="hibernate.connection.isolation">4</property>
             
             <!-- 指定session与当前线程绑定 -->
             <property name="hibernate.current_session_context_class">thread</property>
             
            <!-- 引入orm元数据
                路径书写: 填写src下的路径
             -->
            <mapping resource="www/test/domain/Customer.hbm.xml" />
            <mapping resource="www/test/domain/LinkMan.hbm.xml" />
            
        </session-factory>
    </hibernate-configuration>
    View Code

    2 web层

    1 web.action下的CustomerAction

    package www.test.web.action;
    
    import java.util.List;
    
    import org.apache.commons.lang3.StringUtils;
    import org.apache.struts2.ServletActionContext;
    import org.hibernate.criterion.DetachedCriteria;
    import org.hibernate.criterion.Restrictions;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    import www.test.domain.Customer;
    import www.test.service.CustomerService;
    import www.test.service.impl.CustomerServiceImpl;
    
    public class CustomerAction extends ActionSupport {
        private CustomerService cs = new CustomerServiceImpl();
        
        public String list() throws Exception {
            //1 接受参数
            String cust_name = ServletActionContext.getRequest().getParameter("cust_name");
            //2 创建离线查询对象
            DetachedCriteria dc =DetachedCriteria.forClass(Customer.class);
            //3 判断参数拼装条件
            if(StringUtils.isNotBlank(cust_name)){
                dc.add(Restrictions.like("cust_name", "%"+cust_name+"%"));
            }
            //4 调用Service将离线对象传递
            List<Customer> list = cs.getAll(dc);
            //5 将返回的list放入request域.转发到list.jsp显示
            ServletActionContext.getRequest().setAttribute("list", list);
            return "list";
        }
    }

    3 service层

    public List<Customer> getAll(DetachedCriteria dc) {
        Session session =  HibernateUtils.getCurrentSession();
        //打开事务
        Transaction tx = session.beginTransaction();
        List<Customer> list = customerDao.getAll(dc);
        //关闭事务
        tx.commit();
        return list;
    }

    4 dao层

    public List<Customer> getAll(DetachedCriteria dc) {
        //1 获得session
        Session session = HibernateUtils.getCurrentSession();
        //2 将离线对象关联到session
        Criteria c = dc.getExecutableCriteria(session);
        //3 执行查询并返回
        return c.list();
    }
  • 相关阅读:
    BZOJ5212 ZJOI2018历史(LCT)
    BZOJ5127 数据校验
    253. Meeting Rooms II
    311. Sparse Matrix Multiplication
    254. Factor Combinations
    250. Count Univalue Subtrees
    259. 3Sum Smaller
    156. Binary Tree Upside Down
    360. Sort Transformed Array
    348. Design Tic-Tac-Toe
  • 原文地址:https://www.cnblogs.com/jepson6669/p/8516278.html
Copyright © 2011-2022 走看看