ssh的实现主要流程

 

这是我的记录:

如果有看不清楚的请查看我的收藏可以看原代码的...

做一个ssh的例子:需要有以下几步:
这是在我的例子中的主要步骤:

他是spring整合struts/hibernate的

第一:在文件struts-config.xml中需要配置以下两个内容

<action-mappings></action-mappings>
 <action attribute="loginForm"></action>   input="/login.jsp"
  name="loginForm"
  parameter="method"
  path="/login"
  type="org.lbg.ssh.struts.action.LoginAction" scope="request">
  <forward name="add_succ" path="/add_succ.jsp"></forward>
  <forward name="login_succ" path="/login_succ.jsp"></forward>
  <forward name="login_fail" path="/login_fail.jsp"></forward>
 


<action-mappings></action-mappings>
 <action attribute="loginForm"></action>   input="/login.jsp"
  name="loginForm"
  parameter="method"
  path="/login"
  scope="request">
  <forward name="add_succ" path="/add_succ.jsp"></forward>
  <forward name="login_succ" path="/login_succ.jsp"></forward>
  <forward name="login_fail" path="/login_fail.jsp"></forward>
 


<1>控制器


<controller></controller>
 <set-property value="org.springframework.web.struts.DelegatingRequestProcessor" property="processorClass"></set-property>

<2>插件

<plug-in classname="org.springframework.web.struts.ContextLoaderPlugIn"></plug-in>
 <set-property value="/WEB-INF/applicationContext.xml" property="contextConfigLocation"></set-property>

第二:applicationContext.xml文件的配置:

然而ssh的使用前提是将struts/hibernate交给了spring来管理
此时就不用创建hibernate的工厂类了和hibernate.cfg.xml文件了
而在:hibernate.cfg.xml文件中的数据源的配置(及其其他信息)全部交给了spring来管理了.


这时spring文件中的内容

<beans></beans>
 
 <bean id="dataSoruce"></bean>   class="org.apache.commons.dbcp.BasicDataSource">
   <property name="driverClassName"></property>    value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
  
   <property name="url"></property>    value="jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=differ">
  
   <property name="username" value="sa"></property>
   <property name="password" value="bb"></property>
 
 
 <bean id="sessionFactory"></bean>   class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
   <property name="dataSource">
   <ref bean="dataSoruce"></ref>
  </property>
   <property name="hibernateProperties">
    <props></props>
     <prop key="hibernate.dialect"></prop>
     org.hibernate.dialect.SQLServerDialect
    
   
  </property>
   <property name="mappingResources">
    <list></list>
    <value></value>org/lbg/ssh/domain/Login.hbm.xml
   
  </property>
 
 
 <bean class="org.lbg.ssh.dao.BaseDAO" id="baseDAO"></bean>
   <property name="sessionFactory">
   <ref bean="sessionFactory"></ref>
  </property>
 
 
 <bean id="hibernateTemplate"></bean>   class="org.springframework.orm.hibernate3.HibernateTemplate">
   <property name="sessionFactory">
   <ref local="sessionFactory"></ref>
  </property>
 
 
 <bean id="transactionManager"></bean>   class="org.springframework.orm.hibernate3.HibernateTransactionManager">
   <property name="sessionFactory">
   <ref local="sessionFactory"></ref>
  </property>
 
 
 <bean id="abstractTxProxy"></bean>   class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
  abstract="true">
   <property name="transactionManager">
   <ref local="transactionManager"></ref>
  </property>
   <property name="transactionAttributes">
    <props></props>
     <prop key="add*"></prop> PROPAGATION_REQUIRED,-Exception
     <prop key="delete*"></prop>
     PROPAGATION_REQUIRED,-Exception
    
     <prop key="update*"></prop>
     PROPAGATION_REQUIRED,-Exception
    
     <prop key="get*"></prop> PROPAGATION_REQUIRED,readOnly
     <prop key="*"></prop> PROPAGATION_REQUIRED,readOnly
   
  </property>
 
 
 
 <bean class="org.lbg.ssh.dao.impl.LoginDAOImpl" id="loginDAOImpl"></bean>
   <property name="hibernateTemplate">
   <ref local="hibernateTemplate"></ref>
  </property>
   <property name="baseDAO">
   <ref local="baseDAO"></ref>
  </property>
 
 
 
 <bean id="loginService" parent="abstractTxProxy"></bean>
   <property name="target">
   <bean class="org.lbg.ssh.service.LoginService"></bean>
     <property name="loginDAO">
     <ref bean="loginDAOImpl"></ref>
    </property>
   
  </property>
 
 
 
 <bean class="org.lbg.ssh.struts.action.LoginAction" name="/login"></bean>
   <property name="loginService">
   <ref bean="loginService"></ref>
  </property>
 
 


package org.lbg.ssh.dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;


public class BaseDAO {

 public BaseDAO() {

 }

 private SessionFactory sessionFactory;

 public SessionFactory getSessionFactory() {
  return sessionFactory;
 }

 public void setSessionFactory(SessionFactory sessionFactory) {
  this.sessionFactory = sessionFactory;
 }

 public Session getSession() {
  return this.sessionFactory.openSession();
 }

}


package org.lbg.ssh.dao.impl;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Expression;
import org.lbg.ssh.dao.BaseDAO;
import org.lbg.ssh.dao.LoginDAO;
import org.lbg.ssh.domain.Login;
import org.springframework.orm.hibernate3.HibernateTemplate;


public class LoginDAOImpl implements LoginDAO {

 /**模板类对象**/
 private HibernateTemplate hibernateTemplate;
 
 /**使用此对象可返回sessionFactory工厂对象/session对象**/
 private BaseDAO baseDAO;

 public BaseDAO getBaseDAO() {
  return baseDAO;
 }

 public void setBaseDAO(BaseDAO baseDAO) {
  this.baseDAO = baseDAO;
 }

 public HibernateTemplate getHibernateTemplate() {
  return hibernateTemplate;
 }

 public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
  this.hibernateTemplate = hibernateTemplate;
 }

 /** ************************************************** */
 public void addNewInfo(Login login) {
  hibernateTemplate.save(login);
 }

 public boolean loginValidate(Login login) {
  //代码的实现。。。
 }

 public boolean testFind(Login login) {
  Session session = baseDAO.getSession();
  Transaction tr = null;
  try {
   tr = session.beginTransaction();
   //代码的实现。。。
  } catch (Exception er) {
   er.printStackTrace();
   return false;
  } finally {
   session.close();
  }
 }
}


主要:
spring-aop.jar
spring-web.jar
hibernate3.jar
spring-hibernate.jar
spring-orm.jar
spring-context.jar

 

 
SSH工作原理详解 阅读详情

相关推荐

如何使用 node-ssh 实现自动化部署

自动化部署的的方式有很多,之前也写过两种,今天跟大家介绍一下如何在不依赖 Jenkins 、 gitLab CI/CD 和 github Action 的情况下,自己通过 node.js 实现自动化部署。

weixin_47588164的博客 975

【SSH】SSH流程与wireshark抓包分析

SSH流程与Wireshark抓包分析

m0_55368674的博客 8481

SSH项目的实现步骤(很详细)

对架设SSH框架的整个流程和要注意的地址基本上都说到了,包括IOC和AOP等功能也有说明的代码格式

晓白初识之SSH工作流程

详细介绍SSH(Secure Shell)的工作流程

2301_81729384的博客 807

ssh详细开发流程

从开始到介绍开发步骤 逐步来建立 适合初学者使用 非常清晰的ssh开发流程

数学建模--十大经典常用算法

数学建模十大算法:灰色预测,蒙特卡洛,遗传算法,模拟退火法,组合算法,神经网络,动态规划,聚类算法,类比法,概率算法,Floyd算法

qq_51533426的博客 5645

【Linux】远程连接服务

1、什么是远程连接服务器 远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而 登录后的操作感觉就像是坐在系统前面一样。 2、远程连接服务器的功能 分享主机的运算能力 服务器类型:有限度开放连接 工作站类型:只对内网开放 3、远程连接服务器的类型(以登录的连接界面来分类) 文字接口 明文传输:Telnet、RS...

嚴 帅的博客 4683

电容式麦克风:从原理到实际电路波形解析

本文深入解析电容式麦克风的工作原理,从核心的振膜与背板结构、电荷锁定机制到场效应管放大器的作用。通过实物拆解与等效电路分析,阐明声音振动如何转换为电压信号,并指导如何用示波器实测波形,直观展现声电转换过程,适合电子爱好者和音频技术学习者。

Black的专栏 1077

Linux实现SSH无密码登录

假设服务器IP地址为192.168.1.1,机器名:cluster.hpc.org         客户端IP地址为172.16.16.1,机器名:p470-2.wangrx.sioc.ac.cn客户端用户yzhao需要使用ssh无密码登录服务器的zhaoy帐户 实现原理使用一种被称为"公私钥"

Langeldep的专栏 2906

Docker网络冲突?手把手教你解决Dify社区版无法访问172.18.0.0网段的问题

本文详细解析了在部署Dify社区版时,因Docker默认网段与局域网冲突导致无法访问172.18.0.0网段的问题。通过剖析Docker网络原理,提供了修改Docker守护进程默认地址池的根治方案,并介绍了在Compose文件中指定自定义网络等备选方法,帮助用户彻底解决网络冲突,保障服务稳定运行。

p8q9r0的博客 484

Godot 4.x 实现 JRPG 回合制战斗系统:架构、状态机与实战优化

游戏开发中,状态机是管理复杂逻辑流转的核心设计模式,尤其在回合制战斗这类事件驱动的场景中。其原理是通过定义有限的状态和明确的转移条件,来控制系统在不同阶段的行为,从而实现清晰、可维护的流程控制。这项技术的价值在于能够将杂乱的条件判断代码结构化,降低模块间的耦合度,提升代码的可读性和可扩展性。在游戏开发领域,状态机广泛应用于角色AI、UI流程、战斗系统等场景。本文以Godot引擎为例,深入探讨如何运用节点与信号驱动架构,构建一个健壮的JRPG(日式角色扮演游戏)回合制战斗系统。内容涵盖从核心的**状态机**设

weixin_33749242的博客 499

linux之SSH远程登录

以服务端为linux,客户端为windows为例 步骤 1.在linux中安装ssh服务端 命令:sudo apt-get install openssh-server(其实在ubuntu18.04中也会默认把客户端也安装上了) 查看是否安装成功:apt list | grep openssh-server 2.在windows端安装openssh for windows软件(安装过程中记得选择对所有用户有用) 查看是否安装成功:ssh -V 3.登录远程服务器 1)打开命令窗口 2)ssh 服务端用户名@

qq_35396496的博客 291

29、集成电路测试技术解析

本文深入解析了集成电路测试技术,涵盖定制电路测试资源与策略、混合模拟/数字电路测试方法、数字测试模式生成难点与解决方案,以及可控性和可观测性的核心概念。同时详细讨论了固定故障、桥接故障和开路故障等主要故障模型及其检测方法。在测试技术的综合应用与优化方面,提出了合理配置测试资源、优化测试模式和设计测试流程的策略。最后展望了测试技术的发展趋势,包括集成化测试、自动化测试和智能化测试。通过全面掌握这些测试技术,可以有效提高集成电路的质量和可靠性,推动集成电路产业的发展。

work3的博客 202

聊聊SSH原理【图解】

本文以图文方式对SSH原理进行解析(主要指远程登录,没有涉及端口转发等功能)。同时分析了非对称加密的特性,以及在实践过程中如何对加密操作进行改进。

运维老生常谈 920

计算机组成原理(第三版)唐朔飞-第四章存储器-课后习题

计算机组成原理(第三版)唐朔飞-第四章存储器-课后习题

weixin_45735391的博客 17万+

华为OD机考双机位C卷 - 敌情监控 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 敌情监控 (OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 964

git--SSH key生成步骤

在windows上使用git首先需要下载https://git-for-windows.github.io/ Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置 Github的SSH配置步骤: 第一步:设置Git的user name和email git config --global user.name "......." git con

年华飞逝的博客 1070

实验2 存储器设计与实现【计算机组成原理】

实验2 存储器设计与实现【计算机组成原理】

小心星的博客 2396

[转]git使用ssh密钥

git使用https协议,每次pull, push都要输入密码,相当的烦。使用git协议,然后使用ssh密钥。这样可以省去每次都输密码。大概需要三个步骤:一、本地生成密钥对;二、设置github上的公钥;三、修改git的remote url为git协议。一、生成密钥对。=============大多数 Git 服务器都会选择使用 SSH 公钥来进行授权。系统中的每个用户都必须提供一个公钥用于授权...

CurrentJ 132

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【SSH密钥生成与使用】

Ubuntu生成ssh密钥并使用欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如

qq_35182003的博客 9345

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

给手机Termux配置ssh!

termux 配置ssh

KeeYNgveKOn的博客 2897

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

1-7.配置ssh免密码登陆配置和ssh原理(Hadoop系列day01)

问题: 启动需要多次输入密码 关闭也需要输入多次密码 (需要输入密码的原因是底层走的是ssh协议) 一台机器给另一台机器发送命令,如果走的是ssh协议,必须输入密码,即使是ssh给本机发送指令 解决方式: 配置ssh免密码登陆配置 ssh: secure shell 安全的shell命令 SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利

此号已弃用,搬家到:https://my.oschina.net/yust5273 393

ssh-copy-id 实现免密

让, 125

SSH与SSM学习之SSH实现CRM练习15——注册登录

SSH与SSM学习之SSH实现CRM练习15注册登录 一注册演示 1 用户名已经存在 2 注册成功 二登录演示 1 用户名不存在 2 密码错误 3 登录成功 三注册和登录实现 1 注册说明 2 登录说明 3 UserAction 4 UserService 41 UserService 42 UserServiceImpl 四applicationContextxml中添加配置 五strutsxml

qiwenmingshiwo的专栏 541

配置Linux主机SSH无密码访问

通过证书签名达到Linux主机SSH无密码访问,使用ssh-keygen与ssh-copy-id来实现快速证书的生成及公钥下发,其中ssh-keygen生成一对密钥,使用ssh-copy-id来下发生成的公钥。具体操作如下: 在主机A(192.168.0.100)创建密钥,执行: 1 ssh-keygen-trsa ...

weixin_34019929的博客 161

Ubuntu16.04 SSH 免密登录

1. 生成公钥,输入命令后按四个回车。     ssh-keygen -t rsa 2. 进入到.ssh文件夹下,然后追加公钥到公共文件     cd .ssh     cat id_rsa.pub &gt;&gt; authorized_keys 3. 测试免密登录     ssh localhost ...

godadream的博客 1865
上一篇: 学好hibernate的前提是什莫
下一篇: webWork记录
libgcn
博客等级 码龄16年 0粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值