SSH2_增删查改实例
SSH2整合实例详细教程

本次教程是SSH2的环境搭建,主要用到的技术是struts2.0+hibernate3.2+spring2.0,这种架构在现在很流行的,也是很多高校学生做毕业设计的架构,今天我们就用这种架构做一个简单的实例,详细的步骤,在于抛砖引玉,给大家一点启发。
一、创建数据库的时候会创建出联合主键<Composite-id>。
二、项目创建1、打开MyEclipse,点击File,指向New,点击Web Project。
2、输入工程名SSH,J2EE Specification Level为Java EE 5.0,点Finish即可创建完项目。
三、添加hibernate环境1、右击刚建立的SSH项目,指向MyEclipse,点击Add Hibernate Capabilities。
2、出现如下对话框之后,选择要用到的Hibernate3.2,以及所用到的包,选择Copy checked Library Jars to project folder and add to build-path,点击Next。
3、到了这一步,按默认设置,点击Next。
4、取消Specify database connection details的选择,再点击Next。
5、取消Create SessionFactory class选择,最后点击Finish。
这样一些有关hibernate的jar包点导进来了,以及建了一个hibernate.cfg.xml文件。
导入前:导入后:四、添加spring环境1、和添加hibernate环境的方法大致相同,右击SSH项目,指向MyEclipse,点击Add spring Capabilities。
2、选择要用到的Spring 2.0,勾选用到的库,注意还要勾选Spring 2.0 Web Libraries的库,一共是勾选了5个库的。
再选择Copy checked Library contents to project folder(TLDs always copied),点击Next。
用SSH2实现简单的用户登录注册删除功能

第一次尝试把SSH2整合起来,这里记下编写当中遇到的问题和自己的思考一、使用struts编写登陆注册等界面Java代码1.<body>2.This is my Register page. <br>3.<form action = "register!register" method = "post">ername:<s:textfield name ="username"/><br>5.password:<s:password name = "password1"/><br>6.repeatpassword:<s:password name = "password2"/><br>7.email:<s:textfield name ="email"/><br>8.<s:submit value ="submit"/><br>9.<s:reset value ="reset"/><br>10. <s:actionerror /> <s:actionmessage />11. </form>12. </body>注意这里的 <s:actionerror /> <s:actionmessage />用法表示出Action中的this.addActionError("the username repeated");字符串参数。
由于之前分析过很多类似的界面,这里不再赘述二、在spring框架中引入hibernate框架首先我引入spring框架,在其配置文件中,引入hibernate框架。
SSH实现的增删改查实例

SSH实现的增删改查实例分类:ssh 2010-10-01 17:12 1487人阅读评论(5) 收藏举报一.整合步骤1. 通过MyEclipse向导,添加struts功能2. 通过MyEclipse向导,添加Hibernate3功能:生成会话工厂的那个步骤中一定要将那个对号要去掉,不能由hibernate来生成,而是交给Spring来生成;还有就是导入jar包的时候选择复制到lib目录下这一项。
3. 通过MyEclipse向导,导入实现Spring功能,注意导入jar包的时候选择复制到lib目录下这一项。
3. 利用MyEclipse反向工程的方法,以Spring<dao>生成dao对象的方式创建Hibernate DAO,相关POJO及其xxx.hbm.xml。
4. DAO实现类加入@Transactional标记。
5. 修改applicationContext.xml文件,增加Spring事务管理、DAO等bean的配置。
6. 编写action类。
7. 在applicationContext.xml文件中添加Action的代理bean。
8. 在struts的配置文件中,添加相应的Action,类名指向Spring中的代理bean,并加入<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />和<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"><set-property property="contextConfigLocation"value="/WEB-INF/classes/applicationContext.xml" /></plug-in>。
ssh2实例(带截图)

Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一)在JavaEE企业级开发中,以SSH2框架为核心的应用非常广,大象根据项目实践经验,通过一个实例,详细的为大家讲解如何实现全注解式的开发。
开发环境JDK1.6.0_18Eclipse3.2.1MyEclipse5.1.0Tomcat6.0.10MySQL5.0.27Navicat Lite for MySQL 8.1.20每个人的开发环境可能会有差异,但有一点我需要说明的是,JDK的版本不得低于1.5,因为用到了很多1.5版才支持的新特性。
Tomcat和MySQL请不要低于我所用的版本,因为我没在其它的版本上进行测试。
Navicat则是MySQL数据库的图形化操作工具。
我在这里假定各位目前已经设置好了开发环境,下面就开始详细的说明。
由于要阐述的内容比较多,大象决定将它们划分成个几章节来讲,这一章就主要来说说jar包的选择。
第一部分:选择必须的jar包新建一个web项目,然后将必要的jar包COPY到lib里面。
根据本文实例demo,大象给出下图中的最少jar包配置。
我对这些jar包进行一下说明,方便大家理解。
解压Struts2.1.6的lib文件夹,从中选出上面7个jar包添加到我们的工程库中。
commons-logging、freemarker、ognl、struts2-core、xwork这5个还是struts2的核心包。
但在Struts2.1.6这个版本中,还需要加上commons-fileupload包。
如果没有,则启动就会报错,不过不需要像网上传言的那样还得加上commons-io的jar包,这些大象都亲自做过测试。
在本实例中,我将对struts2也采取注解的方式,所以用到了struts2-convention-plugin-2.1.6.jar这个插件。
因为要与spring整合,所以struts2-spring-plugin-2.1.6.jar也必不可少。
SSH2做的一个批量操作

一个批量删除的操作,其它的批量操作可以类似方法做。
今天做了一个批量删除的操作,拿来分享一下自己想着做的,方法肯定不好,望各位大虾多多指点,小弟正在学习途中……..数据随便添加的VO类:public class User {private int id;private String username;private String password;…….. //setter、getter方法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="vo"><class name="User" table="user"><id name="id" column="id"><generator class="native"/></id><property name="username" unique="true" not-null="true" length="16"></property><property name="password"></property></class></hibernate-mapping>Action类Public class UserAction extends ActionSupport{public String[] opids; //需要批量操作的标识public User user; //User的引用public UserDAO userdaoimp; // 接口统一操作,可以只有setter方法,spring 注入….. //setter getter方法public String execute() throws Exception {userdaoimpl.batch_op(opids);return success;}}DAO接口:public interface UserDAO {//批量操作Boolean batch_ops(String[] ops);}DAOIMPL类Public class UserDAOImpl extend HibernateDaoSupport implements UserDAO{Public boolean batch_ops(String[] ops){StringBuffer sb=new StringBuffer();//把字符数据拆分成'1','2','3','4','5'...等这样的数据,还有最后一位后面不能再有逗号for(int i=0;i<ops.length;i++){if(i==ops.length-1){sb.append("'"+ops[i]+"'");}else{sb.append("'"+ops[i]+"',");}}int i=this.getSession().createSQLQuery("delete from users where id in("+ops+")")executeUpdate();//很多人都说执行sql删除要好些;if(i>0){b=true;}return b;}}前台用户列表页面代码:只放出重要的代码哈。
SSH实例解析

1SSH配置1.1 创建SSH应用1.1.1创建WEB应用1.1.2添加Struts2特性添加时选择Struts2.1。
要选择上面的两个Libraries。
1.1.3添加Spring3选择Spring 3 AOP Library、Spring 3 Core Library、Spring 3 Web Library。
将applicationcontext.xml保存到src目录(默认),取消允许AOP Builder选项。
1.1.4JDBC数据库连接拷贝JDBC驱动程序到web-inf/lib,刷新工程。
使用MyEclipse Database Explorer透视图来配置数据库连接。
配置JDBC驱动程序参数,并且选中“Save password”。
最后可以使用“Test Driver”测试连接是否成功。
1.1.5添加Hibernate添加Hibernate3.3,选择所有Spring库。
整合Hibernate配置到Spring。
将配置保存到Spring配置文件中。
使用已存在的Spring配置文件。
选择数据库连接。
在“DB Driver”中选择之前配置的数据库连接,如果使用MySQL数据库则Dialect必须选择“MySQL”。
不要创建HibernateSessionFactory(使用Spring集成SessionFactory实现)。
1.1.6Jar包冲突解决方案向导结束后,由于Struts2、Hibernate和Spring的包的版本有冲突,需要重新设置。
删除向导的Jar配置从工程的属性面板中选择“Java Build Path”,将所有Struts2、Spring、Hibernate的库全将提供的EShopping例子解压,将WEB-INF/lib目录下所有jar包拷贝到工程的WEB-INF/lib目录下即可。
有冲突的jar包在EShopping中已经手工删除了。
最后在项目上右键菜单中选择“Refresh”即可,现在就完成了SSH项目框架的搭建。
libssh2--ssh2实例

libssh2--ssh2实例#include "libssh2_config.h"#include<libssh2.h>#include<libssh2_sftp.h>上述为所包含必备头⽂件。
以下为定义的静态⼦串常量const char *keyfile1 = "~/.ssh/id_rsa.pub";const char *keyfile2 = "~/.ssh/id_rsa";const char *username = "username";const char *password = "password";unsigned long hostaddr;int rc, sock, i, auth_pw = 0;struct sockaddr_in_sin;const char *fingerprint;char * userauthlist;LIBSSH2_SESSION *session;LIBSSH2_CHANNEL *channel;连接到SSH2步骤:(1)建⽴socket并连接到远程主机SSH2服务(22端⼝);(2)创建⼀个LIBSSH2_SESSION 实例并启动它。
启动动作包括设置欢迎横幅、交换密钥并且设置加密、压缩和MAC层。
session = libssh2_session_init(); //创建⼀个会话实例if(libssh2_session_handshake(session, sock)){fprintf(stderr, "Failure establishing SSH session");return -1;}(3)认证:检查主机密钥指纹并检查可⽤的认证⽅式。
fingerprint = libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_SHA1);userauthlist = libssh2_userauth_list(session, username, strlen(username));if(strstr(userauthlist, "password") != NULL){auth_pw |= 1;}if(strstr(userauthlist, "keyboad-interactive") != NULL){auth_pw |= 2;}if(strstr(userauthlist, "publickey") != NULL){auth_pw |= 4;}(4)如果在参数列表中设置了认证⽅式,则将认证⽅式设为命令中的⽅式(前提是该⽅式是通过上个步骤检测可⽤的)。
ssh2框架 的一个用例实现

用例11.2乘务员执行发动机异常时调度员的安排功能描述 ................................................................................................................................... 1 实现步骤 .. (2)1.连接数据库 .................................................................................................................... 2 注意事项: ............................................................................................................................... 4 程序设计 .. (6)1.准备工作 ........................................................................................................................ 6 2.编写Dao 层代码 ........................................................................................................... 7 3. 编写Service 层代码 .................................................................................................. 8 4. 编写Action层代码 ........................................................................................ 9 5. 编写xml配置文件 .............................................................................................. 10 6. 编写jsp代码 ...................................................................................................... 11 附件:. (12)1.main.jsp 文件 ............................................................................................................... 12 1.2实现效果 . (13)为了帮助大家更好的完成用例的程序设计,我写了如下文档,该文档描述了一个简单的用例是如何用jsp 实现的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SSH2 增删查改实例(0)软件和框架版本:MyEclipse 6.0.1Tomcat 6.0.14Sturts2 1.8Hibernate 3Spring 2.0Mysql 5.1(一)引入包(共73个,不一定都需要,但是我的项目是这么多,经过调试,有没包冲突)(二)创建数据库表建立数据库octtest,并创建user表,表里面一共4个字段:id,姓,名,年龄。
语句如下:create database octtest;user octtest;DROP TABLE IF EXISTS `users`;CREATE TABLE `users` (`id` int(10) unsigned NOT NULL,`firstname` varchar(50) NOT NULL,`lastname` varchar(50) NOT NULL,`age` int(10) unsigned NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;(三)用myeclipse 中自带的hibernate reverse engineering 工具,根据刚才创建的user表,自动生成实体User 和相应的User.hbm.xml配置文件。
1)在myeclipse中的<DB Browser>视图中创建连接数据库连接,如下图:填入mysql数据库相应的路径,用户名,密码等信息。
注意:这里要引入mysql-connector-java的jar包,需要从外部导入。
2)连接数据库正常后,选择octtest数据库中的user表,右键-》hibernate reverse engineering。
自动生成实体User 和相应的User.hbm.xml配置文件。
(正常情况下可以生成,但是笔者生成engineer有问题,所以只能够手动创建User类和相应的User.hbm.xml,,所以如果读者顺利创建,可跳过2a,2b两部)2a)创建User实体类User.javapackage com.bean;public class User {public Integer id;public String firstname;public String lastname;public int age;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getFirstname() {return firstname;}public void setFirstname(String firstname) {this.firstname = firstname;}public String getLastname() {return lastname;}public void setLastname(String lastname) {stname = lastname;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}2b)创建User实体类对应的映射文件,这个映射文件作用是告诉hibernate要把这个User对象和数据库中的user表联系起来。
User.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="er" table="users"><id name="id" type="ng.Integer" column="id"><generator class="increment"/></id><property name="firstname" type="string"column="firstname"/><property name="lastname" type="string" column="lastname"/><property name="age" type="ng.Integer"column="age"/></class></hibernate-mapping>(三)编写底层dao操作:对User实体操作,主要还是增删查改4个。
养成好习惯,无论是dao操作还是业务逻辑,最好都先用接口写好要用到的方法,再用实现类去实现。
dao接口:package com.dao;import java.util.List;import er;public interface UserDAO {public void saveUser(User user);public void removeUser(User user);public User findUserById(Integer id);public List<User> findAllUser();public void updateUser(User user);}dao实现:package com.dao.impl;import java.util.List;importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;import er;import erDAO;public class UserDAOImpl extends HibernateDaoSupportimplements UserDAO {@SuppressWarnings("unchecked")public List<User> findAllUser() {String hql = "from User user order by user.id desc";return (List<User>) this.getHibernateTemplate().find(hql);}public User findUserById(Integer id) {User user = (User)this.getHibernateTemplate().get(User.class,id);return user;}public void removeUser(User user) {this.getHibernateTemplate().delete(user);}public void saveUser(User user) {this.getHibernateTemplate().save(user);}public void updateUser(User user) {this.getHibernateTemplate().update(user);}}(四)编写struts.xml applicationContext.xml web.xml配置文件。
其中,web.xml文件是可以一次写完。
struts.xml和applicationContext.xml 需要注意保存路径。
web.xml:(保存路径是:×××项目名/WebRoot/WEB-INF)<?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"><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><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app> ————————————————————————————————————————applicationContext.xml :(保存路径是:×××项目名/WebRoot/WEB-INF),这个是默认路径<?xml version="1.0" encoding="UTF-8"?><beansxmlns="/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/octtest"></property><property name="username" value="root"></property><property name="password" value="mysql"></property><property name="maxActive" value="100"></property><property name="maxIdle" value="30"></property><property name="maxWait" value="500"></property></bean><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource" ref="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"><list><value>com/bean/User.hbm.xml</value><!--<value>com/gzjs/updatewapi/entity/As_Active_CertBean.hbm.xml</value><value>com/gzjs/updatewapi/entity/Cert_DataBean.hbm.xml</value><value>com/gzjs/updatewapi/entity/Revoke_CertBean.hbm.xml</value><value>com/gzjs/updatewapi/entity/User.hbm.xml</value>--></list></property></bean><bean id="userDao" class="erDAOImpl" scope="singleton"><property name="sessionFactory"><ref bean="sessionFactory"/></property></bean><bean id="userService" class="erServiceImpl"><property name="userDao"><ref bean="userDao"/></property></bean><bean id="saveUserAction" class="com.action.SaveUserAction" scope="prototype"><property name="userService"><ref bean="userService"/></property></bean><bean id="listUserAction" class="com.action.ListUserAction" scope="prototype"><property name="userService"><ref bean="userService"/></property></bean><bean id="showUserRecordAction" class="com.action.ShowUserRecordAction" scope="prototype"> <property name="userService"><ref bean="userService"/></property></bean><bean id="updateUserAction" class="com.action.UpdateUserAction" scope="prototype"><property name="userService"><ref bean="userService"/></property></bean><bean id="deleteUserAction" class="com.action.DeleteUserAction" scope="prototype"><property name="userService"><ref bean="userService"/></property></bean></beans>————————————————————————————————————————struts.xml :(保存路径是:×××项目名/WebRoot/WEB-INF/classes)<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="user" extends="struts-default"><action name="saveUser" class="saveUserAction"><resultname="success"type="redirect">/listUser.action</result><result name="input">/save.jsp</result></action><action name="listUser" class="listUserAction"><result name="success">/listUser.jsp</result></action><action name="showUserRecord"class="showUserRecordAction"><result name="success">/showRecord.jsp</result></action><action name="updateUser" class="updateUserAction"><result name="success"type="redirect">/listUser.action</result><result name="input">/showRecord.jsp</result></action><action name="deleteUser" class="deleteUserAction"><result name="success"type="redirect">/listUser.action</result></action></package></struts>(五)编写action类,有两种方法,一种是crud每种操作一个action,另一种是crud集成到一个UserAction中。