想用ssh框架参考文献修改密码

SSH框架,AjaxJson显示数据,项目框架搭建;注意action跳转不要叹号,springMVC和springAnnotation要修改spring配置文件_JavaScript大全_优良自学吧 |
当前位置: >
> SSH框架,AjaxJson显示数据,项目框架搭建;注意action跳转不要叹号,springMVC和springAnnotation要修改spring配置文件优良自学吧提供SSH框架,AjaxJson显示数据,项目框架搭建;注意action跳转不要叹号,springMVC和springAnnotation要修改spring配置文件,SSH框架,AjaxJson显示数据,项目框架搭建;注意action跳转不用叹号,springMVC和springAnnotation要修改spring配置文件SSH已经学完一周多了,一直忙着研究服务端,今天抽空总结下,用配置文件写的,一般情况spriSSH框架,AjaxJson显示数据,项目框架搭建;注意action跳转不用叹号,springMVC和springAnnotation要修改spring配置文件SSH已经学完一周多了,一直忙着研究服务端,今天抽空总结下,用配置文件写的,一般情况spring应该使用annotation
加入支持的顺序是先Spring-》Hibernate-》struts。Spring中加入的支持包与Spring + JDBC开发时完全相同。
摘自liky框架结构,这样的结构一般小型项目足够了
加入hibernate
生成映射后,在web.xml中还需要加入监听配置。
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&/WEB-INF/classes/spring/applicationContext-*.xml&/param-value&
&/context-param&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
application-hibernate.xml
&?xml version=&1.0& encoding=&UTF-8&?&
xmlns=&http://www.springframework.org/schema/beans&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xmlns:p=&http://www.springframework.org/schema/p&
xsi:schemaLocation=&http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd&&
&bean id=&dataSource&
class=&mons.dbcp.BasicDataSource&&
&property name=&driverClassName&
value=&oracle.jdbc.OracleDriver&&
&/property&
&property name=&url&
value=&jdbc:oracle:thin:@localhost:1521:orcl&&
&/property&
&property name=&username& value=&zl&&&/property&
&property name=&password& value=&123&&&/property&
&bean id=&sessionFactory&
class=&org.springframework.orm.hibernate3.LocalSessionFactoryBean&&
&property name=&dataSource&&
&ref bean=&dataSource& /&
&/property&
&property name=&hibernateProperties&&
&prop key=&hibernate.dialect&&
org.hibernate.dialect.Oracle9Dialect
&prop key=&hibernate.show_sql&&
&!-- 项目上线时要删掉,不让别人看见sql语句 --&
&prop key=&hibernate.format_sql&&
&/property&
&property name=&mappingResources&&
&value&hibernate/Province.hbm.xml&/value&
&value&hibernate/City.hbm.xml&/value&&/list&
&/property&&/bean&
&bean id=&hibernateTemplate& class=&org.springframework.orm.hibernate3.HibernateTemplate&&
&property name=&sessionFactory&&
&ref bean=&sessionFactory& /&
&/property&
daoImpl,别忘了配置
package com.kane.dao.I
import java.util.L
import org.hibernate.criterion.DetachedC
import org.hibernate.criterion.R
import org.springframework.orm.hibernate3.support.HibernateDaoS
import com.kane.dao.IP
import com.kane.pojo.P
public class ProvinceImpl extends HibernateDaoSupport implements IProvince{
public void docreate(Province v) throws Exception {
super.getHibernateTemplate().save(v);
public void doremove(Integer id) throws Exception {
super.getHibernateTemplate().delete(findById(id));
public List&Province& findAll() throws Exception {
return &super.getHibernateTemplate().loadAll(Province.class);
public Province findById(Integer id) throws Exception {
return super.getHibernateTemplate().get(Province.class, id);
public List&Province& findByPage(int pageNo, int pageSize, String column,
String keyword) throws Exception {
// Spring没有封装HQL版本的分页查询方法.
// 1、使用Criteria来完成分页查询
DetachedCriteria criteria=DetachedCriteria.forClass(Province.class);
//加入模糊查询条件
criteria.add(Restrictions.like(column, &%&+keyword+&%&));
List&Province& all=super.getHibernateTemplate().findByCriteria(criteria,
(pageNo-1)*pageSize,pageSize);
// 2、使用Spring的扩展接口,通过匿名内部类的形式来扩展Spring原有的方法
// List all = super.getHibernateTemplate().executeFind(
// new HibernateCallback() {
// public Object doInHibernate(Session session)
// throws HibernateException, SQLException {
// // 这里就是封装好的Hibernate中的操作。
// // 内部类要使用外部类的属性,必须为属性加入final关键字
// String hql = &FROM News AS n WHERE n.& + column + & LIKE ?&;
// Query query = session.createQuery(hql);
// query.setString(0, &%&+keyword+&%&);
// query.setFirstResult((pageNo - 1) * pageSize);
// query.setMaxResults(pageSize);
// return query.list();
public int getCount(String column, String keyword) throws Exception {
String hql=&SELECT COUNT(P) FROM Province AS P WHERE P.&+column+& LIKE ?&;
List allList=super.getHibernateTemplate().find(hql, &%&+keyword+&%&);
return ((Long) allList.get(0)).intValue();//默认返回long型,这里用到
public void update(Province v) throws Exception {
super.getHibernateTemplate().update(v);
serviceImpl
package com.kane.service.I
import java.util.HashM
import java.util.L
import java.util.M
import com.kane.dao.IP
import com.kane.pojo.P
import com.kane.service.IProvinceS
&* 由AOP解决预处理和断开连接的工作
&* @author lenovo
public class ProvinceServiceImpl implements IProvinceService{
private IProvince provinceI
public IProvince getProvinceImpl() {
return provinceI
public void setProvinceImpl(IProvince provinceImpl) {
this.provinceImpl = provinceI
public Map&String, Object& list(int pageNo, int pageSize, String keyword,
String column) throws Exception {
Map&String,Object& map=new HashMap&String, Object&();
map.put(&allProvince&, provinceImpl.findByPage(pageNo, pageSize, column, keyword));
map.put(&allCount&, provinceImpl.getCount(column, keyword));
public List&Province& findAll() throws Exception {
return provinceImpl.findAll();
struts.xml配置
&?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.1.dtd&&
&include file=&struts/struts-root.xml&&&/include&
&include file=&struts/struts-front.xml&&&/include&
&include file=&struts/struts-back.xml&&&/include&
&package name=&my_project_default& extends=&struts-default& abstract=&true&&
&global-results&
&result name=&forward&&/forward.jsp&/result&
&result name=&input&&/error.jsp&/result&
&/global-results&
&/package&
这里用strut-root配置读取action
&?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.1.dtd&&
&package name=&root& namespace=&/& extends=&my_project_default&&
&action name=&province_*& class=&provinceAction& method=&{1}&&&!-- _可以换成其他 --&
&result name=&index&&/index.jsp
&/package&
注意出现懒汉加载
&?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=&com.kane.pojo.City& table=&CITY& schema=&ZL&&
& & & & &id name=&cid& type=&java.lang.Integer&&
& & & & & & &column name=&CID& precision=&8& scale=&0& /&
& & & & & & &generator class=&increment& /&
& & & & &/id&
& & & & &many-to-one name=&province& lazy=&false&
class=&com.kane.pojo.Province& fetch=&select&&
& & & & & & &column name=&PID& precision=&8& scale=&0& /&
& & & & &/many-to-one&
& & & & &property name=&cname& type=&java.lang.String&&
& & & & & & &column name=&CNAME& length=&30& /&
& & & & &/property&
& & &/class&
&/hibernate-mapping&
这里做个测试,具体页面显示值将采用Ajax提交json数据,CSDN不允许传太多图片,内容在另一篇博客
action代码
package com.kane.
import java.util.L
import com.kane.pojo.P
import com.kane.service.IProvinceS
import com.opensymphony.xwork2.ActionS
public class ProvinceAction extends ActionSupport{
private IProvinceService provinceServiceI
public IProvinceService getProvinceServiceImpl() {
return provinceServiceI
public void setProvinceServiceImpl(IProvinceService provinceServiceImpl) {
this.provinceServiceImpl = provinceServiceI
public String indexPre() throws Exception {
List&Province& list=provinceServiceImpl.findAll();
System.out.println(list.get(0).getCities());
return &index&;
(本文来自互联网,不代表搜站(/)的观点和立场)本站所有内容来自互联网,若本站收录的信息无意侵犯了贵司版权,请给我们来信(),我们会及时处理和回复,谢谢编辑推荐最近更新核心提示:现在开发的一个项目使用S2SH框架,配置环境用了一两天,现在把当时配置环境时写的文档整理下发出来,也算加强点记忆。 1 开发环境 MyEclipse5.5 JDK 1.6 Java EE 5.0 Tomcat6.0 Struts2.1.6 Spring2.5.6 Hibernate3.3.1 2 为 ssh 做好准备 2.1 下载包 Struts2 &&& 现在开发的一个项目使用S2SH框架,配置环境用了一两天,现在把当时配置环境时写的文档整理下发出来,也算加强点记忆。 1 开发环境 ? MyEclipse5.5 ? JDK 1.6 ? Java EE 5.0 ? Tomcat6.0 ? Struts2.1.6 ? Spring2.5.6 ? Hibernate3.3.1 2 为ssh做好准备 2.1下载包 ? Struts2.1.6包下载:
Full Distribution:
(110mb) [] [] ? Hibernate3.3包下载:
? Spring2.5下载:
2.2搭建开发环境 打开MyEclipse,新建一个web project,如图: 注意:J2ee版本设为java ee 5.0
点击Finish完成,建好的工程如图:
如果你的myeclipse还没有配置一个web服务器,那就进行下面的步骤,这里以tomcat6为例: 打开MyEclipseàPreferences窗口,展开目录树如下图: 设置好你的tomcat6的路径即可,前提你要先安装好tomcat哦。还有需要注意的一点是,看到目录树tomcat6.x下面的JDK了吗?点击它,也要把tomcat的JDK设为jdk1.6才行,以与myeclipse一致。 好了,工程已经建好了,下面就开始配置struts吧。配置之前先把struts的包下载下来哦,下载地址上面已经给出了。 3 配置Struts2.0 3.1 基础配置 1)引入Struts必需的五个jar包。下载解压后,struts-2.1.6\lib目录下是struts所有的相关jar包。这么多jar包并不是struts必须得,使用struts只需要把下面五个引入即可,以后用到什么jar包,再引入。 ? Commons-logging-1.0.4.jar ? Freemarker-2.3.13.jar ? Ognl-2.6.11.jar ? Struts2-core-2.1.6.jar ? Xwork-2.1.2.jar 2)修改WEB-INF下的web.xml文件,增加struts2的配置。增加代码如下:这些配置代码对于struts2是不变的,直接复制到web.xml即可。 &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& 3)添加struts配置文件。 在WEB-INF/classes目录下,新建struts.xml,模版如下: &?xml version="1.0" encoding="UTF-8" ?&&!DOCTYPE struts PUBLIC&&& "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"&&& ""&&struts&&/struts& 好了,struts基本配置完毕,是不是很简单? 现在把工程发布到tomcat上去测试一下,在工程名字上点击右键,选择MyEclipseàAdd and Remove project Deployments,在打开的窗口里,点击Add,选择我们之前配置好的tomcat6服务器,如下图:
发布好了,启动tomcat,如果启动无异常,则说明配置成功。 注意:可能会出现struts-default.xml相关异常,根据提示引入相关jar包。我测试的时候是缺少fileupload相关jar包,于是引入了commons-fileupload-1.2.1.jar。 3.2 配置一个Action 下面开始配置一个Action吧,以用户登录为例: 1)首先新建一个登陆页面login.jsp,代码如下: &%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&&%@ taglib prefix="s" uri="/struts-tags" %&&!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&&html& &head& &title&登录&/title& &meta http-equiv="pragma" content="no-cache"& &meta http-equiv="cache-control" content="no-cache"& &meta http-equiv="expires" content="0"& &/head& &body& &s:form name="form1" action="login" & &s:textfield& name="username" label="username" &&/s:textfield& &s:password name="password" label="password" &&/s:password& &s:submit label="submit"&&/s:submit& &/s:form& &s:actionerror/& &/body&&/html& 2)在我们已经建好的struts.xml中来配置登录的action。这里定义登录action的名字为login,配置代码如下: &?xml version="1.0" encoding="UTF-8" ?&&!DOCTYPE struts PUBLIC&&& "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"&&& ""&&struts& &package name="struts2" extends="struts-default"& &action name="login" class="test.LoginAction"& &result name="success" type="redirect"&index.jsp&/result& &result name="input"&login.jsp&/result& &result name="error"&login.jsp&/result& &/action& &/package&&/struts& 3)下面就来编写具体的action类了。代码如下:
1 2import com.opensymphony.xwork2.ActionS 3public class LoginAction extends ActionSupport { 4 public S 5 public S 6 public String execute(){ 7 if(!username.equals("admin")){ 8 super.addFieldError("username", "用户名错误!"); 9 return ERROR;10&&&&&&& }11 if(!password.equals("001")){12 super.addFieldError("password", "密码错误!");13 return ERROR;14&&&&&&& }15 return SUCCESS;16&&& }17 public void validate(){18 if(username==null||username.length()==0){19 super.addActionError("用户名不能为空");20&&&&&&& }21 if(password==null||password.length()==0){22 super.addActionError("密码不能为空");23&&&&&&& }24&&& }25}26 4)好了,一个Action就创建完成了,重启tomcat测试一下吧。如果第一次使用struts,你可能你明白上面的代码,以后慢慢学习即可,现在先来看一下效果吧。 打开登录页面,输入正确或错误的用户名和密码,看看有什么提示。 4 配置Hibernate 4.1 基础配置 1) 导入最小jar包,即使用Hibernate3所必需的jar包。下载hibernate-distribution-3.3.1.GA解压后,必需jar包都在lib"required目录下。必需jar包如下: ? hibernate3.jar-----------------------------核心类库 ? antlr-2.7.6.jar-----------------------------代码扫描器,用来翻译HQL语句 ? commons-collections-3.1.jar----------- Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大 ? dom4j-1.6.1.jar----------------------------是一个Java的XML API,类似于jdom,用来读写XML文件的 ? javassist-3.4.GA.jar----------------------- Javassist 字节码解释器 ? jta-1.1.jar------------------------------------标准的JTA API。 ? slf4j-api-1.5.2.jar ? slf4j-nop-1.5.2.jar 1) 创建Hibernate配置文件。在WEB-INF"calsses目录下(工程的src包下)新建hibernate.cfg.xml。这是hibernate连接数据库的配置文件。这里以连接Oracle为例: &?xml version='1.0' encoding='UTF-8'?&&!DOCTYPE hibernate-configuration PUBLIC&&&&&&&&& "-//Hibernate/Hibernate Configuration DTD 3.0//EN"&&&&&& ""&&hibernate-configuration& &session-factory& &property name="connection.driver_class"&&&&&&&&&&&& oracle.jdbc.driver.OracleDriver &/property& &property name="connection.url"&
&/property& &property name="myeclipse.connection.profile"&TEST&/property& &property name="connection.username"&test&/property& &property name="connection.password"&test&/property& &property name="dialect"&&&&&&&&&&&& org.hibernate.dialect.Oracle9Dialect &/property& &property name="show_sql"&true&/property& &mapping resource="test/hibernate/TUser.hbm.xml" /& &/session-factory&&/hibernate-configuration& 1) 创建Session工厂类HibernateSessionFactory。 让我们先了解一下Session, Hibernat 对数据库的操作是通过Session来实现的,这里的session不同于页面间传递参数的session,而是类似于JDBC中的 Connection。Session是Hibernate运作的中心,对象的生命周期、事务的管理、数据库的存取都与session息息相关。 而Session是由HibernateSessionFactory创建的,是线程安全的,可以让多个执行线程同时存取HibernateSessionFactory而不会有数据共享的问题,但不能让多个线程共享一个Session。 HibernateSessionFactory可以用myeclispe自动创建,这里就不贴出代码了。 注意:别忘了把数据库驱动包引入到工程中。对于oracle是class12.jar。 4.2 示例&&&&&&& 这个自己去测试一下吧。 5 配置Spring2.5 5.1 基础配置 1) 导入spring包。下载spring-framework-2.5.6并解压后,在spring-framework-2.5.6"dist目录下找到spring.jar,引入到工程中。 说明:spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的。除了spring.jar文件,Spring还包括有其它13个独立的jar包,各自包含着对应的Spring组件,用户可以根据自己的需要来选择组合自己的jar包,而不必引入整个spring.jar的所有类文件。这里,为了使用方便,我们引入整个spring.jar。 2) 配置web.xml文件。Jar包引入完成后,就开始配置spring了,首先修改web.xml文件,增加如下代码:
&!--* 从类路径下加载spring的配置文件, 多个配置文件可以用逗号和空格区分* classpath: 关键字特指类路径下加载--& &context-param& &param-name&contextConfigLocation&/param-name& &param-value&&&&&&&&&&&& classpath*:spring/applicationContext*.xml &/param-value& &/context-param& 在这里,我们指定了spring配置文件的路径,即WEB-INF/classes/spring目录下的所有以applicationContext开头命名的xml文件。 3) 在src下面新建applicationContext.xml文件。首先给这个文件加上spring的标头: &?xml version="1.0" encoding="UTF-8"?&&beans xmlns=""&&&&&&&& xmlns:xsi=""&&&&&&&& xmlns:aop=""&&&&&&&& xmlns:tx=""&&&&&&&& xsi:schemaLocation="
"&&/beans& 注意:标头是2.5的 不要引入2.0, 错了可能Spring就不能正确加载。 5.2 示例 &&&&&& Spring基本配置完毕,让我们建个示例来测试一下吧,首先在test.spring包下创建两个java文件:TUser.java、SpringTest.java。 TUser.java:
1package test. 2 3public class TUser implements java.io.Serializable { 4 private S 5 private S 6 private S 7 8 public String getUsername() { 9 return this.10&&& }11 public void setUsername(String username) {12 this.username =13&&& }14 public String getAllname() {15 return this.16&&& }17 public void setAllname(String allname) {18 this.allname =19&&& }20 public String getAddress() {21 return this.22&&& }23 public void setAddress(String address) {24 this.address =25&&& }26}27 SpringTest.java:
1package test. 2 3import org.springframework.context.ApplicationC 4import org.springframework.context.support.ClassPathXmlApplicationC 5 6public class SpringTest { 7 public static void main( String[] args ) { 8 //加载spring配置文件,初始化IoC容器 9&&&&&&& ApplicationContext ac = new ClassPathXmlApplicationContext("spring/applicationContext.xml");10 //从容器 接管Bean11&&&&&&& TUser user = (TUser) ac.getBean("TUser");12 //输出欢迎信息13&&&&&&& System.out.println( "Hello:" + user.getUsername() + ";u is in " + user.getAddress() + " ; and u is& " + user.getAllname() );14&&& }15}16 创建完毕后,就剩最后一步了,在applicationContext.xml中配置一个bean,在xml中增加如下代码: &bean id="TUser" class="test.spring.TUser"& &property name="username" value="小张"&&/property& &property name="allname" value="张三"&&/property& &property name="address" value="青岛市"&&/property& &/bean& 好了,下面运行一下吧,右键单击SpringTest.java选择run as àJava Application,运行结果如下:
如果你的运行结果和上面一样,且没有异常,则说明Spring配置成功了。是不是很简单?不要骄傲,重要的是Spring与Hibernate、Struts的整合。继续吧! 5.3 整合Struts &&&&&& Spring与Struts的整合其实就是把Struts的Action类交给Spring来管理,下面开始吧! 1) 导入jar包。在Struts2.1.6的lib目录中找到struts2-spring-plugin-2.1.6.jar,引入到工程中。 2) 配置web.xml文件。在web.xml中加入以下代码: &listener& &listener-class&&&&&&&&& org.springframework.web.context.ContextLoaderListener &/listener-class& &/listener& 1) 现在就来看如何把struts的action交给spring。以struts示例中的login.action为例,首先创建一个LoginAction类的Bean。在applicationContext.xml中增加如下代码: &bean id="loginAction" class="test.action.LoginAction" scope="prototype"& &/bean& 这里,我们把这个bean的id设为loginAction。Scope设为prototype,含义是每一次请求创建一个LoginAction类的实例,Scope还有另一个值“singleton”意为“单例模式”。 接下来修改struts.xml文件,把原来login.action的配置做如下修改: 把&action name="login" class=" test.action.LoginAction "& 改为 &action name="login" class="loginAction"& 注意到有什么区别了吗?class值设为了loginAction,即LoginAction类的bean的ID。这样我们就把LoginAction类交给了spring管理。至于具体是怎么处理的,秘密在struts2-spring-plugin-2.1.6.jar中,有空自己就去研究吧,现在会用就可以了。 5.4 整合Hibernate &&&&&& Spring整合Hibernate主要是对hibernate的Session进行管理,包含Session的创建、提交、关闭的整个生命周期。Spring对事务的管理应用了AOP的技术,配置前请先了解一下AOP的知识。 1) 配置sessionFactory,让spring来创建Session。在applicationContext.xml中增加如下代码: &!-- 配置sessionFactory --& &bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"& &property name="configLocation"& &value&classpath:spring/hibernate.cfg.xml&/value& &/property& &/bean& 我们原来是用HibernateSessionFactory.java来创建Session的,现在删除即可,交给Spring创建。这里,创建了一个Session工厂类的Bean,其ID为“sessionFactory”。 2) 配置事务管理器。增加如下代码:
&!-- 配置事务管理器 --& &bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"& &property name="sessionFactory"& &ref bean="sessionFactory"/& &/property& &/bean& 这里创建了一个id为transactionManager的事务管理器,它匹配一个session工厂,&ref bean="sessionFactory"/&这个sessionFactory是指session工厂的ID。 3) 对事务管理器进行事务设置。增加如下代码: &tx:advice id="smAdvice" transaction-manager="transactionManager"& &tx:attributes& &tx:method name="save*" propagation="REQUIRED"/& &tx:method name="del*" propagation="REQUIRED"/& &tx:method name="update*" propagation="REQUIRED"/& &/tx:attributes& &/tx:advice& 这里创建了一个advice(通知),对事务管理器进行事务设置,这里意思是指,对于以save、del、update开头的方法应用事务。 4) 下面就把事务应用到具体的类。看如下代码: &aop:config& &aop:pointcut id="smMethod"expression="execution(* test.service.impl.*.*(..))"/& &aop:advisor pointcut-ref="smMethod" advice-ref="smAdvice"/& &/aop:config& 这里配置的作用是把我们上面创建的advice应用到具体的类中。以上代码的意思指,给test.service.impl下的所有类的所有方法应用smAdvice。 5) 示例:使用Session。 &&&& 配置基本完毕了,自己去测试吧,这里就不先写了。&&&&&
看过此文的读者还看过: 本文内容搜集于互联网,如有侵犯你的权利,请来信告知。
阅读(...) 评论()}

我要回帖

更多关于 ssh框架参考文献 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信