zoukankan      html  css  js  c++  java
  • SSH框架搭建

    电力系统底层架构
    1、建立web工程
       创建数据库
       导入向对应的jar包
    2、 持久层:
       
    (1)在cn.itcast.elec.domain中创建持久化类ElecText
        
    @SuppressWarnings("serial")
      public class ElecText implements
    java.io.Serializable {
       private String textID;
       private String
    textName;
       private Date textDate;
       private String
    textRemark;
       
       public String getTextID() {
        return
    textID;
       }
       public void setTextID(String textID) {
        this.textID
    = textID;
       }
       public String getTextName() {
        return
    textName;
       }
       public void setTextName(String textName)
    {
        this.textName = textName;
       }
       public Date getTextDate()
    {
        return textDate;
       }
       public void setTextDate(Date textDate)
    {
        this.textDate = textDate;
       }
       public String getTextRemark()
    {
        return textRemark;
       }
       public void setTextRemark(String
    textRemark) {
        this.textRemark =
    textRemark;
       }
      }
     (2)在cn.itcast.elec.domain中创建ElecText.hbm.xml
        
    <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE hibernate-mapping
    PUBLIC
          "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
      <hibernate-mapping>
       <class
    name="cn.itcast.elec.domain.ElecText" table="Elec_Text">
        <id
    name="textID" type="string">
         <column name="textID"
    sql-type="VARCHAR(50)"></column>
         <generator
    class="uuid"></generator>
        </id>
        <property
    name="textName" type="string">
         <column name="textName"
    sql-type="VARCHAR(50)"></column>
        </property>
        <property
    name="textDate" type="date">
         <column name="textDate"
    length="50"></column>
        </property>
        <property
    name="textRemark" type="string">
         <column name="textRemark"
    sql-type="VARCHAR(500)"></column>
        </property>
       </class>
      </hibernate-mapping>
      
    (3)在src的目录下,创建hibernate.cfg.xml(连接数据库信息)
            <?xml version="1.0"
    encoding="UTF-8"?>
      <!DOCTYPE hibernate-configuration
    PUBLIC
       "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
       "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
      <hibernate-configuration>
       <session-factory>
        <!--
    基本信息 -->
        <property
    name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property
    name="hibernate.connection.url">jdbc:mysql://localhost:3306/itcast0906elec?useUnicode=true&amp;characterEncoding=utf8</property>
        <property
    name="hibernate.connection.username">root</property>
        <property
    name="hibernate.connection.password">root</property>
        <!--
    使事务自动提交 -->
        <!--<property
    name="hibernate.connection.autocommit">true</property>-->
        <!--
    配置 -->
        <property
    name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <property
    name="hibernate.hbm2ddl.auto">update</property>
        <property
    name="hibernate.show_sql">true</property>
        
        <!--
    添加映射的hbm.xml -->
        <mapping
    resource="cn/itcast/elec/domain/ElecText.hbm.xml"/>
       </session-factory>
      </hibernate-configuration>
     (4)测试在junit包下TestHibernate
        
    public class TestHibernate {
       @Test
       public void
    testSave(){
        Configuration configuration = new
    Configuration();
        //加载类路径的hibernate.cfg.xml
        configuration.configure();
        //调用sessionFactory
        SessionFactory
    sf = configuration.buildSessionFactory();
        //打开session
        Session s =
    sf.openSession();
        //开启事务
        Transaction tr =
    s.beginTransaction();
        //保存ElecText
        ElecText elecText = new
    ElecText();
        elecText.setTextName("测试Hibernate名称");
        elecText.setTextDate(new
    Date());
        elecText.setTextRemark("测试Hibernate备注");
        s.save(elecText);
        //事务提交
        tr.commit();
        //关闭session
        s.close();
        
       }
      }
     
    3、DAO层
      
    (1)在cn.itcast.elec.dao中创建对应的业务接口 IElecTextDao
         
      public interface
    IElecTextDao extends ICommonDao<ElecText> {
       public static final
    String SERVICE_NAME = "cn.itcast.elec.dao.impl.ElecTextDaoImpl";
      }  
      
    (2)在cn.itcast.elec.dao.impl中创建对应业务接口的实现类ElecTextDaoImpl
           
    @Repository(IElecTextDao.SERVICE_NAME)
      public class ElecTextDaoImpl extends
    CommonDaoImpl<ElecText> implements IElecTextDao {
       
      }
       
    (3)在cn.itcast.elec.dao中创建对应的公用接口 ICommonDao
            public interface
    ICommonDao<T> {
       void save(T entity);
      }
       
    (4)在cn.itcast.elec.dao.impl中创建对应公用接口的实现类CommonDaoImpl,并注入sessionFactory给hibernateTemplate
        
    public class CommonDaoImpl<T> extends HibernateDaoSupport implements
    ICommonDao<T> {
       /**
        *  <bean id="hibernateTemplate"
    class="org.springframework.orm.hibernate3.HibernateTemplate">
         <property
    name="sessionFactory"
    ref="sessionFactory"></property>
        </bean>
       
    */
       @Resource(name="sessionFactory")
       public final void
    setSessionFactoryDi(SessionFactory sessionFactory)
    {
        super.setSessionFactory(sessionFactory);
       }
       
       public
    void save(T entity)
    {
        this.getHibernateTemplate().save(entity);
       }
      }
     (5)在src的目录下创建beans.xml(spring容器)
        
    <?xml version="1.0" encoding="UTF-8"?>
      <beans  xmlns="http://www.springframework.org/schema/beans"
             
    xmlns:context="http://www.springframework.org/schema/context"
             
    xmlns:aop="http://www.springframework.org/schema/aop"
             
    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-3.0.xsd
                           
    http://www.springframework.org/schema/context

                            http://www.springframework.org/schema/context/spring-context-3.0.xsd
                           
    http://www.springframework.org/schema/tx

                            http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
                           
    http://www.springframework.org/schema/aop

                            http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
      <!--
    1、注解的自动扫描,表示组件(如:@controler,@Service,@Repository,@Resource等)的扫描 -->

      <context:component-scan
    base-package="cn.itcast.elec"></context:component-scan>
      <!--
    2、? -->
      <!-- 3、创建由spring提供的sessionFactory,这是spring整合hibernate的核心
    -->
      <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
       <property
    name="configLocation">
        <value>
         classpath:hibernate.cfg.xml
        </value>
       </property>
      </bean>
      <!--4、创建事务管理器,由spring负责创建 
    -->
      <bean id="txManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
       <property
    name="sessionFactory"
    ref="sessionFactory"></property>
      </bean>
      <!--
    5、使用注解的形式管理事务 -->
      <tx:annotation-driven
    transaction-manager="txManager"/>
      </beans>
       
    (6)测试在junit包下
           public class TestDao {
       @Test
       public void
    testSaveElecText(){
        //加载类路径下的beans.xml
        ApplicationContext ac = new
    ClassPathXmlApplicationContext("beans.xml");
        //获取spring容器中的bean的id节点
        IElecTextDao
    elecTextDao = (IElecTextDao)
    ac.getBean(IElecTextDao.SERVICE_NAME);
        //保存
        ElecText elecText =
    new
    ElecText();
        elecText.setTextName("测试DAO名称");
        elecText.setTextDate(new
    Date());
        elecText.setTextRemark("测试DAO备注");
        elecTextDao.save(elecText);
       }
      }
    4、业务层
      
    (1)在cn.itcast.elec.service中创建接口 IElecTextService
      public interface
    IElecTextService {
       public static final String SERVICE_NAME =
    "cn.itcast.elec.service.impl.ElecTextServiceImpl";
       void
    saveElecText(ElecText elecText);
      }
       
    (2)在cn.itcast.elec.service.impl中创建实现类ElecTextServiceImpl,在业务层要写入事务控制
           
    @Service(IElecTextService.SERVICE_NAME)
      @Transactional(readOnly=true)
      public
    class ElecTextServiceImpl implements IElecTextService
    {
      
       @Resource(name=IElecTextDao.SERVICE_NAME)
       private
    IElecTextDao elecTextDao;

       
       @Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,readOnly=false)
       public
    void saveElecText(ElecText elecText)
    {
        elecTextDao.save(elecText);
       }
      
      }
     (3)测试,在junit包下TextService测试
        
    public class TestService {
       @Test
       public void
    testSaveElecText(){
        //加载类路径下的beans.xml
        ApplicationContext ac = new
    ClassPathXmlApplicationContext("beans.xml");
        //获取spring容器中的bean的id节点
        IElecTextService
    elecTextService = (IElecTextService)
    ac.getBean(IElecTextService.SERVICE_NAME);
        //保存
        ElecText elecText
    = new
    ElecText();
        elecText.setTextName("测试Service名称");
        elecText.setTextDate(new
    Date());
        elecText.setTextRemark("测试Service备注");
        elecTextService.saveElecText(elecText);
       }
      }
    5、控制层
        
    (1)在cn.itcast.elec.web.action中创建ElecTextAction,使用模型驱动
            
    @Controller("elecTextAction")
       @Scope(value="prototype")
       @SuppressWarnings("serial")
       public
    class ElecTextAction extends BaseAction implements ModelDriven<ElecText>
    {
       
        private ElecText elecText = new
    ElecText();
        
        @Resource(name=IElecTextService.SERVICE_NAME)
        private
    IElecTextService elecTextService;
        
        public ElecText getModel()
    {
         return elecText;
        }
       
        public String
    save(){
         elecTextService.saveElecText(elecText);
         System.out.println(request.getParameter("textDate"));
         return
    "success";
        }
       }
     
    (2)在cn.itcast.elec.web.action中创建BaseAction,用于获取request和response
            
    @SuppressWarnings("serial")
       public class BaseAction extends ActionSupport
    implements ServletRequestAware,ServletResponseAware {
        
        protected
    HttpServletRequest request = null;
        protected HttpServletResponse response
    = null;
       
        public void setServletRequest(HttpServletRequest req)
    {
         this.request = req;
        }
       
        public void
    setServletResponse(HttpServletResponse res) {
         this.response =
    res;
        }
       
       }
      (3)在src的目录下,创建struts.xml文件
            
    <?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.action.extension"
    value="do"></constant>
        <!-- 设置开发模式,开发时输出更多的错误信息
    -->
        <constant name="struts.devMode"
    value="true"></constant>
        <!-- 修改ui主题为简单主题
    -->
        <constant name="struts.ui.theme"
    value="simple"></constant>
        <package name="system"
    namespace="/system" extends="struts-default">
         <action
    name="elecTextAction_*" class="elecTextAction"
    method="{1}">
          <result
    name="success">/system/textAdd.jsp</result>
         </action>
        </package>
       </struts>
      
    (4)在web.xml中配置:添加:
           <!-- 使用struts整合spring,web服务器启动时,需要加载beans.xml
    -->
         <context-param>
        
     <param-name>contextConfigLocation</param-name>
        
     <param-value>
           classpath:beans.xml
        
     </param-value>
         </context-param>
        
    <listener>
        
     <listener-class>org.springframework.web.context.ContextLoaderListener</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>
     
    (5)导入对应css,script,images,jsp页面
      (6)整体测试

  • 相关阅读:
    2015年个人记录
    Win10如何新建用户怎么添加新账户
    快速搭建一个本地的FTP服务器
    天气接口
    一张图搞定OAuth2.0
    PHP TS 和 NTS 版本选择
    如何在 Laravel 中使用 SMTP 发送邮件(适用于 163、QQ、Gmail 等)
    Npm vs Yarn 之备忘详单
    浅谈CSRF
    值得看的cookie详解
  • 原文地址:https://www.cnblogs.com/xuqiudong/p/3914800.html
Copyright © 2011-2022 走看看