SSH框架的搭建及其原理

一、为什么要用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的使用步骤:

1.简介 

简单来说,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中的各种模块提供了基础支持。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值