标签:赋值 jquer imp 需求 action res super upd 容器
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;
	}
}
最后得到数据后原路返回
标签:赋值 jquer imp 需求 action res super upd 容器
原文地址:http://www.cnblogs.com/zhanchi/p/6393037.html