SSH搭建全过程
- 格式:docx
- 大小:332.26 KB
- 文档页数:19
SSH登录流程详解1. 前言SSH(Secure Shell)是一种网络协议,用于通过加密的方式在不安全的网络上安全地传输和执行命令。
SSH不仅提供了加密的传输,还具备了身份验证和安全访问远程主机的功能。
在本文中,我们将详细介绍SSH登录流程的步骤和流程。
2. SSH登录流程概述SSH登录流程可以分为以下几个步骤:1.建立连接:客户端与服务器建立TCP连接。
2.协议版本交换:客户端与服务器进行协议版本的交换。
3.密钥交换:生成对称密钥并进行加密通信。
4.用户身份验证:客户端使用身份验证方法验证身份。
5.创建加密会话:建立一个加密的通道用于传输数据。
6.执行命令:客户端向服务器发送执行命令请求。
接下来,我们将详细介绍每个步骤的具体流程。
3. SSH登录流程详解3.1 建立连接SSH使用TCP协议进行通信,因此首先需要建立TCP连接。
客户端通过向服务器的SSH服务监听端口(默认为22)发起连接请求,服务器接受连接并建立TCP连接。
3.2 协议版本交换在建立连接后,客户端和服务器将进行协议版本的交换。
客户端首先向服务器发送一个协议版本标识字符串,包含SSH协议版本号和一些客户端支持的特性。
服务器接收到协议版本标识字符串后,根据协议版本和支持的特性进行处理,并向客户端返回一个包含服务器协议版本和一些服务器支持的特性的响应字符串。
客户端和服务器基于协议版本和支持的特性进行进一步处理,并选择一个共同支持的协议版本。
3.3 密钥交换在协议版本交换后,客户端和服务器将开始进行密钥交换。
密钥交换的目的是为双方生成一个对称密钥,用于后续的加密通信。
密钥交换过程中,首先需要双方协商一种用于生成对称密钥的密钥交换算法。
常见的密钥交换算法有Diffie-Hellman和ECDH(Elliptic Curve Diffie-Hellman)。
客户端和服务器使用协商的密钥交换算法生成一对密钥,称为交换密钥。
交换密钥中的私钥只存储在各自的一方,公钥则发送给对方。
ssh 的连接原理
SSH(Secure Shell)是一种用于远程登录和安全数据传输的网络协议。
它通过加密通信,提供了一种安全的方式来访问远程计算机,并在客户端和服务器之间传输数据。
下面是SSH连接的工作原理:
一、客户端发起连接:用户在本地计算机上使用SSH客户端(例如OpenSSH、PuTTY等)发起连接请求。
客户端向远程计算机发送连接请求,并提供身份验证信息(通常是用户名和密码)以验证身份。
二、服务器响应:远程计算机(SSH服务器)收到连接请求后,会进行身份验证。
服务器根据提供的身份验证信息(用户名和密码),或者使用其他身份验证方法(如SSH密钥)验证客户端的身份。
三、建立安全通道:一旦客户端的身份验证成功,服务器就会与客户端建立安全通道。
在这个过程中,SSH使用加密技术(通常是对称加密和非对称加密)来保护数据在网络上的传输,从而确保通信的机密性和完整性。
四、交换密钥:在建立安全通道时,客户端和服务器还会交换密钥用于加密和解密数据。
这些密钥是在连接期间动态生成的,并且只有客户端和服务器知道。
五、安全通信:一旦安全通道建立完成,客户端和服务器之间的所有通信都会在该安全通道上进行。
数据经过加密后发送到远程计算机,远程计算机解密数据并处理请求,然后将响应数据加密后发送回客户端。
六、终止连接:当用户完成操作后,可以关闭SSH客户端,终止
与远程计算机的连接。
远程计算机也可以主动断开连接。
总的来说,SSH连接的原理是通过建立安全的加密通道,确保数据在网络上的安全传输,并且在连接期间进行身份验证,以确保通信的安全性和可靠性。
三大框架搭建步骤:先在数据库中建立库表。
新建web project选择java EE 5.0,在src中建立相应的包,右击工程名MyEclipse->add Hibernate Capabilities...,选择Annotations&Entity Manager及Core Libraries两个jar包,点击“next”点击“next”,选择数据库连接名,点击“finish”。
打开“MyEclipse Database Explorer perspective”窗口,找到之前在数据库中建立的表,选择表,右击选择“Hibernate Reserve Engineering”点击“next”选择“sequence”。
点击“finish”。
在hibernate.cfg.xml中添加“show-sql”值为“true”。
将struts的jar包classes12.jar,commons-logging-1.0.4.jar,freemarker-2.3.8.jar,jstl.jar,ognl-2.6.11.jar,standard.jar,struts2-core-2.0.11.1.jar,struts2-spring-plugin-2.0.11.2.jar,xwork-2.0.4.jar粘贴复制到WebRoot->WEB-INF->lib中。
将lib下的web.xml打开,配置如下:<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/applicationContext.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class ></listener><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></web-app>在src下新建struts.xml,配置如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><!-- struts的注入交给spring去控制--><constant name="struts.objectFactory" value="spring"/><include file="struts-default.xml"/><!-- Add packages here --><package name="struts" extends="struts-default"><action name="login" class="userAction" method="login"><result name="success">/writeDiary.jsp</result><result name="input">/login.jsp</result></action></package></struts>工程名右击:MyEclipse->Add Spring Capabilities…及Spring 2.5 J2EE Libraries和Spring 2.5 Web Libraries点击“next”点击“next”点击“finish”。
SSH框架整合步骤详解SSH框架 2009-04-09 10:47:00 阅读611 评论0 字号:大中小订阅更系统地学习Struts1.x/Struts2.x+Hibernate+Spring,请学习该开源项目Appfuse终于,终于将SSH整合成功了,弄了几个小时,可以休息了(有的朋友弄了半个月,甚至重装了系统也没弄好,哎,庆幸啊)。
碰到问题千万不要放弃,要相信没有解决不了的问题!项目结构图:jsp部分为:index.jsp;success.jsp;fail.jspUserDAO.java,User.hbm.xml自动生成,HibernateSessionFactory 是多余的。
相关的配置文件、类文件详细信息,请参看Struts+Spring+Hibernate/SSH整合开发详细二以前是整过这三个框架的,可是工作期间都不曾用过,不知不觉之中,学的东西全忘了。
这次又要开始找工作了,看着招聘启事上都写着:要求熟练掌握Struts,Hibernate或Spring框架……,没得办法,重新学呗。
Spring in Action中文版下载地址(ftp协议)ftp://222.214.218.61/book5/20080228/cf8b35cc-5bcd-497 3-b6b7-37ae3ec78391.rar如果无法下载,可以在里重新搜索首先开始搭建项目环境,步骤如下:使用平台:MyEclipse 6.0框架版本:Struts 1.2 Hibernate 3.0 Spring 2.01>添加过程:<1> 新建项目。
Package Explorer视图下,右键单击 New -> Web Project;<2> 添加Struts框架。
菜单栏MyEclipse -> Capabilities,或者右键单击新建的项目名,选择快捷菜单中的"MyEclipse"下的二级菜单;设置相关的包名后,请写一个Struts的小例子,用来测试Struts是否可用;<3> 添加Spring。
从入门到精通:构建SSH安全通道SSH命令行实用程序是远程系统的工作人员安全访问的通道。
SSH代表着“安全外壳”,所以你可能认为其最常用的使用方法就是用作一个远程外壳。
也许这是其最常见的应用,但并非使用SSH的唯一的有趣方法。
一、连接、执行远程命令并使用授权密钥1、创建一个连接为通过SSH进行通信,你首先需要建立一个到达远程服务器的连接。
使用SSH命令行实用程序时,我们有很多参数选择。
最基本的命令行参数是:1、SSH IP地址在这里,IP地址就是你想要连接的服务器的IP地址。
下面是一个简单的例子:abc:~ jmjones$ ssh 192.168.1.20The authenticity of host '192.168.1.20 (192.168.1.20)' can't be established.RSA key fingerprint is 24:1e:2e:7c:3d:a5:cd:a3:3d:71:1f:6d:08:3b:8c:93.Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.20' (RSA) to the list of known hosts.注意,上面的消息中有这样一行“The authenticity of host '192.168.1.20 (192.168.1.20)' ca n't be established.”。
这条消息意味着笔者的SSH 客户端并不知道远程服务器。
笔者在这里用了“客户端”,因为SSH命令行实用程序初始化了网络并使其成为网络客户端。
在上面的消息中,SSH程序还询问作者是否希望继续连接(Are you sure you want to continue connecting (yes/no)? )笔者的回答是“yes”,因为笔者知道这台服务器正是笔者想连接的服务器。
gitlab ssh 创建流程要在GitLab上创建SSH密钥并进行配置,您可以按照以下步骤进行操作:1. 打开终端或命令提示符,并生成SSH密钥。
在终端中输入以下命令:```shellssh-keygen -t rsa -b 4096```这将生成一个私钥(通常位于 `~/.ssh/id_rsa`)和一个公钥(位于`~/.ssh/id_`)。
2. 打开GitLab并登录到您的账户。
3. 点击个人资料设置图标(一般在右上角),然后选择"SSH keys"选项。
4. 在"SSH keys"页面中,点击"添加 key"按钮。
5. 在弹出的对话框中,将公钥复制到剪贴板中。
您可以使用以下命令将公钥复制到剪贴板:```shellpbcopy < ~/.ssh/id_```6. 在"Title"字段中输入一个描述性标题,例如"Personal SSH Key"。
7. 在"Key"字段中粘贴公钥。
您可以使用以下命令将公钥粘贴到剪贴板中:```shellpbpaste```8. 点击"Add key"按钮,将公钥添加到GitLab账户中。
9. 现在您已经成功创建了SSH密钥并将其添加到了GitLab账户中。
您可以使用SSH协议来克隆、推送和拉取存储库,而无需每次都输入密码。
请注意,生成的SSH密钥是唯一的,并且只能用于与您的GitLab账户关联的存储库。
如果您需要在其他存储库上使用SSH密钥,您需要为每个存储库生成新的密钥。
ssh工作流程及原理SSH,即安全外壳协议(Secure Shell),是一种通过网络进行远程登录的加密协议,具有安全、可靠的特性。
它能够保证传输过程中的数据安全性,以及对远程服务器进行安全管理。
本文将介绍SSH工作流程及其原理。
一、SSH基本原理SSH基于公钥密码体制,使用了非对称加密算法,具体流程如下:1.客户端向服务器发送连接请求,请求建立SSH连接。
2.服务器收到连接请求后,生成一对密钥,分为公钥(public key)和私钥(private key)。
3.服务器将公钥发送给客户端。
4.客户端使用公钥对一个随机产生的会话密钥进行加密,并发送给服务器。
5.服务器收到客户端发送的加密后的会话密钥后,使用私钥进行解密,获取会话密钥。
6.服务器和客户端通过会话密钥加密传输的数据。
通过以上过程,实现了SSH连接的建立,并确保了数据传输的安全性。
二、SSH工作流程SSH工作流程主要包括连接建立、身份验证、会话管理等步骤。
具体流程如下:1.连接建立首先,客户端向服务器发送连接请求,请求建立SSH连接。
2.身份验证连接建立后,服务器发送自己的公钥给客户端。
然后,客户端使用公钥将自己的身份信息加密后发送给服务器。
服务器收到加密后的身份信息后,使用事先保存的私钥进行解密,获取到客户端的身份信息。
服务器验证身份信息后,向客户端发送一个随机数。
客户端收到服务器发送的随机数后,使用事先保存的私钥将随机数加密后发送给服务器。
服务器收到加密后的随机数后,使用公钥进行解密,验证客户端的合法性。
3.会话管理身份验证通过后,客户端和服务器之间建立了一个会话。
在会话中,客户端和服务器通过会话密钥加密传输数据,保证数据的安全和完整性。
客户端可以向服务器发送命令,服务器执行相应的操作,并将结果返回给客户端。
4.会话结束会话结束后,客户端和服务器可以主动断开连接,或者由于网络故障等原因,连接自动断开。
三、SSH工作原理SSH的工作原理主要通过非对称加密算法、密码学和密钥管理实现:1.非对称加密算法SSH使用非对称加密算法,其中最常用的是RSA算法。
ssh三⼤框架整合Hibernate框架 1 hibernate核⼼配置⽂件 (0)orm思想 - 对象关系映射 (1)数据库信息 (2)hibernate信息 (3)映射配置 (4)hibernate核⼼配置⽂件 - 如果单纯使⽤hibernate框架,核⼼配置⽂件名称 hibernate.cfg.xml和位置 src下⾯固定的 - hibernate和spring整合时候,hibernate核⼼配置⽂件名称和位置没有固定要求的 2 hibernate映射配置⽂件 (1)实体类和数据库表映射关系—使⽤orm思想 3 hibernate操作的步骤 (1)在spring框架对hibernate框架进⾏封装,使⽤hibernateTemplateStruts2框架 1 Action操作 (1)action创建三种⽅式 - 继承类 ActionSupport (2)配置action访问路径 - 创建struts.xml配置⽂件,这个⽂件名称和位置固定 src下⾯的 (3)配置访问action的多个⽅法 - 使⽤通配符⽅式配置 (4)在action获取表单提交数据 - 获取request对象 ** 使⽤ServletActionContext类获取 - 属性封装 - 模型驱动(重点) - 表达式封装 (5)在action操作域对象 - 使⽤ServletActionContext获取域对象 (6)配置struts2的过滤器 2 值栈 (1)向值栈放数据 - set⽅法 - push⽅法 - 定义变量,⽣成get⽅法 (2)从值栈获取数据 - 在jsp中使⽤struts2标签+ognl获取 - <s:property> - <s:iterator> 3 拦截器 (1)aop和责任链模式 (2)⾃定义拦截器 - 继承MethodFilterInterceptor - 重写类⾥⾯的⽅法 - 配置拦截器和action关联Spring框架 1 spring核⼼配置⽂件 (1)名称和位置没有固定要求 (2)在spring核⼼配置⽂件中引⼊schema约束 2 创建对象 (1)xml配置⽅式:<bean id=”” class=”” scope=””/> (2)注解⽅式:四个注解 3 注⼊属性(对象类型属性) (1)xml配置⽅式: (2)注解⽅式:两个注解 - autowired - resource 3 使⽤ServletContext对象和监听器实现 (1)在服务器启动时候,加载spring配置⽂件,创建对象 (2)配置spring的监听器 (3)指定spring配置⽂件位置 4 jdbcTemplate 5 spring事务配置 (1)xml⽅式 (2)注解⽅式SSH框架整合思想 1 三⼤框架应⽤在javaee三层结构 2 struts2框架和spring整合 (1)struts2的action在spring配置 3 spring框架和hibernate框架整合 (1)hibernate的sessionFactory交给spring配置 (2)把hibernate数据库配置交给spring配置整合struts2和spring框架 1 把struts2的action交给spring管理 2 实现过程 第⼀步导⼊struts2的jar包 (1)导⼊⽤于整合的jar包 (log4j.properties为log4j的⽇志输出格式,放⼊src下⾯) (2)Spring为了整合Struts还需要额外再导⼊⼀个jar包:(该包在struts的lib⽬录下) (3)导⼊Struts2的jar包(struts2版本为2.3.24): (4)创建Actionpublic class UserAction extends ActionSupport {public String execute() throws Exception {System.out.println("Success....");return NONE;}} (5)创建Strut2的核⼼配置⽂件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><package name="demo" extends="struts-default" namespace="/"><action name="userAction" class="erAction"></action></package></struts> (6)在web.xml中配置struts2的过滤器<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></filter-mapping> (7)导⼊Spring整合Web项⽬的jar包,也就是监控项⽬启动的监听器所在的jar包 (8)创建Spring的核⼼配置⽂件并在其中引⼊约束<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/aop/schema/aop/spring-aop.xsd/schema/tx/schema/tx/spring-tx.xsd"></beans> (9)把action交给Spring进⾏配置1 <!-- 配置action的对象 -->2 <!-- 注意action是多实例的,因此我们这⾥把scope配置为prototype的 -->3 <bean id="userAction" class="erAction" scope="prototype"></bean> ①在spring配置action对象,在struts.xml中也配置action对象 ②解决: 只需要在spring⾥⾯配置action对象,不要在struts.xml中配置<struts><package name="demo1" extends="struts-default" namespace="/"><!-- class属性⾥⾯不写action全路径了,因为写,action对象创建两次写spring配置的action的bean的id值--><action name="userAction" class="userAction"></action></package></struts> 可以这样写的原因是我们导⼊了⼀个Spring整合Struts2的jar包:struts2-spring-plugin-2.3.24.jar (10)web.xml中Spring监听器的配置<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:bean.xml</param-value></context-param> (11)测试准备 ①所需的为Struts2的核⼼配置⽂件:struts.xml ②Spring的配置⽂件:bean.xml ③项⽬的配置⽂件:web.xml ④Struts2的UserAction类 ⑤在UserAction中对UserService的调⽤ ⑥UserService中对UserDao的调⽤ ⑦UserDao类的编写struts.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><package name="demo1" extends="struts-default" namespace="/"><!-- class属性⾥⾯不写action全路径了,因为写,action对象创建两次写spring配置的action的bean的id值--><action name="userAction" class="userAction"></action></package></struts>bean.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/aop/schema/aop/spring-aop.xsd/schema/tx/schema/tx/spring-tx.xsd"><bean id="userAction" class="erAction"><property name="userService" ref="userService"></property></bean><bean id="userService" class="erService"><property name="userDao" ref="userDaoImp"></property></bean><bean id="userDaoImp" class="erDaoImp"></bean></beans>web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" <display-name>spring-day4-ssh</display-name><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:bean.xml</param-value></context-param><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></filter-mapping><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list></web-app>UserAction.javaimport com.opensymphony.xwork2.ActionSupport;import erService;public class UserAction extends ActionSupport {private UserService userService;public void setUserService(UserService userService) {erService = userService;}public String execute() throws Exception {userService.add();return NONE;}}UserService.javapublic class UserService {private UserDao userDao;public void setUserDao(UserDao userDao) {erDao = userDao;}public void add() {userDao.add();}}UserDao.java 其实现类public class UserDaoImp implements UserDao {public void add() {System.out.println("UserDaoImp....");}} (12)测试结果: 可以在后台观察到如下测试结果:image ⾄此,Spring和Struts2的整合已经完毕,然后是Spring对Hibernate的整合了。
SSH架构的搭建过程1准备工作a)安装Oracl数据库建立Collecting_S 空间建立Collecting_U用户创建用户数据表B_Userb)安装javac)安装Tomcatd)安装Myeclipse2绑定Tomcat和Java2.1设定字符集a)点击Window菜单,选择Preferences进行参数设置b)选择Myeclipse 的Files and JSP选择Encoding:ISO 10646 (UTF-8)c)选择Myeclipse 的Files and PHP选择Encoding:ISO 10646 (UTF-8)d)设置当前工程中的字符集当工程建立后,选中工程,点击右键,选择2.2绑定Javaa)点击Window菜单,选择Preferences进行参数设置b)先择Java的Installed JREsc)点击Addd)选择Standard VMe)点击Directoryf)选择路径C:\Program Files\Java\jdk1.7.0_04g)移除原来的Java包2.3绑定Tomcata)点击服务器图标,选择Configure Serverb)选择Servers的Tomcat 7.xc)选择Enable,浏览Tomcat home Directory:C:\apache-tomcat-7.0.23d)点击Apply,查看Tomcat的JDK是否正常3建立数据源a)点击Window的Show View的Otherb)选择Myeclipse Database下的DB Browserc)在DB Browser 窗口下点击鼠标右键,选择New项d)填写Driver Template :Oracl (Thin Driver)e)填写Driver Name :如ORCL_123f)填写Connection URL :jdbc:oracle:thin:@10.255.8.123:1521:ORCLg)填写User Name :Collecting_Uh)填写Password : Collecting_Pi)点击Add JARs:E:\app\Legend8045dfeo\product\11.2.0\client_1\jdbc\lib\ ojdbc6.jar j)Driver Name:oracle.jdbc.OracleDriver4添加调试显示在工程的初始包src路径下创建一个文件log4j.properties内容为:# Configure logging for testing: optionally with log filelog4j.rootLogger=Debug, stdout# log4j.rootLogger=WARN, stdout, logfile#print to screenlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d %p [%c] - %m%n#write to log filelog4j.appender.logfile=org.apache.log4j.FileAppenderlog4j.appender.logfile.File=target/spring.logyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d %p [%c] - %m%n5清除Tomcat中无用的工程(加快速度)6建立工程,搭建HHS1框架a)点击File的New的Web Projectb)填写Project Name:pCollectingS1c)选择use Defeat JRE(Currently’JDK1.7.0_04)d)发布测试点击发布图标点击Add按钮选择Server为Tomcat 7.X打开IE浏览,输入http://localhost:8080/pCollectingS1/显示This is my JSP page6.1添加Spring 框架a)选中工程pCollecting 点击鼠标右键,选择Myeclipse 的Add Spring Capabilitiesb)选择Spring 3.0c)选择数据包Spring 3.0 AOP LibrariesSpring 3.0 Core LibrariesSpring 3.0 Persistence Core LibrariesSpring 3.0 Persistence JDBC LibrariesSpring 3.0 WEB Librariesd)选择copy checked Liberty Contents to Project Folder:/WebRoot/WEB-INF/Lib7添加Hibernate框架8添加Struts 框架9反向工程:根据数据库中的表来生成POJO类、DAO接口和实现类、hibernate 配置文件等a)进入Database Browserb)连接到数据库c)找到Table 的U_User数据表d)点击右键选择Hibernate Reverse Engineering10创建工作路径包a)创建接口er.Service在该包下创建接口IUserLogin修改为public interface IUserLogin {Object Login(String strUserNo, String strPassword);}创建对象(实现)包com.pCollecting.DB.U_User.Service.Impl创建是实现类UserLoginImplmport java.util.List;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.pCollecting.DB.U_User.POJO.UUserDAO;import com.pCollecting.DB.U_User.Service.IU_UserLogin;public class U_UserLogin extends UUserDAO implements IU_UserLogin {private static final Logger log =LoggerFactory.getLogger(UUserDAO.class);// 为了输出日志文件public Object Login(String userNo, String strPWD) {log.debug("finding the UUser for login");String queryString = "from UUser where userNo = '" + userNo + "' and pwd = '" + strPWD + "'";List<?> lst = (List<?>)getHibernateTemplate().find(queryString);if (lst.size() != 0) {return lst.get(0);}return null;}}修改ApplicationContext.xml将dao改为接口<bean id="UUserDAO"class="er.POJO.UUserDAO"> <property name="sessionFactory"><ref bean ="sessionFactory" /></</bean ></ <bean id="class="er.修改public class UserLoginImpl 类public class UserLoginImpl extends UUserDAO implements IUserLogin {private static final Logger log = LoggerFactory.getLogger (UUserDAO.class );// 为了输出日志文件public Object Login(String userNo, String strPWD) {log .debug("finding the UUser for login");try {String queryString = "from UUser where userNo = '" + userNo+ "' and pwd = '" + strPWD + "'";List<?> lst = (List<?>) getHibernateTemplate().find(queryString);if (lst.size() != 0) {return lst.get(0);}} catch (RuntimeException re) {log .error("find the UUser for login failed", re);throw re;}return null ; } 11 配置侦听在Web.XML 文件中添加侦听(前面)<!-- 根据实际spring 配置文件目录进行配置--><!-- 如果spring 配置文件被命名为applicationContext.xml ,并且放在WEB-INF 目录下,则不需要配置<context-param>--><!-- 因为ContextLoaderListener 默认在WEB-INF 目录下寻找名为applicationContext.xml 的文件--><context-param ><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/application*.xml</param-value> </context-param><!-- 载入Spring ApplicationContext --><listener><listener-class>org.springframework.web.context.ContextLoaderList ener</listener-class></listener><!-- 支持session scope的Spring bean --><listener><listener-class>org.springframework.web.context.request.RequestContextListener</l istener-class></listener>测试建立main类进行测试public class Test {/*** @param args*/public static void main(String[] args) {ApplicationContext acx = new FileSystemXmlApplicationContext( "/WebRoot/WEB-INF/applicationContext.xml");IUserLolgin ul = (IUserLolgin) acx.getBean("userlogin");BUser bUser = (BUser) erLogin("1001", "123456");if (bUser == null) {System.out.println("error");return;}System.out.println("Success UserNo=" + bUser.getUserNo());}添加添加登录jsp添加登录正确jsp添加登录错误jsp添加类package com.pCollecting.struts.action;import org.apache.struts.actions.DispatchAction;import org.springframework.web.context.WebApplicationContext;importorg.springframework.web.context.support.WebApplicationContextUtils;public class SuperAction extends DispatchAction {protected Object getBean(String id) {WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(this.servlet.getServletContext());return ctx.getBean(id);}}修改UserLoginActionpublic class UserLoginAction extends SuperAction {/** Generated Methods*//*** Method execute* @param mapping* @param form* @param request* @param response* @return ActionForward*/public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { UserLoginForm userLoginForm = (UserLoginForm) form;IUserLolgin userLogin = (IUserLolgin)getBean("userlogin");BUser user = (BUser)erLogin(userLoginForm.getUserno(),userLoginForm.getPassword());if (user == null){// forward to errorrequest.setAttribute("errorInfo", userLoginForm.getUserno() + ";" + userLoginForm.getPassword());return mapping.findForward("err");} else {// forward to successrequest.setAttribute("LoginInfo", userLoginForm.getUserno() + ";" + userLoginForm.getPassword());request.setAttribute("message", "亲爱的"+ user.getName() + ":欢迎您!");return mapping.findForward("succ");}}}。
SSH框架的搭建详细图⽂教程转载-6.在MySQL中新建⼀个表,⽤来测试数据我在这⾥准备做⼀个注册登录功能,所以在test⾥建了⼀个user表,表⾥的字段有id、username、password、nickname四个字段。
nickname⽤来测试中⽂是否乱码。
SQL语句:CREATE TABLE `user` (`id` bigint(20) unsigned NOT NULL auto_increment COMMENT 'ID',`username` varchar(40) character set utf8 NOT NULL COMMENT '⽤户名',`password` varchar(40) collate utf8_unicode_ci NOT NULL COMMENT '密码',`nickname` varchar(40) character set utf8 NOT NULL COMMENT '昵称',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ciCOMMENT='⽤户信息表';SSH框架搭建步骤:1. 新建⼀个项⽬。
打开MyEclipse,新建⼀个Web项⽬,起名就叫SSH,点击完成,若弹出提⽰点Yes即可。
2.添加Struts框架。
右键这个项⽬,选择MyEclipse->Add StrutsCapabilities。
在弹出的菜单中把包的路径改⼀下, Base package for new classes选项中的路径com.yourcompany.struts改成com.ssh.struts, 点击完成。
展开WebRoot中的WEB-INF⽂件夹,看到⽬录结构如下图,证明Struts框架添加完成。
为了能够很好的记住Struts1.0+Hibernate3+Spring三者的整合,我写了这篇Eclipse搭建SSH全过程,中间可能有很多欠缺的地方,希望大家不要介意。
首先新建个动态的WEB工程,右键New个Project,查找出Dynamic Web Project 工程,如下图所示:再点击Next,给自己的动态工程命名,叫MySSHDemo,在Target runtime下降Tomcat6.0也配好,这个大家应该会吧,直接找G:\Program Files\Tomcat 6.0就可以了,我的是安装在在G盘,你们找你们自己的目录下Tomcat文件夹就好了。
点击下一步Next,出现如下图所示默认output folder我们将其改成如下所示:好了,我们现在将搭建SSH需要的jar包放到WebContent文件夹下的WEB-INF文件夹下的lib文件夹下,比较绕口吧!这些你在网上找下,全部放进去,选中全部点击邮件Add to Build Path就好!记得,别忘记你所连接的数据库驱动哦!我们还是以登陆为例子进行操作吧!首先我们新建个实体类Student,点击src右键new个Class,如下所示:建好之后,我们写下Student类:package com.sshdemo.entity; public class Student {private String stuNo;private String stuPass;private String stuName;public Student() {super();}public Student(String stuNo, String stuPass, String stuName) { super();this.stuNo = stuNo;this.stuPass = stuPass;this.stuName = stuName;}public String getStuNo() {return stuNo;}public void setStuNo(String stuNo) {this.stuNo = stuNo;}public String getStuPass() {return stuPass;}public void setStuPass(String stuPass) {this.stuPass = stuPass;}public String getStuName() {return stuName;}public void setStuName(String stuName) {this.stuName = stuName;}}之后,我们再在此包下右键new个student.hbm.xml:如下本来Next是可以通过其他的dtd文件的,但是我直接Finish,从别的**.hbm.xml 中将<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""/hibernate-mapping-3.0.dtd">Copy进去,我们在这里面可以将实体类里面的字段与数据库字段进行对应起来完整的student.hbm.xml代码如下:<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.sshdemo.entity.Student"table="student"><id name="stuNo"type="ng.String"><column name="stuNo"/></id><property name="stuPass"column="stuPass"type="ng.String"length="20"/><property name="stuName"column="stuName"type="ng.String"length="20"/></class></hibernate-mapping>现在我们创建StudentDao接口,此接口含一个方法名,是实现学生的登录功能,StudentDao.java类,包名为com.sshdemo.daopackage com.sshdemo.dao;import com.sshdemo.entity.Student;public interface StudenDao {public Student login(String stuNo,String stuPass);}再在此包下实现这个接口类StudentDaoImpl,package com.sshdemo.dao;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.sshdemo.entity.Student;public class StudentDaoImpl extends HibernateDaoSupport implements StudentDao {@SuppressWarnings("unchecked")@Overridepublic Student login(String stuNo, String stuPass) {String str[]={stuNo,stuPass};List<Student> list=getHibernateTemplate().find("from Student where stuNo=? and stuPass=?",str);if(list.size()>0){return list.get(0);}return null;}}下面我们创建下StudentForm类,此类基本与Student类相同,新建包名为com.sshdemo.actionform下的StudentForm类package com.sshdemo.actionform;import org.apache.struts.action.ActionForm;public class StudentForm extends ActionForm{/***private static final long serialVersionUID = 1L; private String stuNo;private String stuPass;private String stuName;public String getStuNo() {return stuNo;}public void setStuNo(String stuNo) {this.stuNo = stuNo;}public String getStuPass() {return stuPass;}public void setStuPass(String stuPass) { this.stuPass = stuPass;}public String getStuName() {return stuName;}public void setStuName(String stuName) { this.stuName = stuName;}接下来我们新建个Action,起名字叫StudentAction,在包com.sshdemo.action 下package com.sshdemo.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import com.sshdemo.actionform.StudentForm;import com.sshdemo.dao.StudentDao;import com.sshdemo.entity.Student;public class StudentAction extends DispatchAction {private StudentDao sdao;public void setSdao(StudentDao sdao) {this.sdao = sdao;}public ActionForward Login(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception {StudentForm sform = (StudentForm) form;//stuNoString stuNo = sform.getStuNo();//stuPassString stuPass = sform.getStuPass();Student stu = sdao.login(stuNo, stuPass);if (stu != null) {HttpSession session = request.getSession();session.setAttribute("stu", stu);return mapping.findForward("login");} else {return mapping.findForward("fail");}}}接下来最为关键了,就是配置文件的配置,这里主要是web.xml、applicationContext.xml以及struts-config.xml.1.web.xml<?xml version="1.0"encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xmlns:web="/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID"version="2.5"><display-name>MySSHDemo</display-name><!-- 加入struts配置--><servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value> </init-param><init-param><param-name>debug</param-name><param-value>3</param-value></init-param><init-param><param-name>detail</param-name><param-value>3</param-value></init-param><load-on-startup>0</load-on-startup></servlet><!-- 加入spring配置--><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationContext.xml</param-value> </context-param><!--添加监听器--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</list ener-class></listener><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>2.applicationContext.xml<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-2.0.xsd"> <bean id="dataSource"class="mons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName"value="com.mysql.jdbc.Driver"></property><property name="url"value="jdbc:mysql://localhost:3306/test"></property><property name="username"value="root"></property><property name="password"value="1234"></property><property name="maxActive"value="100"></property><property name="maxIdle"value="30"></property><property name="maxWait"value="500"></property><property name="defaultAutoCommit"value="true"></property> </bean><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"ref="dataSource"/><property name="mappingResources"><list><value>com/sshdemo/entity/Student.hbm.xml</value> </list></property></bean><bean id="studentDAO"class="com.sshdemo.dao.StudentDaoImpl"> <property name="sessionFactory"ref="sessionFactory"/> </bean><bean name="/student"class="com.sshdemo.action.StudentAction"> <property name="sdao"ref="studentDAO"/></bean></beans>3.struts-config.xml<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN""/dtds/struts-config_1_2.dtd"> <struts-config><form-beans><form-bean name="studentForm"type="com.sshdemo.actionform.StudentForm"/></form-beans><action-mappings><action name="studentForm"path="/student"validate="true"type="org.springframework.web.struts.DelegatingActionProxy"scope="request"parameter="action"><forward name="login"path="/main.jsp"/><forward name="fail"path="/login.jsp"/></action></action-mappings></struts-config>此三个配置文件都在同一目录WEB-INF下,我们现在写下login.jsp以及main.jsp页面,login.jsp是用户登录界面:<%@page language="java"contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=utf-8"> <title>登录界面</title></head><body><form action="student.do?action=Login"method="post"><table><tr><td>用户名:</td><td><input type="text"name="stuNo"></td></tr><tr><td>密 码:</td><td><input type="password"name="stuPass"></td></tr><tr><td><input type="submit"value="登录"></td><td><input type="reset"value="重置"></td></tr></table></form></body></html>main.jsp是登录成功后进入的界面;<%@page language="java"contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><%@page import="com.sshdemo.entity.*"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=utf-8"><title>登录成功后界面</title></head><body><%Student stu=(Student)session.getAttribute("stu");%><h1>欢迎你<%=stu.getStuName() %></h1></body></html>整合就这样结束,我自己在整合的时候有事一不小心一个字母写错就纳闷了,花时间啊!呵呵,不过会看错误提示的话也很快解决问题的!这个是我的总结构部署数据库,呵呵自己随便建的也给初学者看下吧很容易吧,按照这个步骤很好弄的!如果有什么问题的话可以发邮件问我:xuejiale929@。