电力系统底层架构
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)整体测试

项目学习——电力系统底层架构ssh的更多相关文章

  1. 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问

    中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...

  2. ML平台_小米深度学习平台的架构与实践

    (转载:http://www.36dsj.com/archives/85383)机器学习与人工智能,相信大家已经耳熟能详,随着大规模标记数据的积累.神经网络算法的成熟以及高性能通用GPU的推广,深度学 ...

  3. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图: 下面作简要概述: S ...

  4. 洞悉MySQL底层架构:游走在缓冲与磁盘之间

    提起MySQL,其实网上已经有一大把教程了,为什么我还要写这篇文章呢,大概是因为网上很多网站都是比较零散,而且描述不够直观,不能系统对MySQL相关知识有一个系统的学习,导致不能形成知识体系.为此我撰 ...

  5. SSH项目整合教学Eclipse搭建SSH(Struts2+Spring3+Hibernate3)

    这篇博文的目的 尝试搭建一个完整的SSH框架项目. 给以后的自己,也给别人一个参考. 读博文前应该注意: 本文提纲:本文通过一个用户注册的实例讲解SSH的整合.创建Struts项目,整合Hiberna ...

  6. JavaWeb学习之三层架构实例(三)

    引言 通过上一篇博客JavaWeb学习之三层架构实例(二)我们基本上已经实现了对学生信息列表的增删改查操作(UI除外),但是不难看出,代码冗余度太高了,尤其是StudentDao这个类,其中的增删改查 ...

  7. Linux设备驱动模型底层架构及组织方式

    1.什么是设备驱动模型? 设备驱动模型,说实话这个概念真的不好解释,他是一个比较抽象的概念,我在网上也是没有找到关于设备驱动模型的一个定义,那么今天就我所学.所了解 到的,我对设备驱动模型的一个理解: ...

  8. Docker 基础底层架构浅谈

    docker学习过程中,免不了需要学习下docker的底层技术,今天我们来记录下docker的底层架构吧! 从上图我们可以看到,docker依赖于linux内核的三个基本技术:namespaces.C ...

  9. Halo 开源项目学习(七):缓存机制

    基本介绍 我们知道,频繁操作数据库会降低服务器的系统性能,因此通常需要将频繁访问.更新的数据存入到缓存.Halo 项目也引入了缓存机制,且设置了多种实现方式,如自定义缓存.Redis.LevelDB ...

随机推荐

  1. 43. studio上的json串解析

    var doc = O_PARAMETER.FJSonStr;(doc为:{"items":[],"nextId":0}) //1.先转为json对象,主要有以 ...

  2. 深入理解JS异步编程二(分布式事件)

    PubSub模式 从原生的js角度,我们要监听某事件的方法就是利用addEventListener方法,但是当我们的页面趋于复杂,比如要向某个元素添加多个处理事件,那么就要用一个封装函数汇集多个处理函 ...

  3. ftp服务器远程拷贝命令

    xiamense@xiamense-testserver:~$ ftp 218.5.82.40 输入账户密码 get 远程文件路径 本机服务器路径get pa20160927.xml /home/xi ...

  4. brackets快捷键使用

    ctrl+b 当选中一个文本时,会出现相同的文本,被高亮显示 按ctrl+b 相同的文本就全部获得了焦点 这样就可以同时更改这些相同的文本ctrl+e    打开或关闭快速编辑alt+u 注释ctrl ...

  5. Docker私有仓库 Registry中的镜像管理

    这里主要介绍Registry v2的版本 查看Registry仓库中现有的镜像: # curl -XGET http://10.0.30.6:5000/v2/_catalog# curl -XGET ...

  6. 开源GIS简介.学习

    开发者都希望自己的软件能够运行在尽可能多的计算机上.然而事与愿违,摆在 GIS开发者面前的仍然是对峙的平台.J2EE随着Java5.0的发布,已经正式更名为JavaEE,而微软也正式发布了.NET2. ...

  7. Jmeter之逻辑控制器(Logic Controller)

    Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in w ...

  8. Spring HtmlUtils把HTML编码转义,可将HTML标签互相转义

    Spring HtmlUtils把HTML编码转义,可将HTML标签互相转义 2014年09月05日 ⁄ 综合 ⁄ 共 372字 ⁄ 字号 小 中 大 ⁄ 评论关闭   org.springframe ...

  9. win下搭建uvm环境

    UVM验证方法学,很好的验证工具,下面用ModelSim-uvm做一个Hello world. 1.安装modelsim se 10.1a 2.下载uvm_1.1d  uvm-1.1d.tar.gz  ...

  10. java.net.MalformedURLException: Illegal character in URL

    在进行接口测试时,意外发现返回结果报java.net.MalformedURLException: Illegal character in URL,意思是“在URL中的非法字符”,我的参数是经过ba ...