「javassh案例」javassh框架
本篇文章给大家谈谈javassh案例,以及javassh框架对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、求个Java三大框架SSH 登录例子
- 2、JAVA SSH框架搭建流程
- 3、java ssh linux 编程
- 4、求一个JAVA SSH框架的实例
- 5、java的ssh框架做项目网站的案例
- 6、如何用Java实现SSH远程连接?
求个Java三大框架SSH 登录例子
这种csdn下载版块,找找看,以前初学的时候也找过类似的例子。
JAVA SSH框架搭建流程
首先,明确spring,struts,hibernate在环境中各自的作用。
struts:
用来响应用户的action,对应到相应的类进行处理。需要struts对应的包。
hibernate:
用来把实体类对应到数据库。提供增删改查的基本操作实现。需要hibernate对应的包以及mysql的jdbc驱动包。
spring:
管理struts:在xml配置文件中为struts的action进行值注入。
管理hibernate:在xml配置文件中配置hibernate的配置信息(dataSource,sessionFactory),即不需要原来的hibernate的xml文件。为hibernate的dao操作注入sessionfactory属性值。
需要提供spring对应的包,除此以外,还需要提供一个整合spring与struts的包:truts2-spring-plugin-2.0.11.1.jar
下面就搭建步骤进行详细说明:
1、新建一个web project,导入包,需要的包放在文件夹sshlib中。
2、修改web.xml的配置信息,内容如下:
?xml version="1.0" encoding="UTF-8"?
web-app version="2.5" xmlns=" "
xmlns:xsi=" "
xsi:schemaLocation="
"
welcome-file-list
welcome-fileindex.jsp/welcome-file
/welcome-file-list
!-- 下面的listener,是spring提供的,它会在创建时自动查找WEB-INF下的applicationContext.xml文件 ,从而创建spring容器--
listener
listener-class
org.springframework.web.context.ContextLoaderListener
/listener-class
/listener
!-- 下面的配置作用是:在MyEclipse中,系统会自动到WEB-INF下寻找 applicationContext.xml文件,而系统
会自动将applicationContext.xml放置到WEB-INF下的classes下,所以会产生找不到applicationContext.xml的错误,需要指明applicationContext.xml
的放置位置。这就是下面的信息作用。在Eclipse中也许不需要此配置信息。--
context-param
param-namecontextConfigLocation/param-name
param-value
/WEB-INF/classes/applicationContext.xml
/param-value
/context-param
!-- 下面的配置信息,用来配置说明使用struts过滤器 --
filter
filter-namestruts2/filter-name
filter-class
org.apache.struts2.dispatcher.FilterDispatcher
/filter-class
!--
下面的配置信息用来说明:程序中运行的action放置在哪个包下面,对于list.action的请求,它会自动在这个包下面寻找ListAction.class的类
如果没有这句话,那么所有的action请求只能在struts.xml中进行配置。
--
init-param
param-nameactionPackages/param-name
param-value
com.action
/param-value
/init-param
/filter
!--
下面的配置表示对于所有请求都交给struts来处理。
--
filter-mapping
filter-namestruts2/filter-name
url-pattern/*/url-pattern
/filter-mapping
/web-app
3、接下来用来配置struts.xml
?xml version="1.0" encoding="UTF-8" ?
!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
" "
struts
!-- 指定Web应用的默认编码集。该属性对于处理中文请求参数非常有用,对于获取中文请求参数值,应该将该属性值设置为GBK或者GB2312 当设置该参数为GBK时,相当于调用HttpServletRequest的setCharacterEncoding方法 --
constant name="struts.i18n.encoding" value="utf-8" /
constant name="struts.devMode" value="true" /
package name="default" namespace="/" extends="struts-default"
interceptors
!-- 定义拦截器 --
interceptor name="crudInterceptor"
class="com.action.CrudInterceptor" /
interceptor-stack name="appStack"
interceptor-ref name="crudInterceptor" /
!-- 下面一行自带的拦截器必须加上,否则出错 --
interceptor-ref name="defaultStack" /
/interceptor-stack
/interceptors
!-- 使用默认拦截器配置Action都需要拦截器堆栈
即所有struts请求都自动先交给拦截器处理。关于拦截器的具体规则在拦截器对应类(com.action.CrudInterceptor)中进行了解释。
--
default-interceptor-ref name="appStack"/default-interceptor-ref
/package
/struts
4、接下来配置applicationContext.xml:
?xml version="1.0" encoding="UTF-8"?
beans xmlns=" "
xmlns:aop=" "
xmlns:xsi=" "
xsi:schemaLocation="
"
!-- 数据源 --
bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
property name="driverClassName"
value="org.gjt.mm.mysql.Driver" /
property name="url" value="jdbc:mysql://localhost:3306/user" /
property name="username" value="root" /
property name="password" value="" /
/bean
!-- sessionFactory配置 --
bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
property name="dataSource" ref="dataSource" /
property name="mappingResources"
list
valuecom/ssh/User.hbm.xml/value
/list
/property
!-- 定义sessionFactory的属性 --
property name="hibernateProperties"
props
prop key="hibernate.dialect"
org.hibernate.dialect.MySQL5InnoDBDialect
/prop
prop key="hibernate.hbm2ddl.auto"update/prop
prop key="hibernate.show_sql"true/prop
prop key="hibernate.format_sql"true/prop
/props
/property
/bean
!-- hibernate的类名,属性名和数据库之间的对应关系的自定义 com.ynstudio.tools.LocalNamingStrategy --
bean id="namingStrategy"
class="org.hibernate.cfg.ImprovedNamingStrategy"
/bean
!-- 定义DAO的bean --
bean id="userDao"
class="com.ssh.UserDaoImpl"
property name="sessionFactory" ref="sessionFactory" /
/bean
!--
下面的代码用来向Action类注入属性值
--
bean id="crudAction" class="com.action.CrudAction"
property name="userDao" ref="userDao"/property
/bean
/beans
5、上述配置文件完成后,就开始业务逻辑部分。
首先完成hibernate的curd操作部分内容。
设计一个User实体类。包含数据库中User表的字段。
新建一个User.hbm.xml文件,实现实体类与数据库的关联。内容如下:
?xml version="1.0"?
!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
" "
hibernate-mapping
class name="com.ssh.User" table="user"
id name="id" column="id"
generator class="increment" /
/id
property name="username" column="username" /
property name="password" column="password" /
property name="birthday" column="birthday" /
property name="email" column="email" /
/class
/hibernate-mapping
接下来需要实现dao操作。
设计一个类继承了HibernateDaoSupport类。关于HibernateDaoSupport类,请参考相关文档。
6、完成hibernate的设计后,接下来设计struts的拦截器和struts的action。
struts的拦截器:
package com.action;
import java.lang.reflect.Method;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
/**
* 这个类的是拦截器。
* 对于如下URL:
*
* actionInvocation.invoke()方法会自动调用名称了HelloAction类的list方法。
* 在action中根据该方法的返回值决定页面显示或跳转位置。
* result值除了可以再action类中定义,还可以在struts.xml中配置。
* 配置时可采用如下语句:
* action name="hello" class="crudAction"
* result name="list"/list.jsp/result
* result name="modify"/modify.jsp/result
* /action
* 此处需要格外注意的是:class属性的值,此值是applicationContext.xml中的id。
* 该bean中注入了action类中属性userDao的值。
* 所以,如果需要使用struts.xml中的action配置,需要使用该id,否则,系统不会给其注入值,最终导致空指针异常。
* @author HeXiaoXing
*
*/
public class CrudInterceptor extends AbstractInterceptor{
public String intercept(ActionInvocation actionInvocation) throws Exception {
/*
*下面代码演示了获取请求的类名与方法名的一半方式,但本例中不涉及。 全部注释掉。
*/
// Object action = actionInvocation.getAction();
// Class actionClass = action.getClass();
// String actionClassName = actionClass.getSimpleName();
// String methodName = actionInvocation.getProxy().getMethod();
return actionInvocation.invoke();
}
}
struts的action,关于此action的全部内容,请参考源程序CrudAction。
7、完成了类设计后,就是页面的设计,关于页面的设计,不再一一叙述,给粗源文件,请自行参考。
需要提出的是,在转向时,url的格式必须是method:方法名。这是约定的,不可以写成method=方法名。
java ssh linux 编程
纯Java通过SSH执行Linux命令的方法及代码
注:此ssh非彼SSH(Struts+Spring+Hibernate)
在Java中,我们可以通过Runtime去执行一些OS的命令,如:
String[] shell = new String[] { " /bin/sh " , " -c " , " ls -l " } ;
Process p = Runtime.getRuntime().exec(shell);
通过在Linux上执行 ssh --help命令,
usage: ssh [-1246AaCfgKkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-e escape_char] [-F configfile]
[-i identity_file] [-L [bind_address:]port:host:hostport]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-R [bind_address:]port:host:hostport] [-S ctl_path]
[-w local_tun[:remote_tun]] [user@]hostname [command]
不难发现,ssh命令中并不能带密码。
如果不需要登录时,我们可以用这样的方式来执行:
String[] shell = new String[] { " /bin/sh " , " -c " , " ssh root@192.168.1.5 ls -l " } ;
Process p = Runtime.getRuntime().exec(shell);
但是事情往往并不是我们想象的如此简单,绝大部分的客户是不能允许他们的Linux中还存在一个不需要密码就能执行任何命令的帐户的。那么,在Java中就没有任何办法通过ssh登录来执行一些命令吗?
不慌,先来Google一下,从一些网上别人请教的代码的蛛丝蚂迹中,发现了JSch ( ) ,这东东还真是不错,来,我们先看看其官方的简介:
JSch is a pure Java implementation of SSH2.
JSch allows you to connect to an sshd server and use port forwarding, X11 forwarding, file transfer, etc., and you can integrate its functionality into your own Java programs. JSch is licensed under BSD style license.
这东东支持像telnet一样的ssh的session,SFTP,SCP等。
下面,就让我们来看一个执行ssh命令的通用方法:
public static String sshExecute(String host, String user, String pwd,
String command) {
String osName = System.getProperty("os.name");
// ps -ef|grep tomcat|grep -v grep|awk '{print $2}'
StringBuffer sb = new StringBuffer();
try {
JSch jsch = new JSch();
if (osName.toUpperCase().indexOf("WINDOWS") -1) {
jsch.setKnownHosts("c:\\known_hosts");
} else {
jsch.setKnownHosts("/root/.ssh/known_hosts");
}
Session session = jsch.getSession(user, host, 22);
session.setPassword(pwd);
session.connect();
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(command);
InputStream in = channel.getInputStream();
channel.connect();
int nextChar;
while (true) {
while ((nextChar = in.read()) != -1) {
sb.append((char) nextChar);
}
if (channel.isClosed()) {
System.out.println("exit-status: "
+ channel.getExitStatus());
break;
}
try {
Thread.sleep(1000);
} catch (Exception ee) {
}
}
channel.disconnect();
session.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
看看,是不是挺简单了。
别忘了,由于这是Pure Java program,还有一个优点就是,这样的程序不依赖于OS,可以直接在Windows或者其它OS上运行。
对了,执行这个需要RSA的Key文件,示例如下:
192.168.1.4 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsoINy5sLnrzYCTKBh2UrsqHd62dnnimCZtvq8ojTYt7NcAjjtW2FqmFNO+5x/mTwyY+ssoP5SganxDYs3G016aPZDQdGVZMn/08IsB7QEIAXEVHtgGIGuLqsdMUBBIxV7KI6BK+OWVwv277tBOgqvPcgeEacviFZb2lZhWr8hvR2pTrPFBLr+UELejm/Nnf9qWDBjDj/d2o8+ReSwN8dzNJIiFyWdboyUCZfHhxNgiGANFx22gC4lM+Wk8gkASo/QYDvoUwLFrAJoMdsw0d4pn34bQ0mspaaWy4N0+zrNCPcl8D0Q1RrAjfYfOiZOSTnxabJ2DLijuq7UgFbn2ESMw==
附:产生此文件的简单方法:可以在Linux中用ssh命令登录一次,这样便在/root/.ssh(假如使用root用户登录到Linux)目录下生成known_hosts文件。
求一个JAVA SSH框架的实例
已发送。一定要采纳哦,毕竟花了时间精力给你解答。
JAVA版SSH框架实例代码及分页实例,简单实例精通struts,Hibernate,Spring,连接Mysql数据库。总共14M多一点。
QQ是:1972392802@qq.com
java的ssh框架做项目网站的案例
我这有份ssh整合的,不过只有最基本的功能,有兴趣的话留个邮箱吧
如何用Java实现SSH远程连接?
这还要思路。。。
表单提交到后台,触发方法, 然后调jsch的方法,获取返回信息。 然后return到页面。
搞定!
javassh案例的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于javassh框架、javassh案例的信息别忘了在本站进行查找喔。