ssh数据流代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ssh数据流代码相关的知识,希望对你有一定的参考价值。

  Spring ,hibernate,和stutas2三大框架还是比较经典的,虽然目前最主流的是Spring,mybatis和SpringMvc,但是目前ssh运用量还是比较大的,所以还是得好好掌握。原理什么的书上一大把,有的时候光看原理,会有一种不想学的冲动(ps:冲动归冲动,原理还是要会的),下面是我做项目的一部分代码,比较粗浅

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

  //这个是beanList的代码,当一个数据表中的数据不能满足需求,这个时候就要用到beanList(代码有点多,我就把get和set方法省略了)

public class DrmCustAddrBeanList {

// 条目识别码
private String recordId;

// 集团代号
private String comGroup;

//客户名称
private String custName;

// 客户直营属性
private String codeName;

//客户收货地址
private String sendAddr;

//收货人
private String recUser;

//收货人练习电话
private String sendTel;

//邮政编码
private String custZip;

//收货地址所属行政区代号
private String regiId;

//失效日期
private String deleteDate;

//最近一次更新时间
private Date lastUpdTime;

}

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

封装在js中的分页函数,下面会用到

function page(pagejson){
var pageparms=eval(pagejson);
//要被分页的list列表
var list=pageparms.list;
//每页显示的记录数
var pagerecords=(pageparms.pagerecords!=null)?pageparms.pagerecords:15;
//连续显示分页数
var showpages=(pageparms.showpages!=null)?pageparms.showpages:4;
//要展示分页的容器
var pagelay=pageparms.pagelay;
//要展示记录的容器
var tablediv=pageparms.tablediv;
//要展示分页情况的容器
var recordinfo=pageparms.recordinfo;
//点击页码按钮执行的事件
var clickpages=pageparms.clickpages;

var pages=Math.ceil(list.length/pagerecords);

var thisdate=function(curr){
var htmlData = "";
var startindex=(curr-1)*pagerecords;
var endindex;
if(curr<pages){
endindex=curr*pagerecords;
}else{
endindex=list.length;
}

return clickpages(list,startindex,endindex);
}

laypage({
cont: $(pagelay), //容器。值支持id名、原生dom对象,jquery对象,
pages: pages, //总页数
skip: true,
skin: ‘#3785AD‘, //加载内置皮肤,也可以直接赋值16进制颜色值,如:#c00
groups: showpages ,//连续显示分页数
jump: function(e){ //触发分页后的回调
$(tablediv).html(thisdate(e.curr));
if(pages==0){
$(record_info).html(‘共 0 条数据‘)
}else{
var record_start=(e.curr-1)*pagerecords+1;
var record_end=(e.curr<pages)?e.curr*pagerecords:list.length;
$(recordinfo).html(‘共 ‘+list.length+‘ 条数据,目前处于 ‘+record_start+‘ 到 ‘+record_end+‘ 条 ‘+e.curr+‘/‘+e.pages+‘页‘);
}
}
});
}

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

数据是从前台页面发起请求的,我的项目用到的是ajax异步请求

//查询方法
function serchCustAddr(){
$("#custDivTbody").html("");//把内容体清空
layer.load(2);

$.ajax({
type:"POST",
url :"findCustAddrAjax",
datatype:"json",
data:{
‘custAddrSerchBean.recUser‘:$("#recUser").val(),
‘custAddrSerchBean.sendAddr‘:$("#sendAddr").val(),
‘custAddrSerchBean.addr‘:$("#addr").val()
},
success:function(data){
var list = eval(data);
var newDate = new Date();

//异步返回的结果进行分页显示
page({
list : list,
pagerecords : 17,
showpages : 4,
pagelay : ‘#page_lay‘,
tablediv : ‘#custDivTbody‘,
recordinfo : ‘#record_info‘,
clickpages : function(list, startindex,
endindex) {

var htmlData = "";
for (var i = startindex; i < endindex; i++) {
newDate.setTime(list[i].lastUpdTime.time);
htmlData +=‘<tr>‘;
htmlData +=" <td><input type=‘checkbox‘ class=‘chksize‘ name=‘chkBox‘ id=‘"+list[i].recordId+"‘ value=‘"+list[i].recordId+"‘></td>";
htmlData +=‘ <td>‘+(i+1)+‘</td>‘;
htmlData +=‘ <td>‘+list[i].sendAddr+‘</td>‘;
htmlData +=‘ <td>‘+list[i].recUser+‘</td>‘;
htmlData +=‘ <td>‘+list[i].sendTel+‘</td>‘;
htmlData +=‘ <td>‘+list[i].custZip+‘</td>‘;
htmlData +=‘ <td>‘+list[i].regiId+‘</td>‘;
htmlData +=‘ <td>‘+list[i].deleteDate+‘</td>‘;
htmlData +=‘ <td>‘+newDate.format(‘yyyy-MM-dd hh:mm:ss‘)+‘</td>‘;
htmlData +=‘ <td><a href="javascript:void(0)" class="tablelink" onclick=addOrChuangAddr("‘+ list[i].recordId+ ‘")>修改</a></td>‘;
htmlData +=‘</tr>‘;
}
return htmlData;
}
});
},
error : function(XMLHttpRequest, textStatus,
errorThrown) {
alert("服务器连接失败,请重新尝试!");
}
});
layer.closeAll(‘loading‘);

}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

前台发起请求后,stutas2就开始工作了,以下是stutas2的一个配置文件,根据这个配置文件可以找到对应action中的方法

<package name="cust" extends="struts-default">
<action name="findCustAddrAjax" method="findCustAddr" class="com.pec.action.CustAction"></action>
</package>

因为是采用异步请求,所以没有result

----------------------------------------------------------------------------------------------------------------------------------------------

根据这个配置就能action层

public class CustAction extends BaseAction{

public void findCustAddr() throws IOException, ServiceException{
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
try {
if(CollectionUtils.isNullOrEmpty(custAddrSerchBean)){
custAddrSerchBean=new CustAddrSerchBean ();
}
list= custService.findCustAddr(custAddrSerchBean,user.getUserId());//userId获取比较多代码,就不列出来
JSONArray array=JSONArray.fromObject(list);//用json数组把数据封装起来
out.println(array.toString());//然后发送到前台去
out.flush();
out.close();

}catch (ServiceException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

然后到了service层

/**
* 查询客户地址
*/
@Override
public List<DrmCustAddrBeanList> findCustAddr(
CustAddrSerchBean custAddrSerchBean,String userId) throws ServiceException {
return drmCustAddrDao.findCustAddr(custAddrSerchBean,userId);
}

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

最后是dao层

@Repository("drmCustAddrDao")
public class DrmCustAddrDaoImp extends
BaseHibernateDAO<DrmCustAddr, Serializable> implements IDrmCustAddrDao {

//创建一个session工厂

@Autowired
public void setMySessionFactory(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}

/*
* 查找出客户地址
*/
@SuppressWarnings("unchecked")
@Override
public List<DrmCustAddrBeanList> findCustAddr(
CustAddrSerchBean custAddrSerchBean, String userId)
throws ServiceException {
StringBuffer sb = new StringBuffer();

sb.append("sql语句");

SQLQuery q = this.getSession().createSQLQuery(sb.toString());
List<DrmCustAddrBeanList> beanList = null;
try {

q.setResultTransformer(new BeanTransFormatUtil(
DrmCustAddrBeanList.class));

beanList = q.list();

} catch (Exception e) {
e.printStackTrace();
}
return beanList;
}

}

最后得到数据后原路返回

以上是关于ssh数据流代码的主要内容,如果未能解决你的问题,请参考以下文章

使用 Java 通过 SSH 连接到远程 MySQL 数据库

SSH如何连接MYSQL数据库

ssh免密码,git拉取和上传代码,时间同步

SSH 隧道远程访问 MySQL 数据库

未添加来自元数据的 Google Cloud Compute 实例 SSH 密钥

无法通过 python 中的 ssh 隧道连接到远程数据库