您的位置:首页 > 其它

SSH框架的搭建及其原理

2014-08-01 16:51 323 查看
一、为什么要用Hibernate,Hibernate实现的原理?

Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码Hibernate是一个基于jdbc的主流持久化框架,是一个优秀的orm实现,它很大程度的简化了dao层编码工作.

使用JDBC的步骤:

①加载驱动load the driver,Class.forName()

②创建数据连接Connect to the DataBase,DriverManager.getConnection()

③执行SQL语句Excute the SQL,

(1)connection.CreateStatement()

(2)Statement.excuteQuery()

(3)Statement.executeUpdate()

④处理结果集 Retrieve the result data,循环取得结果 while(rs.next())
⑤将数据库中的数据类型转换为Java中的类型,show the result data

⑥关闭连接close

代码实例如下:

class Jdbc{
public static void main(String[] args) throws Exception {

//1.先new 一个driver 然后向managerDriver注册
Class.forName("com.mysql.jdbc.Driver");
//2.通过DriverManager.getConnection传递个方法,严格的说是jdbc的url
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test", "root", "1234");
//3.创建个statement对象,执行sql语句
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from test.admin");
//4.取得结果集 5.对其进行遍历

while (rs.next()) {

System.out.println(rs.getString("username"));
System.out.println(rs.getInt("id"));
}
//6.关闭(要遵循后执行的先闭,先执行的后闭的原则)
rs.close();
stmt.close();
conn.close();
}
}

使用Hibernate的步骤:

①建立实体对象,然后对应的建立对象的映射文件

②在src下加入Hibernate配置文件(指定数据库连接密码和用户):hibernate.cfg.xml

③建立测试类,让Hibernate自动为我们生成表格

具体实现代码:

第一步:创建一个Hibernate的工具类,方便后来使用

public class HibernateUtil {

private static Configuration cfg;

private static SessionFactory sf;

static {

cfg = new Configuration().configure();

sf = cfg.buildSessionFactory();

}

private HibernateUtil() {

}

public static Session getSession() {

return sf.openSession();

}

}

第二步:具体使用Hibernate(以保存一个实体对象为例)


public int save(User user) {

Session session = null;

Transaction tx = null;

int ret = 0;

try {

// Configuration cfg = new Configuration().configure();

// SessionFactory sf = cfg.buildSessionFactory();

session = HibernateUtil.getSession();

tx = session.beginTransaction();

ret = (Integer) session.save(user);

tx.commit();

} catch (HibernateException e) {

if (tx != null) {

tx.rollback();

}

e.printStackTrace();

} finally {

if (session != null) {

session.close();

}

}

return ret;

}


Hibernate中各个对象的作用:

1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件

2.由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>读取并解析映射信息

3.通过config.buildSessionFactory();//创建SessionFactory

4.sessionFactory.openSession();//打开Sesssion

5.session.beginTransaction();//创建事务Transation

6.persistent operate持久化操作

7.session.getTransaction().commit();//提交事务

8.关闭Session

9.关闭SesstionFactory


二、为什么要用Struts2、及其原理?

1、struts2是很强大的开源框架,也是基于POJO的Action的MVC Web框架,主要优势有如下几个方面:

①结构清晰,易与编码

②使用OGNL(对象图导航语言)表达式传参,OGNL提供了在Struts2里访问各种作用域中的数据的简单方式,你可以方便的获取Request,Attribute,Application,Session,Parameters中的数据。大大简化了开发人员在获取这些数据时的代码量。

③强大的拦截器

④容易测试,易于测试Struts2的Action都是简单的POJO,这样可以方便的对Struts2的Action编写测试用例,大大方便了5Java Web项目的测试。

2、struts2的使用步骤:

部署Struts.xml和Web.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>

<package name="default2" namespace="/userList" extends="struts-default">

<action name="dashboard" class="userListAction">

<result name="success">/admin/userList.jsp</result>

<result name="input">/admin/login.jsp</result>

</action>

</package>

</struts>

namespace是指虚拟的路径,如果namespace="student" 那么action的路径就是localhost/student/addStudent.
extends一般默认的是struts-default

action标签中的那么就是浏览器请求的地址

class属性是指处理请求的Action是哪一个,包名+Action类名

method属性是指Action中处理请求的方法名

result就是转向返回的页面

name属性是指如果方法返回的字符串匹配就返回result中的页面。

web.xml中配置拦截

<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>

<dispatcher>FORWARD</dispatcher>

<dispatcher>REQUEST</dispatcher>

</filter-mapping>
②编写Action类,在Struts2中Action相当于MVC的Controller

三、spring的工作原理、及为什么要用spring?

Spring其实包含了很多的知识,用到的有IOC,AOP等,其实就是一个管理框架的容器,你不用再考虑你new对象了,它会帮你做,降低了层与层之间的耦合度。Spring里面有很多的思想,IOC就是控制反转,注入。AOP是面向切面的,有点像拦截器。

spring的使用步骤:


[b]1.简介 [/b]

简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

2.轻量  

从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。

3.控制反转  

Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

4.面向切面  

Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

5.容器  

Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。

6.框架  

Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: