搭建SSH详细步骤及相关说明

 

因为手里已有相关jar,为方便我搭建的是:Struts2.0+Hibernate3.3+Spring3.0,数据库:MySQL

如果想搭建最新的,在官网上下载最新jar即可。

这里会对比MyEclipse自动配置和手动配置,直接说搭建步骤,过程中说明一下一些重要的jar的作用。

1、新建web项目SSH

2、Struts2搭建http://struts.apache.org/download

通过MyEclipse搭建:

选择需要用到的jar,

finish后,会生成struts.xml,以及Struts 2.1 libraries,展开Struts 2.1 libraries,我们可以看到导入的jar的路径:

这样的路径是绝对的,以后项目迁移环境了,这些jar也就不能用了,项目也就不能正常运行了。我们希望jar是跟着项目目录走的,所以将下载好的struts2的jar(下载struts-*-all.zip解压后,struts/lib目录下是struts所有的相关的jar包)放到WEB-INF/lib下,并右击Struts2.1 Libraries-->Build Path-->Remove from Build Path,移除自动导入的jar。

几个主要jar包说明:

commons-logging-1.0.4.jar        日志组件

freemarker-2.3.13.jar                一个基于模板生成文本输出的通用工具

ognl-2.6.11.jar         对象图导航语言(jar包库)

strut2-core-2.1.6.jar                 Struts2核心jar包

xwork-core-2.1.2.jar                 xwork核心包

commons-io-1.2.3.jar                io包

commons-fileupload-1.0.4.jar     文件上传组件

javassist-3.7.ga.ja                    扩展java类和实现

commons-lang-2.5.jar               基础工具包,封装一些常用的基础操作

3、Spring搭建(http://www.springsource.com/download/community)

通过MyEclipse搭建:

finish后,会生成applicationContext.xml和Spring 3.0.5 Libraries,下载Spring所需jar(spring-framework-**.zip解压后,文件夹下的dist目录下所有jar),放入WEB-INF/libs下,右击Spring 3.0.5 Libraries-->Build Path-->Remove from Build Path,移除自动导入的jar。

几个主要jar包说明:

struts2-spring-plugin-2.0.14.jar                Struts2+Spring整合包

spring-core-3.0.5.jar                                Spring核心工具包

spring-context-3.0.5.jar                           为Spring提供核心扩展

spring-context-support-3.0.5.jar               为Spring提供核心扩展

spring-beans-3.0.5.jar                              管理beans的工具

spring-expression-3.0.5.jar                       表达式语言

spring-web-3.0.5.jar                                 Web应用开发包

spring-aspects-3.0.5.jar                            提供对AspectJ的支持,以便可以方便的将面向方面的功能集成进IDE中

4、建立数据源

我这里用的数据库是MySQL,首先安装MySQL,安装MySQL可视化的管理工具,我这里用的是Navicat Premium。在Navicat Premium创建数据库sshd,新建user表:

打开MyEclipse Database Explorer窗口,在空白处右击new...新建数据源:需要添加mysql连接数据库的jar:mysql-connector-java.jar

finish后双击连接新建的数据源MySQL。

5、Hibernate搭建http://sourceforge.net/projects/hibernate/files/hibernate3/

通过MyEclipse搭建:

Spring与Hibernate有两种方式整合,一种是不要hibernate.cfg.xml这个文件,一个是要这个文件,这里只讲解有这个文件的情况。

finish后,会生成hibernate.cfg.xml、HibernateSessionFactory.java和Hibernate 3.3.2 Libraries,下载Hibernate所需jar放到WEB-INF/lib目录下,右击Hibernate 3.3.2 Libraries-->Build Path-->Remove from Build Path,移除自动导入的jar。

hibernate3.jar                                核心类库

antlr-2.7.6.jar            代码扫描器,用来翻译HQL语言

commons-collections-3.2.jar    Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大

dom4j-1.6.1.jar           一个java的XML API,类似于jdom,用来读写XML文件的

javassist-3.9.0.GA.jar       Javassist字节码解释器

jta-1.1.jar              标准的JTA API

slf4j-api-1.5.8.jar

lf4j-nop-1.5.2.jar

6、配置S2SH

在web.xml中配置struts2、spring

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>SSH</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <!--struts Framework start -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--struts Framework end --> <!--Spring Framework start -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--Spring Framework end -->
</web-app>

将数据库中的表映射到项目中:

在项目src下新建包entity、dao,用来存放映射出来的文件。在MyEclipse Database Explorer窗口,双击“MySQL”连接连接数据源,选择需要映射的表。

同时你也可以配置多表之间一对一、一对多的关系。

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">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration> <session-factory>
<!-- Database connection settings -->
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.url">jdbc:mysql://localhost:3306/sshdb</property>
<property name="connection.username">root</property>
<property name="connection.password">1234</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="myeclipse.connection.profile">MySQL</property> <!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property> <!-- transaction自动提交 ,配置Quartz-->
<property name="connection.autocommit">true</property> <!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<property name="format_sql">true</property> <!-- 配置映射文件 -->
<mapping resource="joanna/yan/entity/User.hbm.xml" />
</session-factory> </hibernate-configuration>

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-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"> <!-- 配置SessionFactory,由Spring容器来管理Hibernate -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>
<!-- 配置OpenSessionInView拦截器 -->
<bean id="OSIVInterceptor" class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 将事务管理器通知化 -->
<tx:advice transaction-manager="transactionManager" id="txAdvice">
<tx:attributes>
<tx:method name="query" isolation="DEFAULT" propagation="REQUIRED"/>
<tx:method name="find*" isolation="READ_COMMITTED" propagation="REQUIRED"/>
<tx:method name="update*" isolation="SERIALIZABLE" />
<tx:method name="save*" isolation="SERIALIZABLE"/>
<tx:method name="delete*" isolation="SERIALIZABLE"/>
<tx:method name="*" isolation="READ_COMMITTED"/>
</tx:attributes>
</tx:advice>
<!-- 织入事务管理通知 -->
<aop:config proxy-target-class="true">
<aop:pointcut expression="execution(* joanna.yan.action.*.*(..))" id="txcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txcut"/>
</aop:config> <!-- 配置dao -->
<bean id="UserDAO" class="joanna.yan.dao.UserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean> <!-- 配置Action -->
<!--但是现在有个冲突struts中的一个类中可以有多个方法,也就是说有多个action,而spring中却只能是单个的,
这时就有冲突,需要在spring的配置文件中加上scope="prototype"这句话,spring的bean默认是单例的,
也就是说只能new一个实例,但是当用struts的时候,需要将scope配置成proprtype的,它表示每个访问就new一个实例。 -->
<bean id="UserAction" class="joanna.yan.action.UserAction" scope="prototype">
<property name="userDAO" ref="UserDAO"></property>
</bean>
</beans>

struts.xml:(因为先前手动导入的Struts jar是2.0的,这样XML中dtd声明改成2.0)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<constant name="struts.action.extension" value="do,action,*,"></constant> <package name="UserPackage" extends="struts-default">
<!--SysUserAction为applicationContext.xml中配置的bean的id
struts.xml中的class不再是action类的全路径地址,而是spring配置文件中的bean的id的名字,两者必须一致。
而spring的配置文件中的class就是原先在struts.xml中配置的class的路径-->
<action name="user" class="UserAction" >
<result name="success">/index.jsp</result>
<result name="default">/index.jsp</result>
</action>
</package> </struts>

User.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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="joanna.yan.entity.User" table="user" catalog="sshdb">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" /><!--主键生成策略 -->
</id>
<property name="username" type="java.lang.String">
<column name="username" length="20" not-null="true" />
</property>
<property name="age" type="java.lang.Integer">
<column name="age" not-null="true" />
</property>
</class>
</hibernate-mapping>

7、测试

UserAction.java

package joanna.yan.action;

import java.util.List;
import joanna.yan.dao.UserDAO;
import joanna.yan.entity.User;
import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport{
private User user;
private UserDAO userDAO;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
@Override
public String execute() throws Exception {
List<User> list=userDAO.findAll();
for (User user : list) {
System.out.println(user);
}
return "success";
}
}

测试结果:

源码:http://pan.baidu.com/s/1dEznL1v    提取码:czsq

搭建SSH的更多相关文章

  1. Mac下maven工程的创建,并搭建SSH环境

    最近项目有用到maven,就特地学了一下.maven的一句话攻略就是,项目托管.帮你解决各种项目琐事:清理,导包....等等. 首先先到apach官网去下载一个maven的包,http://maven ...

  2. Eclipse搭建SSH(Struts2+Spring+Hibernate)框架教程

    | 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 确实,刚创博客,对于这个陌生的东西还是有些许淡然.这是我的第一篇博文,希望能给你们有帮助,这就是我最大的乐趣! 好了下面进入正题: SS ...

  3. 用eclipse搭建SSH(struts+spring+hibernate)框架

    声明: 本文是个人对ssh框架的学习.理解而编辑出来的,可能有不足之处,请大家谅解,但希望能帮助到大家,一起探讨,一起学习! Struts + Spring + Hibernate三者各自的特点都是什 ...

  4. myeclipse搭建SSH框架

    搭建SSH框架 Struts+hibernater+spring架构(myeclipse) 右击,首先加入spring,加入hibernater,再加入struts2 复制jar包(把tomcat发布 ...

  5. MyEclipse8.5快速搭建SSH框架

    来源于:http://jingyan.baidu.com/article/a378c960a78125b3282830cc.html MyEclipse8.5快速搭建SSH框架 使用版本: Strut ...

  6. intellij idea搭建ssh开发框架之绑定数据源

    原文:intellij idea搭建ssh开发框架之绑定数据源 在intellij idea中绑定数据源并生成hibernate实体对象.在IDE中的右边找到Database标签. 点击弹出窗口中的图 ...

  7. [JavaEE] SSH框架笔记_eclipse搭建SSH框架详解

    SSH框架是最常用的框架之一,在搭建SSH框架的时候总有人遇到这样,那样的问题.下面我介绍一下SSH框架搭建的全过程. 第一步:准备工作. 下载好eclipse,Struts2,Spring,Hibe ...

  8. Linux搭建SSH服务器

    Linux 远程登录服务:ssh ·SSH是标准的网络协议,可用于大多数UNIX操作系统,能够实现字符界面的远程登录管理,它默认使用22号端口,采用密文的形式在网络中传输数据,相对于通过明文传输的Te ...

  9. 搭建SSH环境之添加所需jar包

    一.首先介绍要添加框架环境: JUnit Struts2 Hibernate Spring (1)配置JUnit /**-------------------------添加JUnit-------- ...

随机推荐

  1. hdu4908(中位数)

    传送门:BestCoder Sequence 题意:给一个序列,里面是1-N的排列,给出m,问以m为中位数的奇数长度的序列个数. 分析:先找出m的位置,再记录左边比m大的状态,记录右边比m大的状态,使 ...

  2. sys_refcursor的使用方法实例

    --创建过程,參数为sys_refcursor,为out型 create or replace procedure aabbsys_refcursor(o out sys_refcursor) is ...

  3. Eclipse中的Maven项目报Unbound classpath variable错误

    今天更新了最新版的Eclipse luna 4.4版本号,svn更新了项目后,系统一直报错,经查看在Problems窗体中发现一堆错误.提演示样例如以下:     Unbound classpath ...

  4. 数学之路-python计算实战(19)-机器视觉-卷积滤波

    filter2D Convolves an image with the kernel. C++: void filter2D(InputArray src, OutputArray dst, int ...

  5. BC 2015在百度之星程序设计大赛 - 预赛(1)(KPI-树董事长)

    KPI Accepts: 517 Submissions: 2185 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 ...

  6. ZTESoft 持续集成 编年史 之 持续集成探索---平台选择

    2012 年 7.8 月份,我们逐渐了解了持续集成的概念,同时我们家庭作坊的dailybuild方式不断爆出各种问题,并且已经无法满足日益增长的各种需求. 我们开始探索持续集成的不同实现方式,首先我们 ...

  7. C#语言基础原理及优缺点

    一.原理: C#是专门为.net程序框架而创造的语言. .net框架有ms的.netFramework:Mono的.NetFramework(也是符合.net IL语言,CTS规范,CLS规范, CL ...

  8. Effective C++:条款28:避免返回 handles 指向对象内部成员

    (一) 有时候为了让一个对象尽量小,能够把数据放在另外一个辅助的struct中,然后再让一个类去指向它.看以下的代码: class Point { public: Point(int x, int y ...

  9. CSS选项卡

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org ...

  10. pygame各个模块概述

    在pygame中,有很多模块,每个模块对应着不同的功能,如果我们知道这些模块是做什么的,那么,对我们的游戏开发会起到关键性的作用. 我们就说说pygame中的各个模块吧!!! #pygame modu ...