ssh xml
SSH模型
SSH模型杨涛Servlet实例,分析每一句话。
怎么获取前台参数怎么连接数据库,操作数据库怎么数据显示到前台zA于华生SSH:配置一个:Structs+Hibernate的系统;1,怎么配置Structs能获取数据和跳转。
2,怎么用HIBERNATE连接数据库3,怎么用HIBERNATE操作数据库柳瑶SSH:配置一个:Structs+Hibernate的系统;Spring加上去。
Structs对应到Servlet,在其上的一个封装。
1,参数获取封装到Form;(不使用Form,采用getParameter) 2,配置请求路径:.do3,配置跳转路径:forward如何配置STRUCT-CONFIG.XML?Hibernate对应于DAO,数据处理层1,将数据库操作封装:Save新增Update修改FindById按ID查DELETE:删除list:查询多条数据2,配置:数据库表——JA VA对象(POJO)对应起来。
(数据库字段,对应POJO成员属性)POJO类:get,set方法,针对属性。
Name: setName(); getName();Hibernate常用方法HIBERNATE:1-1,1-n,n-n关系配置Spring项目新建了一个类实例,经过Spring管理起来,让它持久化。
一般类:创建——执行——回收Spring:在项目启动的时候就创建——一直保持着,实现长久调用。
举一个例子:数据库连接:常规方式:建立连接——使用操作数据库——关闭连接S:连接已经使用建立(假设放入到连接池)——调用的时候,从连接池中请求一个连接,使用完了后放回到连接池,但是这个连接实例还是存在,也就是连接还没有关闭。
使用:配置:将需要管理起来的那些类配置到SPRING配置文件中。
<bean>怎么配置:数据库连接、事务管理器、数据库映射类POJO、DAO、Service(BIZ)、Action(Structs)。
使用SSH框架实现用户登录验证
今天,写一个非常简单的通过struts+hibernate+spring的集成来实现用户登录验证的例子,让大家了解一下三者是如何是整合的。
我们可以通过myeclipse的向导,生成相应的环境搭建,如果使用向导添加SSH项目支持的话,大家记住我们我们添加的顺序为spring,hibernate,struts,我在这儿就不讲如何通过向导添加了,我会直接把源码给大家,大家按源码编写即可。
第一:applicationContext.xml文件的配置<?xml version="1.0" encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-2.0.xsd/schema/aop/schema/aop/spring-aop-2.0.xsd/schema/tx/schema/tx/spring-tx-2.0.xsd"><!-- 定义数据源 --><bean id="dataSource"class="mons.dbcp.BasicDataSource"><property name="driverClassName"value="com.mysql.jdbc.Driver"></property><property name="url"value="jdbc:mysql://192.168.1.90:3306/TestDB"></property><property name="username" value="root"></property><property name="password" value="hanxue123"></property></bean><!-- 定义使用hibernate --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource"><ref bean="dataSource" /></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop></props></property><!-- 定义映射的文件 --><property name="mappingResources"><value>User.hbm.xml</value></property></bean><!-- 配置事务管理器 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref bean="sessionFactory"/></property></bean><!-- 配置事务的传播特性 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="find*" propagation="REQUIRED"/><tx:method name="save*" propagation="REQUIRED"/><tx:method name="del*" propagation="REQUIRED"/><tx:method name="modify*" propagation="REQUIRED"/><tx:method name="update*" propagation="REQUIRED"/><tx:method name="*" propagation="REQUIRED"/></tx:attributes></tx:advice><!-- 配置哪些类的哪些方法参与事务 --><aop:config><aop:pointcut id="allManagerMethod" expression="execution(*com.han.*.*.*(..))"/><aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/></aop:config><!-- 将业务逻辑对象通过spring注入到Action中,从而避免了在Action类中的直接代码查询 --><bean id="loginService" class="com.han.service.LoginServiceImpl"><property name="sessionFactory" ref="sessionFactory"></property></bean><bean name="/loginA" class="com.han.action.LoginA" scope="prototype"><property name="loginService" ref="loginService"></property></bean></beans>第二:user.hbm.xml文件的配置,定义与数据库的映射<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.han.forms"><class name="LoginForm" table="t_user" lazy="false"><comment>Users may bid for or sell auction items.</comment><id name="id"><generator class="native"/></id><property name="username"></property><property name="password"></property></class></hibernate-mapping>第三:struts-config.xml文件配置<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "/dtds/struts-config_1_3.dtd"> <struts-config><form-beans><form-bean name="loginAF" type="com.han.forms.LoginForm"></form-bean></form-beans><global-exceptions /><global-forwards /><action-mappings><action path="/loginA"name="loginAF"type="org.springframework.web.struts.DelegatingActionProxy"scope="request"input="/index.jsp"><forward name="success" path="/success.jsp"></forward><forward name="failed" path="/failed.jsp"></forward></action></action-mappings><message-resources parameter="com.han.struts.ApplicationResources" /><plug-in className="org.apache.struts.validator.ValidatorPlugIn"><set-propertyproperty="pathnames"value="/org/apache/struts/validator/validator-rules.xml,/WEB-INF/validation.xml"/></plug-in></struts-config>第四:LoginService接口的配置package com.han.service;import com.han.forms.LoginForm;public interface LoginService {public abstract boolean findlogin(LoginForm user);}第五:接口实现的配置package com.han.service;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.han.forms.LoginForm;public class LoginServiceImpl extends HibernateDaoSupport implements LoginService {public boolean findlogin(LoginForm user) {String hql="from LoginForm where username='"+user.getUsername()+"' and password='"+user.getPassword()+"'";System.out.println(hql);List userlist=this.getHibernateTemplate().find(hql);if (userlist.size()>0) return true;else return false;}}第六:ActionForm配置package com.han.forms;import org.apache.struts.action.ActionForm;public class LoginForm extends ActionForm {private int id;private String username;private String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}第七:Action配置package com.han.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;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 org.springframework.beans.factory.BeanFactory;import org.springframework.web.context.support.WebApplicationContextUtils; import com.han.forms.LoginForm;import com.han.service.LoginService;import com.han.service.LoginServiceImpl;public class LoginA extends DispatchAction {private LoginService loginService;public void setLoginService(LoginService loginService) {this.loginService = loginService;}public LoginService getLoginService() {return loginService;}public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {LoginForm lf=(LoginForm)form;System.out.println(lf.getUsername());//loginService=new LoginServiceImpl();boolean flag=loginService.findlogin(lf);System.out.println(flag);if (flag){return mapping.findForward("success");}else{return mapping.findForward("failed");}}}第八:登录页面的配置<%@ page language="java" pageEncoding="ISO-8859-1"%><%@ taglib uri="/tags-bean" prefix="bean" %><%@ taglib uri="/tags-html" prefix="html" %><%@ taglib uri="/tags-logic" prefix="logic" %> <%@ taglib uri="/tags-tiles" prefix="tiles" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html:html lang="true"><head><html:base /><title>index.jsp</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><html:form action="loginA.do" method="post" ><table border="0"><tr><td>Login:</td><td><html:text property="username" /></td></tr><tr><td>Password:</td><td><html:password property="password" /></td></tr><tr><td colspan="2" align="center"><html:submit /></td></tr></table></html:form></body></html:html>第九:忘了web.xml文件了,加上<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance" version="2.4"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><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><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><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:applicationContext.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener></web-app>以上设置,通过SSH框架实现了最基础的用户登录功能。
使用ssh命令进行远程命令执行
使用ssh命令进行远程命令执行SSH(Secure Shell)是一种网络协议,用于通过网络对远程计算机进行安全登录和执行命令。
在计算机网络中,SSH协议可确保数据传输的安全性,同时提供远程管理和远程执行命令的功能。
本文将介绍如何使用SSH命令进行远程命令执行。
一、概述SSH是一种加密的网络协议,可确保在不安全的网络上安全地进行远程登录和执行命令。
它使用公钥加密和非对称密钥交换来保护数据的传输,并通过身份验证来确保只有授权用户能够访问远程服务器。
二、使用SSH连接远程服务器在使用SSH命令进行远程命令执行之前,我们首先需要建立与远程服务器的连接。
以下是连接远程服务器的步骤:1. 打开终端或命令提示符(根据操作系统的不同)。
2. 输入SSH命令的基本格式:ssh [用户名]@[远程服务器的IP地址或域名]。
3. 按下回车键,系统将提示您输入密码。
4. 输入密码后,按下回车键,如果密码正确,系统将连接到远程服务器。
三、远程命令执行连接到远程服务器后,我们可以使用SSH命令在远程服务器上执行命令。
以下是远程命令执行的步骤:1. 在终端或命令提示符中,输入要执行的命令。
例如,我们可以执行“ls”命令来列出远程服务器上的文件和目录。
2. 按下回车键,系统将在远程服务器上执行该命令,并将结果返回到本地终端或命令提示符。
四、SSH命令高级用法除了基本的远程命令执行外,SSH还提供了一些高级用法,如下所示:1. 使用SSH密钥对进行身份验证:除了使用用户名和密码进行身份验证外,还可以使用SSH密钥对进行身份验证。
这种方法更安全,并且可以免去每次输入密码的步骤。
使用SSH密钥对进行身份验证需要在本地生成密钥对,并将公钥添加到远程服务器上的授权文件中。
2. 文件传输:SSH还可以用于安全地传输文件。
使用SCP(Secure Copy)命令可以将文件从本地复制到远程服务器,或将文件从远程服务器复制到本地。
3. 远程端口转发:SSH还支持远程端口转发,可以将本地计算机上的端口映射到远程服务器上。
netconf工作原理
netconf工作原理
Netconf(网络配置协议)是一种用于配置网络设备的协议,
它基于XML和SSH协议,并且具有以下工作原理:
1. 连接建立:Netconf客户端通过SSH协议与网络设备建立连接。
2. 协商能力:客户端和设备之间进行能力协商,确定设备支持的功能和参数。
3. 消息交互:客户端发送XML格式的指令到设备,设备回复
响应消息。
消息可以包括配置请求、查询请求、通知等。
4. 配置处理:设备根据接收到的XML格式的配置请求进行相
应的处理,比如配置、修改、删除等操作。
5. 持久化配置:设备将配置更改应用到其持久存储中,以便在设备重启后恢复配置。
6. 错误处理:如果设备接收到的消息中存在错误,它将向客户端发送错误消息,客户端可以根据此错误处理相应的操作。
7. 断开连接:当配置会话完成后,或者有其他原因需要断开连接时,客户端和设备之间会关闭SSH连接。
总结起来,Netconf通过SSH协议建立安全连接,使用XML
格式的消息传递配置指令和响应,实现网络设备的配置和管理。
它提供了一种标准的、跨厂商的方法来管理和配置网络设备,使得网络管理更加简化和自动化。
netconf协议分层框架
netconf协议分层框架Netconf协议分层框架一、引言Netconf(网络配置)是一种基于XML的网络管理协议,用于配置、管理和监控网络设备。
为了实现网络设备的自动化管理,Netconf 协议采用了分层的架构。
本文将介绍Netconf协议的分层框架,包括协议的四个层次以及每个层次的功能和特点。
二、物理传输层物理传输层是Netconf协议的最底层,负责在网络中传输Netconf 消息。
它使用各种传输协议,如SSH(Secure Shell)和TLS (Transport Layer Security),确保消息的机密性和完整性。
物理传输层还负责与网络设备建立和维护连接。
三、XML编码层XML编码层在Netconf协议的物理传输层之上,负责将Netconf 消息编码为XML格式。
XML(可扩展标记语言)是一种用于描述数据的标记语言,它具有良好的可读性和可扩展性。
XML编码层将Netconf消息转换为XML文档,以便在网络中传输。
四、RPC(远程过程调用)层RPC层是Netconf协议的核心层,负责定义和执行远程过程调用。
Netconf协议中的每个操作都被定义为一个RPC消息,例如获取配置、修改配置、查询状态等。
RPC层将XML编码层中的XML文档解析为具体的RPC消息,并将其发送给网络设备。
网络设备执行相应的操作,并将结果返回给RPC层。
五、数据模型层数据模型层是Netconf协议的最高层,负责定义网络设备的配置和状态信息。
数据模型层使用YANG(Yet Another Next Generation)语言来描述设备的数据模型,包括设备的数据结构、配置选项、操作和通知等。
Netconf协议通过数据模型层提供了一种统一的方式来管理不同厂商和型号的网络设备。
六、功能和特点Netconf协议的分层框架具有以下功能和特点:1. 简化配置管理:Netconf协议使用XML格式来描述配置信息,使配置管理更加简单和灵活。
SSH三大框架整合(详细版)
1:构建WEB项目2:构建数据库3:加入依赖包尽量不要依赖IDE,通过自己手动加包完成访问数据库需要的包:mysql的驱动包Hibernate的包:hibernate3.jar 核心包依赖的必须包:antlr-2.7.6.jar 用于解析成HQL语句的包commons-collections-3.1.jar apache提供的包,提供对集合框架的增强dom4j-1.6.1.jar 解析XML文件的包javassist-3.9.0.GA.jar 动态修改字节码需要用到的包jta-1.1.jar 用于JTA事务的包slf4j-api-1.5.8.jar 日志接口包---》依赖一定的实现包slf4j-log4j12-1.5.0.jar log4j.jar另外一种实现包:slf4j-simple-1.5.10.jar可选的包:c3p0-0.9.1.jar 用于创建C3P0连接池的包ehcache-1.2.3.jar :用于缓存实现的包cglib-2.2.jar 动态修改字节码的包Spring的包:spring.jar 核心包aopalliance.jar 使用Aop功能可以用到的包aspectjrt.jaraspectjweaver.jar 使用ASPECTJ表达式需要用到的包如果是使用DBCP连接池的话,需要两个jar包commons-dbcp.jar commons-pool.jar如果需要用到commons增加包的话,可以加入以下包commons-beanutils.jar commons-lang.jar commons-logging.jarStruts2的包:commons-fileupload-1.2.1.jar commons-io-1.3.2.jarfreemarker-2.3.13.jar :在Struts2 中默认使用的是FreeMarker模板引擎ognl-2.6.11.jar :Struts2中使用OGNL表达式struts2-core-2.1.6.jar 核心包xwork-2.1.2.jar 核心包struts2-spring-plugin-2.1.6.jar Struts2跟Spring整合需要的插件包4:构建项目分包结构5:放置配置文件6:创建POJO和相对应的hbm.xml7:修改空白的Hibernate.cfg..xml并创建表结构8:创建DAO,SERVICE,ACTION9:修改配置文件并且按照模块的分布进行applicationContext文件的配置Struts.xml。
ssh源码编译
SSH(Secure Shell)是一种安全协议,用于在网络上安全地传输数据。
要编译SSH的源码,你需要按照以下步骤进行操作:
1.获取SSH源码:可以从SSH的官方网站或者开源代码仓库下载SSH的源码
包。
2.解压源码包:使用解压工具将源码包解压到你选择的目录中。
3.配置源码:进入解压后的目录,运行./configure命令来配置源码。
在这个
过程中,你可以选择所需的选项,例如安装路径、编译器选项等。
4.编译源码:运行make命令来编译源码。
这个过程可能需要一些时间,取决
于你的系统性能和源码规模。
5.安装:编译完成后,运行make install命令来安装SSH。
需要注意的是,SSH的编译和安装可能需要一些依赖项,例如编译器、库文件等。
确保你的系统上已经安装了这些依赖项,否则无法成功编译和安装SSH。
另外,SSH的配置选项非常丰富,你可以根据自己的需求进行配置。
如果你不熟悉这些选项,可以参考官方文档或者寻求社区的帮助。
SSH环境配置
SSH环境配置方法步骤及注意点:1.新建web项目和各个包;2.添加user Librarles,在项目名右键->build path->add libray将需要的jar报放进去,并且使用3..配置struts,struts.xml放在src下(自动生成的struts可能会出错,解决办法将struts自动生成的libraries删掉,加入自己的userlibraries,并修改web配置文件中的filter-class)4.配置spring ,文件放在WEB-INF 下,勾选前4个和这个。
5.配置hibernate ,文件放在common 包下,反编译的文件放在bean 包下6.数据库hibernate反编译(反编译后要将UserTest.hbm.xml加入到Mappings中,就在hibernate.cfg.xml的Configuration页面中添加),点击下一步直到完成。
在hibernate.cfg.xml 中添加刚刚生成的Book.hbm.xml7.在Struts.xml配置中添加与spring连接的语句完整的代码如下<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "/dtds/struts-2.1.dtd"><struts><!--下述语句是将struts2交给spring管理--><constant name="struts.objectFactory"value="spring"/><include file="struts-default.xml"></include><package name="default"extends="struts-default"><action name="insertAction"class="com.git.action.AddBookAction"><result name="success">/result.jsp</result><result name="fail">/fail.jsp</result></action></package></struts>8.将struts与spring连接的库导入lib文件夹下(还有Eclipse与数据库连接的包),最好在build path里面加进去,并删除asm-2.2.3.jar这个包。
如何使用ssh命令批量传输文件和
如何使用ssh命令批量传输文件和目录一、SSH命令简介二、SSH命令批量传输文件1. 使用scp命令2. 使用rsync命令三、SSH命令批量执行命令1. 使用ssh命令2. 使用pssh命令四、注意事项五、总结一、SSH命令简介SSH(Secure Shell)是一种网络协议,用于在不安全的网络中安全地传输数据和执行远程命令。
它通过加密的方式确保数据传输的安全性,并提供了对远程主机的身份验证机制。
SSH命令是通过终端(或命令行界面)使用的一系列命令,用于连接远程主机、执行命令、传输文件等操作。
下面将重点介绍如何使用SSH命令批量传输文件和执行命令。
二、SSH命令批量传输文件1. 使用scp命令scp命令是SSH协议中用于传输文件的命令,它可以在本地主机和远程主机之间进行文件的拷贝。
例如,要将本地主机上的文件file.txt传输到远程主机上的目录/var/www/html/下,可以使用以下命令:```scp file.txt user@remote:/var/www/html/```其中,user为远程主机的用户名,remote为远程主机的IP地址或域名。
2. 使用rsync命令rsync命令是一个高效的文件传输和同步工具,它在传输文件时可以只传输文件的差异部分,可以减少传输的时间和网络带宽的占用。
例如,要将本地主机上的目录/dir/下的所有文件传输到远程主机上的目录/var/www/html/下,可以使用以下命令:```rsync -avz /dir/ user@remote:/var/www/html/```其中,-a表示传输文件的权限、所有者和时间等信息保持不变,-v表示显示传输的详细信息,-z表示传输时进行压缩以减少传输的大小。
三、SSH命令批量执行命令1. 使用ssh命令ssh命令可以在远程主机上执行命令,并将执行结果返回到本地主机。
例如,要在远程主机上执行命令ls,可以使用以下命令:```ssh user@remote ls```其中,user为远程主机的用户名,remote为远程主机的IP地址或域名。
ssh协议详解
ssh协议详解SSH协议详解。
SSH(Secure Shell)是一种网络协议,用于在网络中提供安全的远程登录会话。
它可以加密会话数据,并通过公共网络安全地传输。
SSH协议使用了加密技术来保护网络通信的安全性,因此在网络安全领域有着广泛的应用。
首先,SSH协议采用了非对称加密算法来进行身份验证和密钥交换。
在SSH连接建立时,客户端和服务器会交换各自的公钥,并使用对方的公钥来加密通信数据。
这样,即使在公共网络中传输的数据被截获,也无法被解密,从而保护了通信的安全性。
其次,SSH协议还使用了对称加密算法来保护通信数据的机密性。
在身份验证和密钥交换完成后,客户端和服务器会使用协商好的对称加密算法来加密通信数据。
这样,即使数据被截获,也无法被解密,从而保护了通信数据的机密性。
此外,SSH协议还提供了完整性保护机制,用于检测通信数据是否被篡改。
在通信数据传输过程中,SSH会对数据进行哈希运算,并将哈希值附加到数据上。
接收方在接收到数据后会重新计算哈希值,并与附加的哈希值进行比对,以确保数据的完整性。
另外,SSH协议还支持端口转发和X11转发等功能,用于在安全的通信通道中传输其他协议的数据。
这些功能使得SSH协议不仅可以用于远程登录,还可以用于安全地传输其他协议的数据,从而提高了网络通信的安全性。
总的来说,SSH协议通过使用非对称加密算法、对称加密算法和完整性保护机制,以及支持端口转发和X11转发等功能,来保护网络通信的安全性。
它在网络安全领域有着广泛的应用,可以有效地保护网络通信的安全性,防止数据被篡改和窃取,从而保障了网络通信的安全性。
综上所述,SSH协议在网络安全领域有着重要的地位,它通过使用各种加密算法和完整性保护机制,来保护网络通信的安全性。
在实际应用中,我们应该充分利用SSH协议的各种功能,来保障网络通信的安全性,防止数据被篡改和窃取,从而确保网络通信的安全性。
ssh三大框架整合
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模式的详解
三大框架ssh模式的详解SSH是Secure Shell的缩写,是一种用于安全远程登录的协议。
它可以通过加密隧道来传输数据,并提供了身份验证和数据完整性保护。
SSH模式可以分为以下三大框架:SSH-1、SSH-2和OpenSSH。
1.SSH-1:SSH-1是最早的SSH协议版本,由Tatu Ylönen在1995年开发。
SSH-1使用了基于RSA算法的身份验证机制,并使用了Diffie-Hellman 算法进行密钥交换。
然而,SSH-1存在许多安全漏洞,包括易受到中间人攻击的问题。
因此,SSH-1在1996年被SSH-2所取代,成为历史遗留的协议版本。
2.SSH-2:SSH-2是目前最广泛使用的SSH协议版本。
与SSH-1相比,SSH-2具有更好的安全性和可靠性。
SSH-2支持多种身份验证机制,包括密码、公钥和基于证书的身份验证。
它还增加了Diffie-Hellman组合机制和更强大的加密算法,如AES和3DES。
SSH-2还提供了压缩数据和端口转发等功能。
由于SSH-2的安全性和功能,它成为了企业网络中常用的远程登录协议。
3. OpenSSH:OpenSSH是SSH协议的开源实现,也是最常用的实现之一、OpenSSH 包括了SSH客户端和服务器端。
它被广泛使用于Linux和Unix系统中,提供了安全的远程登录和文件传输功能。
OpenSSH拥有良好的安全性和稳定性,并提供了许多高级功能,如X11转发、SFTP文件传输和动态端口转发。
OpenSSH还支持在非标准端口上运行,从而增加了安全性。
总结来说,SSH模式的三大框架包括SSH-1、SSH-2和OpenSSH。
SSH-1是最早的SSH协议版本,但存在安全漏洞,已被SSH-2所取代。
SSH-2具有更好的安全性和可靠性,支持多种身份验证机制和强大的加密算法。
而OpenSSH则是SSH协议的开源实现,被广泛应用于Linux和Unix系统中,提供了安全的远程登录和文件传输功能,并支持多种高级功能。
SSH命令及使用说明
SSH命令及使用说明SSH(Secure Shell)是一种网络协议,用于在不安全的网络中建立安全的连接。
它提供了加密的通信通道,使得远程登录、远程执行命令、远程传输文件等操作变得安全可靠。
1. sshssh命令用于建立SSH连接,语法如下:``````-options:可选参数,包括-p指定端口号、-i指定私钥文件等。
-hostname:必选参数,指定远程主机的IP地址或域名。
2. ssh-keygenssh-keygen命令用于生成SSH密钥对,包括私钥和公钥。
私钥保存在本地,公钥发送到远程主机,用于进行身份认证。
语法如下:```ssh-keygen [options] [keyfile]```-options:可选参数,包括-t指定密钥类型、-b指定密钥长度、-f 指定密钥文件名等。
-keyfile:可选参数,指定密钥文件的名称。
3. ssh-copy-idssh-copy-id命令用于将本地公钥复制到远程主机的授权文件中,以实现免密登录。
语法如下:``````-options:可选参数,包括-p指定端口号、-i指定私钥文件等。
-hostname:必选参数,指定远程主机的IP地址或域名。
4. ssh-agentssh-agent命令用于管理身份验证代理,可以将私钥添加到代理中,使得无需每次输入密码即可使用私钥进行身份认证。
语法如下:``````-options:可选参数,包括-a指定代理的套接字文件、-c创建一个登录shell、-k关闭代理等。
5. scpscp命令用于在本地主机和远程主机之间进行文件传输。
语法如下:```scp [options] [source] [destination]```-options:可选参数,包括-r递归复制目录、-P指定端口号等。
-source:必选参数,指定源文件或目录。
-destination:必选参数,指定目标文件或目录。
6. sftpsftp命令用于在本地主机和远程主机之间进行安全文件传输。
SSH协议详解
SSH协议详解SSH协议,全称Secure Shell,是一种用于在不安全的网络上进行安全传输和远程登录的协议。
它提供了一种加密的通信方式,可以确保数据传输过程中的机密性和完整性。
本文将详细介绍SSH协议的原理和应用。
一、SSH协议的基本原理SSH协议基于客户端-服务器的模型,通过加密和身份验证机制来保证数据的安全性。
它主要包括三个组件:远程登录协议(SSH-1和SSH-2)、加密算法和身份验证。
1. 远程登录协议:SSH-1和SSH-2是SSH协议的两个版本。
SSH-1是早期版本,现已较少使用;SSH-2是目前广泛应用的版本,支持更多的加密算法和身份验证方式。
2. 加密算法:SSH协议使用对称加密、非对称加密和散列函数来保护数据的机密性和完整性。
对称加密算法用于实际数据传输的加密和解密,常用的有AES、DES等;非对称加密算法用于密钥交换和身份验证,常用的有RSA、DSA等;散列函数用于生成消息摘要,常用的有MD5、SHA等。
3. 身份验证:SSH协议支持多种身份验证方式,包括密码身份验证、公钥身份验证和基于证书的身份验证。
密码身份验证是最常用的方式,用户需要输入密码才能登录;公钥身份验证通过密钥对进行身份验证,比密码身份验证更安全;基于证书的身份验证使用数字证书来验证身份,更适合于大规模的企业网络环境。
二、SSH协议的应用SSH协议在计算机网络领域中有广泛的应用,主要包括远程登录、文件传输和端口转发等功能。
1. 远程登录:SSH协议最基本的功能就是远程登录,通过SSH客户端可以安全地连接到远程服务器进行远程管理和操作。
远程登录过程中,所有的通信都是加密的,保证了用户登录的安全性。
2. 文件传输:SSH协议支持安全的文件传输功能。
用户可以使用SSH客户端将本地文件上传到远程服务器或从远程服务器下载文件。
文件传输过程中,所有的数据都经过加密处理,确保数据的机密性和完整性。
3. 端口转发:SSH协议还支持端口转发功能,也称为SSH隧道。
SSH协议的实际应用场景
SSH协议的实际应用场景SSH(Secure Shell)是一种通过网络进行加密传输的协议,可以在不安全的网络中提供安全的远程登录和执行命令。
它的应用场景非常广泛,下面将介绍一些SSH协议的实际应用场景。
1. 远程登录和管理服务器SSH最常见的应用场景之一是远程登录和管理服务器。
通过使用SSH协议,系统管理员可以安全地远程访问服务器,执行命令、查看日志等。
相比于传统的telnet等协议,SSH通过加密传输数据,有效地保护了敏感的登录信息和数据。
2. 文件传输SSH协议还支持安全的文件传输。
系统管理员可以使用SCP (Secure Copy)命令或者SFTP(SSH File Transfer Protocol)协议来上传或下载文件,不仅保证了文件的安全性,而且提供了方便的操作界面。
这在跨平台的文件传输、备份和同步中非常有用。
3. 隧道技术SSH还可以用于创建安全的隧道,将不安全的网络转换为安全的网络。
例如,使用SSH隧道可以通过公共网络安全地访问内部网络中的服务,如数据库、Web服务器等。
这种方式避免了直接将内部服务暴露在公网上,提高了系统的安全性。
4. 远程维护和故障排除当远程服务器发生故障或需要维护时,SSH协议可以派上用场。
管理员可以通过SSH协议远程登录服务器,查看日志、修改配置文件和执行诊断命令,快速定位和解决问题。
SSH协议的安全性和可靠性使其成为远程故障排除的首选工具。
5. Git和版本控制许多代码托管平台使用SSH协议来进行代码的安全传输和版本控制。
开发者可以使用SSH密钥来认证自己的身份,并通过SSH协议与代码仓库进行交互。
这在多人协作开发中非常有用,不仅保证了代码的安全性,还提供了便捷的版本管理功能。
6. 基于SSH协议的安全访问控制基于SSH协议的安全访问控制可以帮助管理员更好地管理用户权限,限制用户在服务器上的操作。
通过SSH协议,管理员可以为每个用户绑定特定的权限,控制其能够执行的命令和访问的资源。
SSH原理详解
SSH原理详解SSH是Secure Shell(安全外壳协议)的简称。
它是一种用于加密远程管理和传输数据的网络协议。
SSH协议的出现解决了传统Telnet和FTP协议中存在的安全漏洞问题,能够保证数据在互联网中的安全传输。
本文将详细介绍SSH的原理及其工作机制。
一、SSH的基本概念SSH是一种加密协议,可以在不安全的网络中建立安全的远程连接。
它提供了加密、认证、完整性保护等功能,确保数据传输的机密性和完整性。
SSH主要由三个组件组成,分别是客户端、服务器端和SSH协议。
客户端:用户使用SSH客户端程序登录到远程服务器进行操作。
客户端负责发送命令和接收服务器返回的结果。
服务器端:远程服务器上运行的SSH服务器程序。
服务器端负责接收客户端的连接请求,并验证客户端的身份。
SSH协议:客户端和服务器之间进行通信的规则和标准。
SSH协议使用非对称密钥加密算法、对称密钥加密算法和哈希算法等进行加密和认证。
二、SSH的工作原理1. 生成密钥对在建立SSH连接之前,客户端和服务器分别生成一对密钥:公钥和私钥。
私钥保存在客户端,而公钥则被复制到服务器端。
密钥对的生成通常使用非对称加密算法,如RSA。
公钥用于加密数据,私钥用于解密数据。
2. 用户认证当客户端发起连接请求时,服务器会返回一个随机数。
客户端使用自己的私钥对随机数进行加密,并将加密后的结果发送给服务器。
服务器使用之前保存的客户端公钥进行解密,得到原始的随机数。
如果解密后的随机数与服务器发送的相同,则说明客户端身份验证通过。
3. 数据传输加密在用户认证通过后,服务器会生成一个会话密钥,用于后续通信的对称密钥加密。
会话密钥只在该次连接中使用,并在连接结束后销毁。
客户端和服务器使用会话密钥对通信数据进行加密和解密。
加密过程使用的是对称密钥加密算法,如AES。
这种加密方式速度快,适合大量数据的传输。
4. 完整性检查为了确保传输的数据没有被篡改,SSH使用哈希算法对数据进行完整性检查。
ssh命令的 用法
SSH(Secure Shell)是一种网络协议,用于通过加密的方式在网络上进行安全的远程登录和文件传输。
以下是SSH命令的常见用法:1. 远程登录:- 使用`ssh`命令加上目标主机的IP地址或域名,如:`ssh username@hostname`。
- 输入目标主机的密码或使用SSH密钥进行身份验证。
2. 指定端口:- 使用`-p`参数指定SSH连接的端口号,如:`ssh -p 2222 username@hostname`。
3. 执行远程命令:- 在SSH命令后面加上要执行的命令,如:`ssh username@hostname command`。
- 可以在远程主机上执行命令并将结果返回到本地。
4. 传输文件:- 使用`scp`命令进行文件传输,如:`scp file username@hostname:destination`。
- 可以将本地文件复制到远程主机,或将远程主机上的文件复制到本地。
5. SSH密钥认证:- 生成SSH密钥对:`ssh-keygen -t rsa`。
- 将公钥复制到远程主机:`ssh-copy-id username@hostname`。
- 这样可以实现免密码登录,提高安全性和便利性。
6. 配置文件:- SSH客户端的配置文件位于`~/.ssh/config`,可以配置常用的主机和选项。
- 可以指定主机别名、端口号、用户等信息,简化SSH命令的输入。
7. 代理跳板:- 如果需要通过跳板机访问目标主机,可以使用SSH代理跳板功能。
- 在SSH配置文件中配置跳板机的信息,然后使用`-J`参数指定跳板机,如:`ssh -J jumpbox username@hostname`。
以上是SSH命令的一些常见用法。
通过SSH,您可以远程登录和管理其他计算机,进行文件传输和远程命令执行等操作。
详细的用法和参数可以参考SSH命令的文档或使用`man ssh`命令查看帮助信息。
SSH配置文件
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:sheng"/>
<property name="user" value="ssh"/>
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">
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources">
<list>
<value>cn/sheng/bean/users.hbm.xml</value>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
如何使用ssh命令批量执行远程服务器上的命令
如何使用ssh命令批量执行远程服务器上的命令SSH(Secure Shell)是一种常用的网络协议,用于在不安全的网络上安全地执行远程操作。
通过SSH命令,我们可以在远程服务器上批量执行命令,提高工作效率和管理便利性。
本文将介绍如何使用SSH命令批量执行远程服务器上的命令。
一、SSH简介SSH是一种加密协议,用于在不安全的网络中进行安全的远程登录和文件传输。
它通过加密和身份验证机制,确保通信过程中的数据安全。
SSH使用客户端-服务器模型,客户端通过SSH协议与远程服务器建立连接,并进行身份验证后才能执行命令或传输文件。
二、安装SSH客户端在使用SSH命令之前,需要先安装SSH客户端。
常见的SSH客户端有OpenSSH和PuTTY等,可以根据操作系统选择合适的安装方式。
三、生成密钥对为了实现免密码登录,可以生成SSH密钥对。
密钥对由公钥和私钥组成,私钥保存在客户端,公钥保存在服务器上。
生成密钥对的方法如下:1. 打开终端或命令提示符。
2. 输入以下命令,生成密钥对:```ssh-keygen -t rsa```按回车键接受默认设置,可以选择保存密钥的文件路径。
3. 生成密钥对后,将公钥复制到远程服务器上,可以使用以下命令:```ssh-copy-id username@remote_server_ip```其中,username为远程服务器的用户名,remote_server_ip为远程服务器的IP地址或主机名。
四、批量执行远程命令使用SSH命令批量执行远程服务器上的命令,可以通过for循环或者使用工具实现。
下面分别介绍两种方法。
1. 使用for循环可以利用Shell脚本和for循环来批量执行远程命令,具体步骤如下:1. 打开终端或命令提示符。
2. 创建一个名为`commands.txt`的文件,将需要执行的命令写入该文件,每行一个命令。
3. 创建一个名为`servers.txt`的文件,将需要执行命令的服务器IP地址或主机名写入该文件,每行一个服务器。
SSH框架运行流程
SSH框架运行流程1.初始化阶段:在初始化阶段,SSH框架会加载配置文件、创建核心对象和建立组件之间的关联关系。
1.1加载配置文件:1.2创建核心对象:1.3建立组件关联:2.请求处理阶段:在请求处理阶段,SSH框架根据请求的URL找到相应的处理器,并将请求参数传递给处理器进行处理。
2.1客户端发送请求:客户端通过浏览器向服务器发送请求,请求的URL中包含了需要调用的方法和相应的参数。
2.2URL映射:2.3参数绑定:2.4方法调用:处理器会调用相应的方法,并将参数传递给方法进行处理。
2.5数据库操作:如果需要进行数据库操作,如增删改查等,处理器会通过Hibernate 框架进行数据库访问。
3.结果返回阶段:在结果返回阶段,SSH框架将处理结果返回给客户端,通常是通过页面展示或异步请求返回数据。
3.1视图解析:如果处理器返回的是页面,SSH框架会根据配置文件中定义的视图解析器,将逻辑视图转换为具体的物理视图。
3.2页面渲染:3.3异步请求返回数据:如果处理器返回的是异步请求的数据,SSH框架会将数据封装成JSON 或XML格式,并通过HTTP协议返回给客户端。
总结:SSH框架的运行流程可以概括为初始化、请求处理和结果返回三个阶段。
在初始化阶段,SSH框架会加载配置文件、创建核心对象和建立组件之间的关联关系;在请求处理阶段,SSH框架根据请求的URL找到相应的处理器,并将请求参数传递给处理器进行处理;在结果返回阶段,SSH框架将处理结果返回给客户端,通常是通过页面展示或异步请求返回数据。
这个流程使得开发者能够快速开发出高质量的Java Web应用程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filtele-list>
<welcome-file>index.jsp</welcome-file>
xsi:schemaLocation="/xml/ns/javaee
/xml/ns/javaee/web-app_2_5.xsd">
<!-- 配置上下文 -->
<!-- 作用:定义Spring配置文件位置,可以定义多个文件,也可以使用通配符 -->
</context-param>
<!-- 配置Spring过滤器 -->
<!-- 作用:启动web应用,就加载Spring,让Spring管理Bean -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
而将Session保存在一个线程变量中,在线程退出前关闭Session;这样在整个request过程中
始终使用一个session,也就可以在request的任何时期lazy loading数据。
主要是为了实现hibernate的延迟加载功能 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext*.xml
</param-value>
<filter-mapping>
<filter-name>lazyLoadingFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<!-- Struts2过滤器的filter-mapping -->
ssh2配置(xml)
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="/xml/ns/javaee"
xmlns:xsi="/2001/XMLSchema-instance"
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<!-- 解决hibernate延迟加载出现的问题,仍需要放在Struts2过滤器的filter-mapping之前 -->
</listener-class>
</listener>
<!-- 解决hibernate延迟加载出现的问题,要放在Struts2过滤器之前 -->
<!-- 作用:Spring管理hibernate的Session,在事务管理的类执行完后,不立刻关闭Session,
</welcome-file-list>
</web-app>
<filter>
<filter-name>lazyLoadingFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
<param-value>true</param-value>
</init-param>
</filter>
<!-- Struts2过滤器 -->
<filter>
<filter-name>struts2</filter-name>
</filter-class>
<!-- singleSession默认设置为true,如何为false就等于没有设置OpenSessionInView -->
<init-param>
<param-name>singleSession</param-name>