`
runfeel
  • 浏览: 935780 次
文章分类
社区版块
存档分类
最新评论

ssh入门

 
阅读更多

ssh,对于java web开发新手还是一个比较陌生的名字,在此我就简单给初窥java web门径的兄弟们简单介绍这个现在相当流行的java web开发框架。

首先,何为框架

框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;或者说,框架是可被应用开发者定制的应用骨架。简而言之,框架即是为了方便我们程序员开发,减少代码量及增加代码质量的工具。

那么何为ssh框架呢?

ssh乃Spring + Struts +Hibernate,是三种框架的集成。这三种框架各有所能,集合在一起就能极大地方便我们进行java web的开发。

Struts对Model,View和Controller都提供了对应的组件。Spring是为了解决企业应用开发的复杂性而创建的,它使用基本的JavaBean来完成以前只可能由EJB完成的事情。 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在Servlet/JSP的Web应用中使用,完成数据持久化的重任。

第一个S——Struts

1.Struts框架结构 如右图:
Struts对Model,View和Controller都提供了对应的组件。
在右图中,ActionServlet,这个类是Struts的核心控制器,负责拦截来自用户的请求。
Action,这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。
2.Model部分 由ActionForm和JavaBean组成,其中ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。
JavaBean则封装了底层的业务逻辑,包括数据库访问等。
3.View部分 该部分采用JSP实现。
Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。
4.Controller组件 Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。
系统核心控制器,对应上图的ActionServlet。该控制器由Struts框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。
业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。
第二个S——Spring
1.简介 
◆目的:解决企业应用开发的复杂性
◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
◆范围:任何Java应用
简单来说,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中的各种模块提供了基础支持。
Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。
第一次和ssh并肩作战
说了一堆理论,我们试着用通过实际的例子来看看这个ssh究竟有什么神奇之处。
注:我们只是看看ssh的处理逻辑,未详解其配置,关于ssh的具体配置放到下一篇博文(*^__^*)
新建一个web project,新建后的目录结构同时包含了新建文件夹page用于放jsp文件,和源文件夹test用于放junit测试文件。同时将用到的包,包括struts,hibernate,spring都导入到lib目录下。

  
创建持久层O/R mapping

   1. 在src/com.jandar.model下用hibernate插件从数据库导出app_user的.hbm.xml文件改名为User.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping package="com.jandar.model">
<class name="User" table="APP_USER">
  <id
   column="ID"
   name="id"
   type="integer"
  >

   <generator class="assigned" />

  </id>

  <property
    column="LASTNAME"
    length="10"
    name="lastname"
    not-null="false"
    type="string"
  />

  <property
    column="FIRSTNAME"
    length="10"
    name="firstname"
    not-null="true"
    type="string"
  />

</class>
</hibernate-mapping>

   2. 通过hibernate synchronizer->synchronizer file生成User.java文件,User对象对应于数据库中的app_user表

   注:在eclipse下自动生成的对象文件不完全相同,相同的是每个对象文件必须实现Serializable接口,必需又toString和hashCode方法;

import java.io.Serializable;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

public class BaseObject implements Serializable {
  public String toString() {
   return ToStringBuilder.reflectionToString(this,
   ToStringStyle.MULTI_LINE_STYLE);
  }

  public boolean equals(Object o) {
   return EqualsBuilder.reflectionEquals(this, o);
  }

  public int hashCode() {
   return HashCodeBuilder.reflectionHashCode(this);
  }
}

public class User extends BaseObject {
  private Long id;
  private String firstName;
  private String lastName;

  /**
  * @return Returns the id.
  */

  public Long getId() {
   return id;
  }

  /**
   * @param id The id to set.
  */

  public void setId(Long id) {
   this.id = id;
  }

  /**
  * @return Returns the firstName.
  */

  public String getFirstName() {
   return firstName;
  }

  /**
   * @param firstName The firstName to set.
  */

  public void setFirstName(String firstName) {
   this.firstName = firstName;
  }

  /**
  * @return Returns the lastName.
  */

  public String getLastName() {
   return lastName;
  }

  /**
  * @param lastName The lastName to set.
  */

  public void setLastName(String lastName) {
   this.lastName = lastName;
  }
}

创建DAO访问对象

   1. 在src/com.jandar.service.dao新建IDAO.java接口,所有的DAO都继承该接口

package com.jandar.services.dao;

public interface IDAO

   2. 在src/com.jandar.service.dao下新建IUserDAO.java接口

public interface IUserDAO extends DAO {
  List getUsers();
  User getUser(Integer userid);
  void saveUser(User user);
  void removeUser(Integer id);
}

   该接口提供了访问对象的方法,

   3. 在src/com.jandar.service.dao.hibernate下新建UserDAOHiberante.java

import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
import com.jandar.model.User;
import com.jandar.service.dao.IUserDAO;

public class UserDaoHibernate extends HibernateDaoSupport implements IUserDAO {

  private Log log=LogFactory.getLog(UserDaoHibernate.class);
  /* (非 Javadoc)
  * @see com.jandar.dao.IUserDAO#getUsers()
  */

  public List getUsers() {
   return getHibernateTemplate().find("from User");
  }

  /* (非 Javadoc)
  * @see com.jandar.dao.IUserDAO#getUser(java.lang.Long)
  */

  public User getUser(Integer id) {
   // TODO 自动生成方法存根
   return (User) getHibernateTemplate().get(User.class,id);
  }

  /* (非 Javadoc)
  * @see com.jandar.dao.IUserDAO#saveUser(com.jandar.model.User)
  */

  public void saveUser(User user) {
   log.debug("xxxxxxx");
   System.out.println("yyyy");
   getHibernateTemplate().saveOrUpdate(user);
   if(log.isDebugEnabled())
   {
    log.debug("userId set to "+user.getId());
   }
  }

  /* (非 Javadoc)
  * @see com.jandar.dao.IUserDAO#removeUser(java.lang.Long)
  */

  public void removeUser(Integer id) {
   Object user=getHibernateTemplate().load(User.class,id);
   getHibernateTemplate().delete(user);
   if(log.isDebugEnabled()){
    log.debug("del user "+id);
   }
  }
}

   在这个类中实现了IUserDAO接口的方法,并且继承了HibernateDAOSupport类。这个类的作用是通过hibernate访问、操作对象,进而实现对数据库的操作。

希望这些能帮助对ssh还不了解的朋友对ssh有一个初步的认识,支持的话顶一个噢(*^__^*)
分享到:
评论

相关推荐

    较好的ssh入门小例子

    这个"较好的ssh入门小例子"可能是一个压缩包,包含了帮助初学者理解SSH概念、配置和使用的教程或示例。虽然没有具体描述文件的内容,但我们可以基于SSH的基本知识来深入探讨。 SSH的主要功能是为用户提供加密的网络...

    ssh入门demo

    SSH入门Demo是一个面向初学者的教程,主要涵盖了Secure Shell(SSH)的基础知识和应用。SSH是一种网络协议,用于在不安全的网络上安全地执行远程命令和传输数据。在这个资源中,你可能会找到一个关于如何配置和使用...

    SSH入门整合案例

    1.简单的ssh集成配置开发,所有源代码全部开放, 包括所有包。都是经过我自己敲了调试的。 2.仅仅适合初学者入门,第一次发请多多指教,有问题请与我联系。 3,数据库为mysql5.5,仅仅对一张表的crud操作。

    初学SSH入门实例

    ### SSH框架入门实例详解 #### 一、简介 本文档主要介绍了如何利用MyEclipse集成开发环境搭建并实现一个简单的SSH(Struts + Spring + Hibernate)框架应用实例。本实例非常适合初学者快速上手,通过实践操作来理解...

    SSH 入门程序(struts+spring+hibernate)

    SSH入门程序是一个帮助开发者熟悉这三个框架集成使用的实例教程。 **Struts** 是一个基于MVC设计模式的Java Web框架,主要负责处理用户请求和控制应用程序流程。它通过Action类处理HTTP请求,并将结果转发到指定的...

    SSH入门整合例子

    SSH入门整合例子主要针对的是那些刚开始接触SSH(Struts、Spring、Hibernate)三大框架集成的初学者。SSH是Java Web开发中的一个经典组合,它能够帮助开发者构建高效、灵活且可扩展的应用程序。在这个入门教程中,...

    SSH入门教程(手把手教你)

    SSH入门教程:手把手教你整合Struts1.2、Spring和Hibernate SSH是Java开发中的一个经典技术栈,由Struts、Spring和Hibernate三个开源框架组成。本教程将引导初学者逐步了解并掌握这三个框架的整合,从而实现一个...

    SSH入门资料(包括所有的门课的知识点包含struts2)

    这个压缩包提供了全面的SSH入门学习资料,旨在帮助开发者掌握这三个框架的基本概念、配置和实际应用。 首先,Struts2作为MVC(模型-视图-控制器)框架,负责处理Web应用程序的请求和响应。它提供了强大的动作类机制...

    SSH入门及使用教程ppt.zip

    SSH入门及使用教程ppt.zip

    SSH入门笔记

    SSH是三个Java开源框架的缩写,分别是Struts、Hibernate和Spring。这三大框架常被组合使用,构建企业级的...这份SSH入门笔记将引导你逐步掌握这些框架的基本用法和高级特性,是初学者和进阶者都非常宝贵的学习资源。

    SSH入门实例

    ### SSH入门实例详解 #### 一、MVC框架解析 MVC(Model-View-Controller)是一种常用的软件架构模式,用于构建动态网站或应用程序。它将应用程序分为三个核心部分: 1. **模型(Model)**:代表应用程序的核心,...

    ssh入门视频之ssh2

    荐大家按以下顺序学习: 张孝祥java基础-> 张孝祥java高级-> 张孝祥javascript视频教程-> 俄罗斯方块视频教程-> 贪吃蛇游戏项目实战-> 张孝祥javaweb视频教程-> 张孝祥java邮件开发视频-> 传智播客Struts视频教程-> ...

    一个SSH的入门完整例子

    在这个“一个SSH的入门完整例子”中,我们将深入探讨SSH框架的使用和配置。 首先,Struts是MVC(模型-视图-控制器)设计模式的一个实现,负责处理用户请求并展示响应。在Struts中,我们定义Action类来处理业务逻辑...

    整合 SSH视频,绝对经典,SSH入门必选

    学习SSH必备资源,希望受益的兄弟姐妹们顶一下。

    用java中的ssh三大框架做的一个入门的例子

    SSH是Java开发中常用的三大框架,分别是Struts、Spring和Hibernate。这个例子旨在为初学者提供一个基于SSH的简单应用示例,帮助他们理解和...通过这个入门实例,初学者可以逐步理解并掌握SSH框架的核心概念和实践技巧。

    SSH 入门架包

    SSH框架是Java开发中常用的三大框架,包括Struts、Hibernate和Spring。它们分别负责Web层、持久层和业务层的管理,为开发者提供了一种高效、灵活的开发方式。 Struts是一个开源的MVC(Model-View-Controller)框架...

    ssh入门视频之ssh1

    荐大家按以下顺序学习: 张孝祥java基础-> 张孝祥java高级-> 张孝祥javascript视频教程-> 俄罗斯方块视频教程-> 贪吃蛇游戏项目实战-> 张孝祥javaweb视频教程-> 张孝祥java邮件开发视频-> 传智播客Struts视频教程-> ...

    ssh登录+课程增删改查功能的入门源代码

    这个入门源代码是学习SSH框架的绝佳起点,你可以从中了解各组件如何协作,以及如何实现基本的业务功能。通过修改和扩展这个项目,你可以深入理解SSH框架的内在工作原理,并提升你的Java Web开发技能。

    JavaWeb(SSH入门项目,适合初学者,适用学生毕业设计)网上购书系统+SQL Server 2005数据库

    本项目设计一个具有代表性的网上购书系统,目的是交换学生或读者怎样实现SSH框架整合,本项目适合于学生做毕业设计,入门中的经典之作!导入即可运行,本项目数据库采用Sql Server 2005,具体数据库已经备份到项目中...

Global site tag (gtag.js) - Google Analytics