搭建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.0//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";
}
}
测试结果:

如果此文对您有帮助,打赏我一下吧~

搭建SSH详细步骤及相关说明的更多相关文章
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:SSH框架(Struts2+Spring+Hibernate)搭建整合详细步骤
在实际项目的开发中,为了充分利用各个框架的优点,通常都会把 Spring 与其他框架整合在一起使用. 整合就是将不同的框架放在一个项目中,共同使用它们的技术,发挥它们的优点,并形成互补.一般而言,在进 ...
- vue框架搭建的详细步骤(一)
在这里我们先快速的搭建一个vue的脚手架: (1).在安装vue的环境之前,安装NodeJS环境是必须的.可以使用node -v指令检查,需要保证安装了4.0版本以上的nodeJS环境. 没有安装的话 ...
- Hbase 0.98集群搭建的详细步骤
准备工作 Hbase的搭建是依赖于Hadoop的,Hbase的数据文件实际上存储在HDFS文件系统中,所以我们需要先搭建hadoop环境,之前的博文中已经搭建过了(详见http://www.cnblo ...
- hadoop2.6.4的HA集群搭建超详细步骤
hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFS HA.YARN等.最新的hadoop-2.6.4又增加了YARN HA 注意:apache提供的hadoop-2.6.4的安装包是 ...
- vue框架搭建的详细步骤之项目结构(二)
上一篇中简单的创建了一个脚手架,这篇简单的讲一下脚手架的项目结构: (1).build/ 此目录包含开发服务器和生产webpack构建的实际配置.通常,您不需要触摸这些文件,除非您要自定义We ...
- elk搭建的详细步骤以及说明
一:准备工作 1.准备一台虚拟机 192.168.175.222 elk-node2 2.关闭防火墙以及selinux 命令:systemctl stop firewalld # ...
- 使用 IntelliJ IDEA 2016和Maven创建Java Web项目的详细步骤及相关问题解决办法
Maven简介 相对于传统的项目,Maven 下管理和构建的项目真的非常好用和简单,所以这里也强调下,尽量使用此类工具进行项目构建, 它可以管理项目的整个生命周期. 可以通过其命令做所有相关的工作,其 ...
- 利用docker搭建yii2 详细步骤
定位镜像 在hub.docker.com 搜索yii2,并且最后定位到 https://hub.docker.com/r/codemix/yii2-base/codemix/yii2-base 然后在 ...
- 搭建zabbix详细步骤
关闭selinux和防火墙 selinux关闭: 1 命令查看出selinux的状态sestatus -v2 临时关闭 selinuxsetenforce 03 永久关闭selinuxvi /etc/ ...
随机推荐
- 2.5美元每月的VPS, host1plus
国内用的比较多的国外VPS应该算的上是Linode和DigitalOcean了,和他们相比Host1plus在价格上更有优势,最低每月2.5刀,也就相当于每月30多块的话费,而且Host1Plus支持 ...
- jQuery代码节选(事件)
事件 1.ready()$(document).ready(function() { //代码});简写:$(function( { //代码});该事件是会在页面加载完后执行,相当于onloca() ...
- SQL Server CONVERT() 截取日期
SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSELECT CONVERT(varchar(100), GETDATE() ...
- 使用--gc-section编译选项减小程序体积
本周在给程序添加功能的时候,突然发现,我只是写了几个函数,还没调用,size就变大了.这肯定是不行的嘛,没用的函数就应该不链接进来,占用我宝贵的空间. 这种功能,讲道理编译器肯定要支持的,于是搜了一下 ...
- 使用Powershell收集服务器信息
function Get-OSInfo ([string]$Server) { $object = Get-WmiObject win32_computersys ...
- CSS尺寸和字体单位-em、px还是%
在页面整体布局中,页面元素的尺寸大小(长度.宽度.内外边距等)和页面字体的大小也是重要的工作之一.一个合理设置,则会让页面看起来层次分明,重点鲜明,赏心悦目.反之,一个不友好的页面尺寸和字体大小设置, ...
- 分析nuget源码,用nuget + nuget.server实现winform程序的自动更新
源起 (个人理解)包管理最开始应该是从java平台下的maven开始吧,因为java的开发大多数是基于开源组件开发的,一个开源包在使用时很可能要去依赖其他的开源包,而且必须是特定的版本才可以.以往在找 ...
- Worktile 技术架构概要
其实早就该写这篇博客了,一直说忙于工作没有时间,其实时间挤挤总会有的,可能就是因为懒吧!从2013年11月一直拖到现在,今天就简单谈谈 Worktile 的技术架构吧 . Worktile 自上线到现 ...
- SSH实战 · AJAX异步校验
前台JS代码 /*异步验证用户名的输入格式以及是否存在*/ function CheckUsername(){ /*取到用户名输入框*/ var nametxt = documen ...
- 不知道张(zhāng)雱(pāng)是谁?你out了!
张(zhāng)雱(pāng)是谁?也许你已经听说过了,也许你还没听说过呢,不过你一定听说过老刘——刘强东,没错,这二人是有关系的,什么关系,京东是老刘的,而张雱呢?张雱是京东旗下52家关联公司法人代 ...