eclipse怎么搭建ssh框架
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了eclipse怎么搭建ssh框架相关的知识,希望对你有一定的参考价值。
参考技术A 使用每个框架,就是添加一系列jar库文件和创建一些xml配置文件的过程,用Eclipse来配置的话,如下是百度文库里的各个框架的基本搭建方法:
Struts2的:http://wenku.baidu.com/view/a0504bfaaef8941ea76e055c.html
Hibernate的:http://wenku.baidu.com/view/c30d0a6a5901020206409c13.html
Spring的:http://wenku.baidu.com/view/332d0de7fd0a79563d1e724e.html
不过如果换用最新版的MyEclipse,应该在创建的Web项目上点右键,能找到"Add Struts 2 Capabilities...", "Add Hibernate Capabilities...", "Add Spring Capabilities...",这些菜单项,然后会各自提供一些向导帮你构建基本的框架,还是比较方便的。
尽管如此,你还是需要预先了解这些框架的一些基本知识才能搞明白要填的是什么。
建议你找一本书来系统学习,比如李刚的那本书”轻量级java ee企业应用实战 “。
用Eclipse搭建ssh框架
问:ssh是哪三大框架,以及他们的作用是什么?
答:分别是struts,spring,hibernate.
struts的作用是:是web层,其核心是mvc模式,他可以自动获取参数,自动类型转换,自动页面跳转(将业务接口返回的结果包装起来发送给指定的视图,并由视图完成处理结果的展现),还有一个就是做一些简单的校验或者是国际化工作。
spring的作用是:是业务层,采用IOC和AOP,是用于项目解耦。
hibernate的作用是:数据层,数据库的封装
事先需要做的准备工作:
1.安装jdk,这里就不多说了,我使用的是jdk1.8
2.需要用到的工具:eclipse,mysql等等
好,接下来我们就开始创建项目了。
第一步:创建一个叫做ssh的项目吧。但是得提醒大家不要忘记勾选web.xml文件,请看如下截图。
第二步:搭建struts2环境
首先;引入struts2的包
接下来需要修改WEB-INF里面的web.xml文件
由于待会我们就要引入spring了,所以这个监听器我们这里一块配置
第三小步就是添加我们的struts.xml文件了
接下来我们需要创建一个action类,名字就叫做indexAction吧
中间的话我们先相应的建一个dao类和service类
刚刚的那个注入,也就替换了以前的new对象。
接下来我们来先建jsp文件,我们先不写里面的内容,只是把流程弄出来
第三步:搭建spring和hibernate的环境
首先我们也是需要导包的
这里我们的文件和源码是不需要导进来的
到这里包并没有导完,还需要导struts2-spring的包
如下:
接着我们导hibernate需要的包
接着我们来看看我们的实现类
同理dao的实现类也是一样的
hibernate包导完了我们就可以用sessionFactory注入了
接下来我们编写applicationContext.xml文件
看到实体类的映射文件我这里就随便举个例子说下
接着我们继续弄applicateContext.xml文件
如上图那样的话我们需要在自己写一份jdbc的属性,所以我们需要在头部导入
接着我们需要创建一份jdbc.properties
现在我们来运行,发现程序报错了
然后发现是c3p0的架包没有导入
再来运行
看到这里我们就知道框架搭建成功了
下面是我画的一张流程图,大家可以参考下
接下来我来跟大家分享用EntityManagerFactory来实现上面一样的功能
由于这样的话我们需要在dao的实现类注入EntityManagerFactory,
代码如下:
package dao; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.PersistenceContext; import entity.BookCard; public class IndexDaoImpl implements IndexDao { //注入: //private SessionFactory sf; //public void setSf(SessionFactory sf) { //this.sf = sf; //} @PersistenceContext private EntityManagerFactory emf; public void setEmf(EntityManagerFactory emf) { this.emf = emf; } @Override public List<BookCard> getAllBookCard(){ //这个是没有交给spring去做的实例化对象 //sf=new Configuration().configure().buildSessionFactory(); //Session session=sf.openSession();//实例化session //session.beginTransaction();//实例化一个事务 /*List<BookCard> list= session.createQuery("from BookCard").getResultList(); session.getTransaction().commit(); session.close(); //sf.close(); */ EntityManager entityManager=emf.createEntityManager(); List<BookCard> list=entityManager.createQuery("from BookCard",BookCard.class).getResultList(); entityManager.close(); //emf.close(); return list; } }
大家可以做个对比,其实大同小异
但是EntityManagerFactory需要persistence.xml
代码如下
<?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns:persistence="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_2_1.xsd "> <persistence-unit name="jpa" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider><!-- 驱动实现类,入口类 --> <mapping-file>entity/BookCard.hbm.xml</mapping-file> <properties> <!-- Common properties --> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"></property> <property name="hibernate.show_sql" value="true"></property> <property name="hibernate.format_sql" value="true"></property> <property name="hibernate.hbm2dll.auto" value="update"></property> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"></property> <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/CardDB"></property> <property name="hibernate.connection.username" value="root"></property> <property name="hibernate.connection.password" value="123456"></property> </properties> </persistence-unit> </persistence>
当然也别忘了applicationContext.xml里面需要配置,如下:
<bean id="myEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="jpa" />
</bean>
这里还需要说的一个就是,如果实体类.hbm.xml删除了,那就要配着注解才可以使用。
下面是实体类的映射文件,如下:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="entity"> <!-- 这里的名和数据库那边一一对应,不写则默认一样 --> <class name="BookCard" table="BookCard"> <id name="cid" column="cid"> <generator class="increment"/> </id> <property name="name"></property> <property name="sex"></property> <property name="cardDate" column="cardDate"></property> <property name="deposit"></property> </class> </hibernate-mapping>
再次声明一下,如果删除了映射文件,那么就要在实体类那边注解。
现在,我们把实体类的映射文件删了,但是我们要在实体类那边加上注解,如下:
package entity; import java.math.BigDecimal; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="BookCard")//如果不加则表明类名和表名相同 public class BookCard { private int cid ; private String name; private String sex ; private Date cardDate; private BigDecimal deposit; public BookCard() { super(); } public BookCard(String name, String sex, Date cardDate, BigDecimal deposit) { super(); this.name = name; this.sex = sex; this.cardDate = cardDate; this.deposit = deposit; } @Id @GeneratedValue(generator="increament") public int getCid() { return cid; } public void setCid(int cid) { this.cid = cid; } @Column public String getName() { return name; } public void setName(String name) { this.name = name; } @Column public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @Column public Date getCardDate() { return cardDate; } public void setCardDate(Date cardDate) { this.cardDate = cardDate; } @Column public BigDecimal getDeposit() { return deposit; } public void setDeposit(BigDecimal deposit) { this.deposit = deposit; } }
运行结果如下:
以上是关于eclipse怎么搭建ssh框架的主要内容,如果未能解决你的问题,请参考以下文章