bootstap后台管理增删改

说明:后台管理的增删改很常用,采用bootstrap方便快捷,本文主要用了ajax和bootstrap结合来处理数据交互

1.前端jsp:

<!DOCTYPE html>
<jsp:directive.page language="java"
	contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" />


<%@ taglib prefix="ur" uri="ur-tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

<!--  document type -->
<c:import url="/inc/doctype-frag.jsp" />

<fmt:setBundle basename="messages" />
<html>
<head>
<title>爬虫网址配置管理</title>

<!-- Medatadata fragment for page cache -->
<c:import url="/inc/meta-frag.jsp" />

<c:import url="/inc/css-frag.jsp" />

<ur:styleSheet href="page-resources/css/main_menu.css" />
<ur:styleSheet href="page-resources/css/global.css" />
<ur:styleSheet href="page-resources/css/tables.css" />
<ur:styleSheet href="page-resources/css/blue_theme.css" />
<ur:styleSheet href="page-resources/bootstrap-table/bootstrap-table.css" />
<ur:styleSheet
	href="page-resources/bootstrap-table/bootstrap-editable.css" />
<c:import url="/inc/js-frag.jsp" />

<!-- Source File -->
<ur:js src="page-resources/js/menu/main_menu.js" />
<ur:js src="pages/js/base_path.js" />
<ur:js src="page-resources/bootstrap-table/bootstrap-table.js" />
<ur:js src="page-resources/bootstrap-table/bootstrap-table-export.js" />
<ur:js src="page-resources/extends/tableExport/jquery.base64.js" />
<ur:js src="page-resources/extends/tableExport/tableExport.js" />
<ur:js src="page-resources/bootstrap-table/bootstrap-table-field-search.js" />
<ur:js src="page-resources/bootstrap-table/bootstrap-editable.js" />
<ur:js src="page-resources/bootstrap-table/bootstrap-table-editable.js" />
<ur:js src="page-resources/js/crawlerconfigure/crawlerconfigure.js" />
<ur:js src="page-resources/js/util/automatic-bootstrap-table.js"/>

</head>

<body>
	<c:import url="/inc/header.jsp" />
	<div class="container">
		<!-- <div id="workspace-tabs" class="yui-navset">
			<ul class="nav nav-tabs">
				<li class="active"><a href="#manageCrawlerConfigure" data-toggle="tab"><em>模板管理</em></a></li>
				<li><a href="#manageMetadata" data-toggle="tab"><em>元数据管理</em></a></li>
				<li class="active"><a href="#manageOrganization" data-toggle="tab"><em>机构管理</em></a></li>
			</ul>
		</div> -->
		<!-- 加载初始化数据 -->
		<div class="tab-content">
			<div id="manageCrawlerConfigure" class="tab-pane fade in active" style="padding-bottom: 50px;">
				<div class="text-right" style="padding-right:20px;margin-top: 10px;">
		           <a href="#" class="btn btn-system-function-tem"οnclick="crawlerConfigureDef()"><img src="${pageContext.request.contextPath}/page-resources/images/all-images/mobanguanli01.png"/>新增</a>
		        </div>
				<table id="crawlerConfigureTable" data-toggle="table"
					data-show-columns="false" data-search="false"
					data-show-refresh="false" data-show-toggle="false"
					data-card-view="false" data-pagination="true" data-page-size="5"
					data-url="viewCrawlerConfigure.action">
				</table>
		   </div>
	 </div>		
	</div>
	
	

    <!-- 弹出新建或者修改的div对话框  star -->
	<div class="modal fade" id="crawlerConfigure_div">
		<div class="modal-dialog">
			<div class="modal-content">
				<div class="modal-header">
					<button type="button" class="close" οnclick="cancel('crawlerConfigure');">
						<span aria-hidden="true">×</span><span class="sr-only">Close</span>
					</button>
					<h4 class="modal-title">爬虫网址配置信息</h4>
				</div>
				<div class="modal-body form-horizontal">
					<input type="hidden" id="configureId" />
				
					<div class="form-group">
						<label for="configureUrl"
							class="col-xs-3 col-sm-3 col-md-3 col-lg-3 control-label"><font
							color="red">*</font>网址:</label>
						<div class="col-sm-8 col-md-8 col-lg-8">
							<input class="form-control input-sm" type="text"
								id="configureUrl"   />
						</div>
					</div>
					
					
					<div class="form-group">
						<label for="configureCharset"
							class="col-xs-3 col-sm-3 col-md-3 col-lg-3 control-label"><font
							color="red">*</font>编码方式:</label>
						<div class="col-sm-8 col-md-8 col-lg-8">
							<input class="form-control input-sm" type="text"
								id="configureCharset"   />
						</div>
					</div>
					
					
					<div class="form-group">
						<label for="configureMc"
							class="col-xs-3 col-sm-3 col-md-3 col-lg-3 control-label"><font
							color="red">*</font>网址名称:</label>
						<div class="col-sm-8 col-md-8 col-lg-8">
							<input class="form-control input-sm" type="text"
								id="configureMc"   />
						</div>
					</div>
					
                     <div class="form-group">
						<label for="configureNeedKeyword"
							class="col-xs-3 col-sm-3 col-md-3 col-lg-3 control-label"><font
							color="red">*</font>是否需要关键词:</label>
						<div class="col-sm-8 col-md-8 col-lg-8" id="configureNeedKeyword">
						  <input name="configureNeedKeyword" type="radio" checked="checked" name="1" value="需要"/>需要
						  <input name="configureNeedKeyword" type="radio"  name="1" value="不需要"/>不需要
						</div>
						
						
					</div>
                     <div class="form-group">
						<label for="configureMatchReg"
							class="col-xs-3 col-sm-3 col-md-3 col-lg-3 control-label"><font
							color="red">*</font>爬取网址规则:</label>
						<div class="col-sm-8 col-md-8 col-lg-8">
							<input class="form-control input-sm" type="text"
								id="configureMatchReg"   />
						</div>
					</div>
                     <div class="form-group">
						<label for="configureUnmatchReg"
							class="col-xs-3 col-sm-3 col-md-3 col-lg-3 control-label"><font
							color="red">*</font>不匹配爬取网址规则:</label>
						<div class="col-sm-8 col-md-8 col-lg-8">
							<input class="form-control input-sm" type="text"
								id="configureUnmatchReg"   />
						</div>
					</div>
                    
				 <!-- 其他参数,形式是para1=value1,para2=value2 -->
                     <div class="form-group">
						<label for="configureParaKeyword"
							class="col-xs-3 col-sm-3 col-md-3 col-lg-3 control-label"><font
							color="red">*</font>关键词参数(逗号隔开):</label>
						<div class="col-sm-8 col-md-8 col-lg-8">
							<input class="form-control input-sm" type="text"
								id="configureParaKeyword"   />
						</div>
					</div>
	
	          
					
					<div class="form-group">
						<label for="c"
							class="col-xs-3 col-sm-3 col-md-3 col-lg-3 control-label"><font
							color="red">*</font>其他参数:</label>
						<div class="col-sm-8 col-md-8 col-lg-8">
							<input class="form-control input-sm" type="text"
								id="configureParaOther"   />
						</div>
					</div>
					
					      <div class="form-group">
						<label for="collectionId"
							class="col-xs-3 col-sm-3 col-md-3 col-lg-3 control-label"><font
							color="red">*</font>专题:</label>
						<div class="col-sm-8 col-md-8 col-lg-8">
							<select id="collectionId"><option>请选择</option></select>
						</div>
					</div>
				</div>
				<div class="modal-footer">
					<button type="button" class="btn btn-primary" id="addOrUpdate"
						οnclick="saveCrawlerConfigure();">确定</button>
					<button type="button" class="btn btn-default" id="cancel"
						οnclick="cancel();">取消</button>
				</div>
			</div>
		</div>
	</div>
	  <!-- 弹出新建或者修改的div对话框    end  -->

	<div class="modal fade" id="loading" data-keyboard="false"
		data-backdrop="static" οncοntextmenu="return false"
		onselectstart="return false">
		<div class="modal-dialog">
			<c:import url="/inc/loading.jsp" />
		</div>
	</div>
</body>
</html>


2.js代码:

//定义全局变量
var $crawlerConfigureTable;
//最开始加载界面时,该js代码就会被执行
$(function() {
	//table的标题栏 
	var crawlerConfigureColumns = [  {
		field : "configureId",
		title : "编号",
		width : "1%",
		sortable : "true"
	},  {
		field : "configureUrl",
		title : "网址",
		align : "left",
		valign : "middle",
		sortable : "true",
		width : "2%"
	}, {
		field : "configureMc",
		title : "网址名",
		align : "center",
		valign : "middle",
		width : "5%"
	}, {
		field : "collectionName",
		title : "专题",
		align : "center",
		valign : "middle",
		width : "5%"
	}, {
		field : 'operate',
		title : '操作',
		align : 'center',
		width : "3%",
		formatter : operateFormatter
	}
	];

	//				'<a href="#" class="btn btn-modelManageOne" style="background:#f8f8f8;color:black;" οnclick="editMetadatas(' + row.ID + ')"><span class="glyphicon glyphicon-edit" style="color: rgb(131, 183, 187);" ></span> 查看</a>',
	//最右边操作栏的格式化
	function operateFormatter(value, row, index) {
		// bootsrtap会将每一行的数据值,放在row中
		// console.log("value:"+value);
		// console.log("row:"+row);
		// console.log("index:"+index);
		
		return [
				'<a href="#" class="btn btn-modelManageOne" style="background:#f8f8f8;color:black;" οnclick="editCrawlerConfigure(' + row.configureId + ')"><span class="glyphicon glyphicon-edit" style="color: rgb(131, 183, 187);" ></span> 编辑</a>',
				'<a href="#" class="btn btn-modelManageOne" style="background:#f8f8f8;color:black;" οnclick="deleteCrawlerConfigure(' + row.configureId + ')"><span class="glyphicon glyphicon-trash" style="color: rgb(131, 183, 187);" ></span> 删除</a>'
				].join('');
	}
	//页面加载时,bootstrap会首先执行这行代码
	$crawlerConfigureTable=$('#crawlerConfigureTable').bootstrapTable('destroy').bootstrapTable({
			columns : crawlerConfigureColumns,
			pageList : [10,30,50, 100, 200, 500, 1000 ],
			uniqueId: "configureId",//设置唯一值,可以用bootstrapTable('getRowByUniqueId', id);取出该行的数据
			showFieldSearch:false,
			firstLoadPic: true
		});
});

//获取系统中所有的专题
function getAllCollection(){
	//1.$.ajax带json数据的异步请求
	var aj = $.ajax( {  
	    url:'getAllCollectionCrawlerConfigure.action',// 跳转到 action  
	    type:'post',  
	    dataType:'json',  
	    success:function(data) {  
	        console.log("专题的json数据:"+data.data);
	        setSelectValue(data);
	     },  
	     error : function() {  
	          alert("异常!");  
	     }  
	});
}
//为专题下拉选择框设置值
function setSelectValue(data){
  var collection =  $("#collectionId");
    //删除结点
     removeOption();
    //转成json格式
     var result = eval(data.data);
     //添加默认结点
     collection.append("<option value='-1'>--请选择--</option>");
     // 循环遍历 下拉框绑定
     $(result).each(function (key) {
     var opt = $("<option></option>").text(result[key].collectionName).val(result[key].collectionId);
     collection.append(opt);
     });
}
//清空下拉选择框
function removeOption() {
	$("#collectionId option").remove();
}

//编辑爬虫网址配置
function editCrawlerConfigure(id){
			
	var row=$crawlerConfigureTable.bootstrapTable('getRowByUniqueId', id);
	//填充数据
	var configureId = row.configureId;
	//根据id查询出数据,然后后台存到值栈中,界面上用EL表达式取出来
	//1.$.ajax带json数据的异步请求
	var aj = $.ajax( {  
	    url:'getConfigureByIdCrawlerConfigure.action',// 跳转到 action  
	    data:{  configureId:configureId },  
	    type:'post',  
	    dataType:'json',  
	    success:function(data) {
	    	console.log("editCrawlerConfigure:"+data);
	    	$("#configureId").val(data.configureId);
	    	$("#configureUrl").val(data.configureUrl);
	    	$("#configureCharset").val(data.configureCharset);
	    	$("#configureMc").val(data.configureMc);
	    	$("#configureMatchReg").val(data.configureMatchReg);
	    	$("#configureUnmatchReg").val(data.configureUnmatchReg);
	    	$("#configureParaKeyword").val(data.configureParaKeyword);
	    	$("#configureParaOther").val(data.configureParaOther);
	    	$("#collectionId").val(data.collectionId);
	     },  
	     error : function() {  
	     }  
	});
	crawlerConfigureDef();
}

//弹出新建爬虫网址配置的div对话框
function crawlerConfigureDef(){
	//初始化专题数据
	getAllCollection();
	$("#crawlerConfigure_div").modal("show");
}



//保存修改或者新建的爬虫网址配置信息
function saveCrawlerConfigure(){
	//确定按钮不可用用
	 jQuery("#addOrUpdate").attr('disabled',true);
	 var configureNeedKeyword = null;

	 //获取单选框中选中的值
	 var obj = document.getElementsByName("configureNeedKeyword");
	    for(var i=0; i<obj.length; i ++){
		// alert(obj[i].value);
	       if("需要"==obj[i].value){
		       configureNeedKeyword = 1;
	       }else{//不需要
	    	   configureNeedKeyword = 0;
	    	   
	       }
	    }
	//验证参数
	var configureId = jQuery("#configureId").val();
	var configureUrl = jQuery("#configureUrl").val();
	var configureCharset = jQuery("#configureCharset").val();
	var configureMc = jQuery("#configureMc").val();
	var configureMatchReg = jQuery("#configureMatchReg").val();
	var configureUnmatchReg = jQuery("#configureUnmatchReg").val();
	var configureParaKeyword = jQuery("#configureParaKeyword").val();
	var configureParaOther = jQuery("#configureParaOther").val();
	var collectionId = jQuery("#collectionId").val();
	var oper_type = "";
	
	if(configureUrl==""){
		sweetAlert("", "网址不能为空!", "warning");
		document.getElementById("configureUrl").focus();
		jQuery("#addOrUpdate").attr('disabled',false);
		return  false;
	}
	if(configureCharset=="" || configureCharset.trim().length>10){
		sweetAlert("", "编码方式不能为空", "warning");
		document.getElementById("configureCharset").focus();
		jQuery("#addOrUpdate").attr('disabled',false);
		return  false;
	}
	
	if(collectionId=="" || collectionId==-1){
		sweetAlert("", "请选择专题", "warning");
		document.getElementById("collectionId").focus();
		jQuery("#addOrUpdate").attr('disabled',false);
		return  false;
	}
	
	//添加
	if(configureId.trim()==""){
		oper_type = "add";
	}else{
		//修改
		oper_type = "update";
	}
	jQuery.ajax({
		url:"saveCrawlerConfigure.action",
		data:{
			configureId:configureId,
			configureUrl:configureUrl,
			configureCharset:configureCharset,
			configureMc:configureMc,
			configureNeedKeyword:configureNeedKeyword,
			configureMatchReg:configureMatchReg,
			configureUnmatchReg:configureUnmatchReg,
			configureParaKeyword:configureParaKeyword,
			configureParaOther:configureParaOther,
			collectionId:collectionId,
			type:oper_type
		},
		type:'POST',
		success:function(data){
			if(data=="SUCCESS"){
				sweetAlert("", "保存成功!", "success");
				$("#addOrUpdate").attr('disabled',false);
				cancel();
				$crawlerConfigureTable.bootstrapTable('refresh');
			}else if(data=="accessDenied"){
				//登陆超时
				window.location.href = basePath+"home.action";
			}else{
				sweetAlert("", data, "error");
				$("#addOrUpdate").attr('disabled',false);
			}
		},
		error:function(){
			sweetAlert("", "保存失败!", "error");
			 $("#addOrUpdate").attr('disabled',false);
			 cancel();
		}
	});
}

//删除一行数据
function deleteCrawlerConfigure(id){
	var row=$crawlerConfigureTable.bootstrapTable('getRowByUniqueId', id);
	var configureId = row.configureId;
	var configureMc = row.configureMc;
	//提示框,自定义的需要引入文件<script src="dist/sweetalert.min.js"></script>
    swal({
		title : "",
		text : "删除【"+configureMc+"】?",
		type : "warning",
		showCancelButton : true,
		cancelButtonText : "取消",
		confirmButtonColor : "#DD6B55",
		confirmButtonText : "删除",
		closeOnConfirm : false
	}, function() {
		jQuery.ajax({
    		url:"deleteCrawlerConfigure.action",
    		data:{configureId:configureId},
    		type:'POST',
    		success:function(data){
    			if(data=="SUCCESS"){
    				sweetAlert("", "删除成功!", "success");    				
    			}else{
    				sweetAlert("", data, "error");
    			}
    			$crawlerConfigureTable.bootstrapTable('refresh');
    		},
    		error:function(){
    			sweetAlert("", "删除失败!", "error");
    		}
    	});
	});
}

//新建或者修改的取消按钮
function cancel(type){
		$("#crawlerConfigure_div").modal("hide");
	    clear(type);
}

//清空数据值 
function clear(type){
		jQuery("#crawlerConfigureId").val("");
		jQuery("#crawlerConfigureUrl").val("");
        jQuery("#configureMc").val("");
	    jQuery("#collectionName").val("");	
}


3.后台action:

/**  
 * @类功能说明:    
 * @作者: 一叶扁舟 (skiff)
 * @创建时间:2017年3月8日 上午10:53:38  
 * @版本:V1.0  
 */
public class CrawlerConfigureAction extends ActionSupport implements
		UserIdAware {
	private static final Logger log = Logger.getLogger(CrawlerConfigureAction.class);
	private UserService userService;
	private int pageSize = 5;//分页-每页数
	private int curPage = 1;//当前页码
	private Long userId;//当前操作用户ID
	private ICrawlerConfigureService crawlerConfigureService;
	private InstitutionalCollectionService   InstitutionalCollectionService; 
	
	
	/**  
	 * 方法功能说明:    进入爬虫网址配置管理
	 * @参数: @return
	 * @参数: @throws Exception      
	 * @return String     
	 * @throws  
	 */ 
	public String enter() throws Exception {
		// 验证用户是否管理员
		IrUser user = userService.getUser(userId, false);
		if (!user.hasRole(IrRole.ADMIN_ROLE)) {
			return "accessDenied";
		}
		return SUCCESS;
	}
	
	/**  
	 * 方法功能说明:    
	 * @参数:       
	 * @return void     
	 * @throws  
	 */ 
	public void view() {
		/*
		 * curPage 1 pageSize 5->startRow 0
		 * 
		 * curPage 1 pageSize 5->startRow 5
		 */
		int startRow = (curPage - 1) * pageSize;
		Object rowCount;
		List<CrawlerConfigure> configures;
		//总记录数
		rowCount = crawlerConfigureService.getCount();
		//分页的查询数据
		configures = crawlerConfigureService.getCrawlerConfigures(startRow, pageSize);		
		HttpServletResponse response = ServletActionContext.getResponse();

		response.setCharacterEncoding("utf-8");

		String retStr = "";
		if (configures != null && configures.size() > 0) {
			retStr = "{\"success\": true, \"totalRows\": " + rowCount
					+ ", \"curPage\": " + curPage + ", \"data\": "
					+ AjaxUtils.getStrFromCrawlerConfigureList(configures) + "}";

		} else {
			retStr = "{\"success\": true, \"totalRows\": 0, \"curPage\": 1, \"data\": []}";

		}
		AjaxUtils.ajaxReturn(retStr, response);
	}
	
	/**  
	 * 方法功能说明:    获取所有的专题(即信息题材),并转成json格式
	 * @参数:       
	 * @return void     
	 * @throws  
	 */ 
	public void getAllCollection(){
		List<InstitutionalCollection> institutionalCollections= InstitutionalCollectionService.getAll();
		HttpServletResponse response = ServletActionContext.getResponse();

		response.setCharacterEncoding("utf-8");

		String retStr = "";
		if (institutionalCollections != null && institutionalCollections.size() > 0) {
			retStr = "{\"success\": true, \"totalRows\": " + institutionalCollections.size()
					+ ", \"curPage\": " + 1 + ", \"data\": "
					+ AjaxUtils.getStrFrominstItutionalCollectionList(institutionalCollections) + "}";

		} else {
			retStr = "{\"success\": true, \"totalRows\": 0, \"curPage\": 1, \"data\": []}";

		}
		AjaxUtils.ajaxReturn(retStr, response);
	}
	/**  
	 * 方法功能说明:    新建或者修改时保存
	 * @参数:       
	 * @return void     
	 * @throws  
	 */ 
	public void save(){
		HttpServletRequest request = ServletActionContext.getRequest();
		HttpServletResponse response = ServletActionContext.getResponse();
		try{
			//登陆超时
			IrUser user = userService.getUser(userId, false);
			if (user==null||!user.hasRole(IrRole.ADMIN_ROLE)) {
				AjaxUtils.ajaxReturn("accessDenied", response);
				return;
			}
			
			String configureId   = request.getParameter("configureId");
			String configureUrl  = request.getParameter("configureUrl");
			String configureCharset = request.getParameter("configureCharset");
			String configureMc = request.getParameter("configureMc");
			String configureNeedKeyword = request.getParameter("configureNeedKeyword");
			String configureMatchReg = request.getParameter("configureMatchReg");
			String configureUnmatchReg = request.getParameter("configureUnmatchReg");
			String configureParaKeyword = request.getParameter("configureParaKeyword");
			String configureParaOther = request.getParameter("configureParaOther");
			String collectionId = request.getParameter("collectionId");
			String type = request.getParameter("type");
			
			if(type==null||"".equals(type)){
				AjaxUtils.ajaxReturn("保存失败!原因:【type为空】", response);
				log.debug("保存失败【type为空】");
				return;
			}
			if(type.equals("update")&&(configureId==null||"".equals(type))){
				AjaxUtils.ajaxReturn("保存失败!原因:【更新记录时ID为空】", response);
				log.debug("保存失败【更新记录时ID为空】");
				return;
			}
			

			CrawlerConfigure crawlerConfigure = new CrawlerConfigure();
			//新建
			if("add".equals(type)){
	
				Timestamp time = new java.sql.Timestamp((new java.util.Date()).getTime());
				crawlerConfigure.setCreateTime(time);
				crawlerConfigure.setModifyTime(time);
			}
			//修改
			if("update".equals(type)){
				crawlerConfigure.setConfigureId(Long.parseLong(configureId));
				Timestamp time = new java.sql.Timestamp((new java.util.Date()).getTime());
				crawlerConfigure.setModifyTime(time);
			}
			
			
			crawlerConfigure.setConfigureCharset(configureCharset);
			crawlerConfigure.setConfigureMatchReg(configureMatchReg);
			crawlerConfigure.setConfigureMc(configureMc);
			crawlerConfigure.setConfigureNeedKeyword(Integer.parseInt(configureNeedKeyword));
			crawlerConfigure.setConfigureParaOther(configureParaOther);
			crawlerConfigure.setConfigureParaKeyword(configureParaKeyword);
			crawlerConfigure.setConfigureUnmatchReg(configureUnmatchReg);
			crawlerConfigure.setConfigureUrl(configureUrl);

			InstitutionalCollection	institutionalCollection = null;
			institutionalCollection  = InstitutionalCollectionService.getCollection(Long.parseLong(collectionId), false);
			crawlerConfigure.setInstitutionalCollection(institutionalCollection);
			
			//保存到数据库中
			crawlerConfigureService.makePersistent(crawlerConfigure);
			
			AjaxUtils.ajaxReturn("SUCCESS", response);
		}catch(DataAccessException e){
			AjaxUtils.ajaxReturn("保存失败!原因:【系统抛出异常】", response);
			log.error("保存失败!未知错误:"+e.getMessage());
		}catch(Exception e2){
			AjaxUtils.ajaxReturn("保存失败!原因:【系统抛出异常】", response);
			log.error("保存失败!未知错误:"+e2.getMessage());
		}
		
		
	}
	
	
       /**  
     * 方法功能说明:    根据id获取CrawlerConfigure,用来回显数据
     * @参数:       
     * @return void     
     * @throws  
     */ 
    public void 	getConfigureById(){
    	   HttpServletRequest request = ServletActionContext.getRequest();
   		  HttpServletResponse response = ServletActionContext.getResponse();
   			//登陆超时
   			IrUser user = userService.getUser(userId, false);
   			if (user==null||!user.hasRole(IrRole.ADMIN_ROLE)) {
   				AjaxUtils.ajaxReturn("accessDenied", response);
   				return;
   			}
   			String configureId   = request.getParameter("configureId");
   			CrawlerConfigure crawlerConfigure =crawlerConfigureService.getById(Long.parseLong(configureId), false);
   			response.setCharacterEncoding("utf-8");

   			String retStr = "";
   			if (crawlerConfigure != null ) {
   				retStr = "{"+ AjaxUtils.getStrFromCrawlerConfigure(crawlerConfigure) + "}";

   			} 
   			AjaxUtils.ajaxReturn(retStr, response);
   			
    }
	
	/**  
	 * 方法功能说明:    根据id删除一个crawlerConfigure
	 * @参数:       
	 * @return void     
	 * @throws  
	 */ 
	public void delete(){

		HttpServletRequest request = ServletActionContext.getRequest();
		HttpServletResponse response = ServletActionContext.getResponse();
		try{
			String id = request.getParameter("configureId");
			
			if(id==null||"".equals(id)){
				AjaxUtils.ajaxReturn("操作失败!【参数ID不能为空】", response);
				return;
			}
			
			CrawlerConfigure crawlerConfigure = crawlerConfigureService.getById(Long.parseLong(id), false);
			crawlerConfigureService.makeTransient(crawlerConfigure);			
				AjaxUtils.ajaxReturn("SUCCESS", response);
		}catch(Exception e){
			log.error("系统抛出异常!"+e.getMessage());
			AjaxUtils.ajaxReturn("操作失败!【系统抛出异常】", response);
		}
		
		
		
	
	}

	/**
	 * @return the pageSize
	 */
	public int getPageSize() {
		return pageSize;
	}

	/**
	 * @param pageSize the pageSize to set
	 */
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	/**
	 * @return the curPage
	 */
	public int getCurPage() {
		return curPage;
	}

	/**
	 * @param curPage the curPage to set
	 */
	public void setCurPage(int curPage) {
		this.curPage = curPage;
	}

	/**
	 * @return the crawlerConfigureService
	 */
	public ICrawlerConfigureService getCrawlerConfigureService() {
		return crawlerConfigureService;
	}

	/**
	 * @param crawlerConfigureService the crawlerConfigureService to set
	 */
	public void setCrawlerConfigureService(
			ICrawlerConfigureService crawlerConfigureService) {
		this.crawlerConfigureService = crawlerConfigureService;
	}
	
	public Long getUserId() {
		return userId;
	}

	public void setUserId(Long userId) {
		this.userId = userId;
	}

	/**
	 * @return the userService
	 */
	public UserService getUserService() {
		return userService;
	}

	/**
	 * @param userService the userService to set
	 */
	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	/**
	 * @return the institutionalCollectionService
	 */
	public InstitutionalCollectionService getInstitutionalCollectionService() {
		return InstitutionalCollectionService;
	}

	/**
	 * @param institutionalCollectionService the institutionalCollectionService to set
	 */
	public void setInstitutionalCollectionService(
			InstitutionalCollectionService institutionalCollectionService) {
		InstitutionalCollectionService = institutionalCollectionService;
	}
	

}


4.ajax封装的json数据格式:

public class AjaxUtils {
	private static final Logger log = Logger.getLogger(AjaxUtils.class);

	/**
	 * 
	 * @param msg
	 * @param response
	 */
	public static void ajaxReturn(String msg, HttpServletResponse response) {
		try {
			response.setCharacterEncoding("utf-8");
			PrintWriter writer = response.getWriter();
			writer.print(msg);
			writer.flush();
			writer.close();
		} catch (Exception e) {
			log.debug("ajax return faild");
			log.debug("exception message:" + e.getMessage());
			e.printStackTrace();
		}

	}

	/**  
	 * 方法功能说明:    组装机构信息的json格式数据
	 * @参数: @param list
	 * @参数: @return      
	 * @return String  
	 * @author 一叶扁舟(skiff)   
	 * @throws  
	 */ 
	public static String getStrFromOrganizationList(List<Organization> list) {
		StringBuffer jsonStr = new StringBuffer("[");
		for (Organization organization : list) {
			jsonStr.append("{");
           //"ID":"1",
			jsonStr.append("\"ID\"");
			jsonStr.append(":");
			jsonStr.append("\"" + organization.getOrganizationId() + "\",");

			jsonStr.append("\"NAME\"");
			jsonStr.append(":");
			jsonStr.append("\"" + organization.getOrganizationName().trim() + "\",");
	
			jsonStr.append("\"URL\"");
			jsonStr.append(":");
			jsonStr.append("\"" + organization.getOrganizationUrl().trim() + "\"");

		

			jsonStr.append("},");
		}
		return jsonStr.substring(0, jsonStr.length() - 1) + "]";
	}


	/**  
	 * 方法功能说明:    爬虫网站的配置展示的主界面
	 * @参数: @param configures
	 * @参数: @return      
	 * @return String     
	 * @throws  
	 */ 
	public static String getStrFromCrawlerConfigureList(
			List<CrawlerConfigure> configures) {
		StringBuffer jsonStr = new StringBuffer("[");

		for (CrawlerConfigure e : configures) {
			jsonStr.append("{");

			jsonStr.append("\"configureId\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getConfigureId() + "\",");
			if (e.getConfigureUrl() == null) {
				jsonStr.append("\"configureUrl\"");
				jsonStr.append(":");
				jsonStr.append("\"\",");
			} else {
				jsonStr.append("\"configureUrl\"");
				jsonStr.append(":");
				jsonStr.append("\"" + e.getConfigureUrl() + "\",");
			}

			if (e.getConfigureMc() == null) {
				jsonStr.append("\"configureMc\"");
				jsonStr.append(":");
				jsonStr.append("\"\",");
			} else {
				jsonStr.append("\"configureMc\"");
				jsonStr.append(":");
				jsonStr.append("\"" + e.getConfigureMc() + "\",");
			}
			
	
				jsonStr.append("\"collectionName\"");
				jsonStr.append(":");
				jsonStr.append("\"" + e.getInstitutionalCollection().getName() + "\"");
			
			jsonStr.append("},");
		}
		return jsonStr.substring(0, jsonStr.length() - 1) + "]";
	}

	/**  
	 * 方法功能说明:    
	 * @参数: @param institutionalCollections
	 * @参数: @return      
	 * @return String     
	 * @throws  
	 */ 
	public static String getStrFrominstItutionalCollectionList(
			List<InstitutionalCollection> institutionalCollections) {
		StringBuffer jsonStr = new StringBuffer("[");
		for (InstitutionalCollection e : institutionalCollections) {
			jsonStr.append("{");

			//专题的id
			jsonStr.append("\"collectionId\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getId() + "\",");
			

			//专题的名
			jsonStr.append("\"collectionName\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getName() + "\"");
			
			jsonStr.append("},");
		}
		
		
		return jsonStr.substring(0, jsonStr.length() - 1) + "]";
	}

	/**  
	 * 方法功能说明: 将单个的crawlerConfigure封装成json格式
	 * @参数: @param crawlerConfigure
	 * @参数: @return      
	 * @return String     
	 * @throws  
	 */ 
	public static String getStrFromCrawlerConfigure(
			CrawlerConfigure e) {
		StringBuffer jsonStr = new StringBuffer("");
		
		jsonStr.append("\"configureId\"");
		jsonStr.append(":");
		jsonStr.append("\"" + e.getConfigureId() + "\",");
		if (e.getConfigureUrl() == null) {
			jsonStr.append("\"configureUrl\"");
			jsonStr.append(":");
			jsonStr.append("\"\",");
		} else {
			jsonStr.append("\"configureUrl\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getConfigureUrl() + "\",");
		}

		if (e.getConfigureMc() == null) {
			jsonStr.append("\"configureMc\"");
			jsonStr.append(":");
			jsonStr.append("\"\",");
		} else {
			jsonStr.append("\"configureMc\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getConfigureMc() + "\",");
		}
		
		if (e.getConfigureCharset() == null) {
			jsonStr.append("\"configureCharset\"");
			jsonStr.append(":");
			jsonStr.append("\"\",");
		} else {
			jsonStr.append("\"configureCharset\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getConfigureCharset() + "\",");
		}
		if (e.getConfigureMatchReg() == null) {
			jsonStr.append("\"configureMatchReg\"");
			jsonStr.append(":");
			jsonStr.append("\"\",");
		} else {
			jsonStr.append("\"configureMatchReg\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getConfigureMatchReg() + "\",");
		}
	

			jsonStr.append("\"configureNeedKeyword\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getConfigureNeedKeyword() + "\",");
		
			if (e.getConfigureParaKeyword() == null) {
				jsonStr.append("\"configureParaKeyword\"");
				jsonStr.append(":");
				jsonStr.append("\"\",");
			} else {
				jsonStr.append("\"configureParaKeyword\"");
				jsonStr.append(":");
				jsonStr.append("\"" + e.getConfigureParaKeyword() + "\",");
			}
			if (e.getConfigureUnmatchReg() == null) {
				jsonStr.append("\"configureUnmatchReg\"");
				jsonStr.append(":");
				jsonStr.append("\"\",");
			} else {
				jsonStr.append("\"configureUnmatchReg\"");
				jsonStr.append(":");
				jsonStr.append("\"" + e.getConfigureUnmatchReg() + "\",");
			}
			if (e.getConfigureParaOther() == null) {
				jsonStr.append("\"configureParaOther\"");
				jsonStr.append(":");
				jsonStr.append("\"\",");
			} else {
				jsonStr.append("\"configureParaOther\"");
				jsonStr.append(":");
				jsonStr.append("\"" + e.getConfigureParaOther() + "\",");
			}

			jsonStr.append("\"collectionId\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getInstitutionalCollection().getId() + "\"");
		
		
		return jsonStr.toString();
	}

	/**  
	 * 方法功能说明:    封装成json格式,提供外部接口使用
	 * @参数: @param crawlerConfigure      
	 * @return void     
	 * @throws  
	 */ 
	public static  String getStrFromCrawlerConfigureForWebservice(
			CrawlerConfigure e) {

		StringBuffer jsonStr = new StringBuffer("");
		
		jsonStr.append("\"configureId\"");
		jsonStr.append(":");
		jsonStr.append("\"" + e.getConfigureId() + "\",");
		if (e.getConfigureUrl() == null) {
			jsonStr.append("\"configureUrl\"");
			jsonStr.append(":");
			jsonStr.append("\"\",");
		} else {
			jsonStr.append("\"configureUrl\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getConfigureUrl() + "\",");
		}

		if (e.getConfigureMc() == null) {
			jsonStr.append("\"configureMc\"");
			jsonStr.append(":");
			jsonStr.append("\"\",");
		} else {
			jsonStr.append("\"configureMc\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getConfigureMc() + "\",");
		}
		
		if (e.getConfigureCharset() == null) {
			jsonStr.append("\"configureCharset\"");
			jsonStr.append(":");
			jsonStr.append("\"\",");
		} else {
			jsonStr.append("\"configureCharset\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getConfigureCharset() + "\",");
		}
		if (e.getConfigureMatchReg() == null) {
			jsonStr.append("\"configureMatchReg\"");
			jsonStr.append(":");
			jsonStr.append("\"\",");
		} else {
			jsonStr.append("\"configureMatchReg\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getConfigureMatchReg() + "\",");
		}
	

			jsonStr.append("\"configureNeedKeyword\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getConfigureNeedKeyword() + "\",");
		
			if (e.getConfigureParaKeyword() == null) {
				jsonStr.append("\"configureParaKeyword\"");
				jsonStr.append(":");
				jsonStr.append("\"\",");
			} else {
				jsonStr.append("\"configureParaKeyword\"");
				jsonStr.append(":");
				jsonStr.append("\"" + e.getConfigureParaKeyword() + "\",");
			}
			if (e.getConfigureUnmatchReg() == null) {
				jsonStr.append("\"configureUnmatchReg\"");
				jsonStr.append(":");
				jsonStr.append("\"\",");
			} else {
				jsonStr.append("\"configureUnmatchReg\"");
				jsonStr.append(":");
				jsonStr.append("\"" + e.getConfigureUnmatchReg() + "\",");
			}
			if (e.getConfigureParaOther() == null) {
				jsonStr.append("\"configureParaOther\"");
				jsonStr.append(":");
				jsonStr.append("\"\",");
			} else {
				jsonStr.append("\"configureParaOther\"");
				jsonStr.append(":");
				jsonStr.append("\"" + e.getConfigureParaOther() + "\",");
			}

			jsonStr.append("\"collectionName\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getInstitutionalCollection().getName() + "\"");
		
		
		return jsonStr.toString();
			
	}

	/**  
	 * 方法功能说明:    
	 * @参数: @param configures
	 * @参数: @return      
	 * @return String     
	 * @throws  
	 */ 
	public static String getStrFromCrawlerConfigureListForWebservice(
			List<CrawlerConfigure> configures) {

		StringBuffer jsonStr = new StringBuffer("[");

		for (CrawlerConfigure e : configures) {
			jsonStr.append("{");

			
			jsonStr.append("\"configureId\"");
			jsonStr.append(":");
			jsonStr.append("\"" + e.getConfigureId() + "\",");
			if (e.getConfigureUrl() == null) {
				jsonStr.append("\"configureUrl\"");
				jsonStr.append(":");
				jsonStr.append("\"\",");
			} else {
				jsonStr.append("\"configureUrl\"");
				jsonStr.append(":");
				jsonStr.append("\"" + e.getConfigureUrl() + "\",");
			}

			if (e.getConfigureMc() == null) {
				jsonStr.append("\"configureMc\"");
				jsonStr.append(":");
				jsonStr.append("\"\",");
			} else {
				jsonStr.append("\"configureMc\"");
				jsonStr.append(":");
				jsonStr.append("\"" + e.getConfigureMc() + "\",");
			}
			
			if (e.getConfigureCharset() == null) {
				jsonStr.append("\"configureCharset\"");
				jsonStr.append(":");
				jsonStr.append("\"\",");
			} else {
				jsonStr.append("\"configureCharset\"");
				jsonStr.append(":");
				jsonStr.append("\"" + e.getConfigureCharset() + "\",");
			}
			if (e.getConfigureMatchReg() == null) {
				jsonStr.append("\"configureMatchReg\"");
				jsonStr.append(":");
				jsonStr.append("\"\",");
			} else {
				jsonStr.append("\"configureMatchReg\"");
				jsonStr.append(":");
				jsonStr.append("\"" + e.getConfigureMatchReg() + "\",");
			}
		

				jsonStr.append("\"configureNeedKeyword\"");
				jsonStr.append(":");
				jsonStr.append("\"" + e.getConfigureNeedKeyword() + "\",");
			
				if (e.getConfigureParaKeyword() == null) {
					jsonStr.append("\"configureParaKeyword\"");
					jsonStr.append(":");
					jsonStr.append("\"\",");
				} else {
					jsonStr.append("\"configureParaKeyword\"");
					jsonStr.append(":");
					jsonStr.append("\"" + e.getConfigureParaKeyword() + "\",");
				}
				if (e.getConfigureUnmatchReg() == null) {
					jsonStr.append("\"configureUnmatchReg\"");
					jsonStr.append(":");
					jsonStr.append("\"\",");
				} else {
					jsonStr.append("\"configureUnmatchReg\"");
					jsonStr.append(":");
					jsonStr.append("\"" + e.getConfigureUnmatchReg() + "\",");
				}
				if (e.getConfigureParaOther() == null) {
					jsonStr.append("\"configureParaOther\"");
					jsonStr.append(":");
					jsonStr.append("\"\",");
				} else {
					jsonStr.append("\"configureParaOther\"");
					jsonStr.append(":");
					jsonStr.append("\"" + e.getConfigureParaOther() + "\",");
				}

				jsonStr.append("\"collectionName\"");
				jsonStr.append(":");
				jsonStr.append("\"" + e.getInstitutionalCollection().getName() + "\"");
			
			jsonStr.append("},");
		}
		return jsonStr.substring(0, jsonStr.length() - 1) + "]";
	
	}



}


5.效果图:


主界面:



编辑:


删除:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中文bootstrap后台管理是一种用于构建网站后台管理界面的工具。它基于最流行的CSS框架Bootstrap,提供了丰富的界面组件和样式,使得开发者可以方便地创建出美观、响应式的后台管理界面。 中文bootstrap后台管理具有以下特点: 1. 响应式设计:中文bootstrap后台管理可以根据不同的设备和屏幕尺寸来自动调整布局和样式,以提供更好的用户体验。无论是在PC端、平板还是手机上访问后台管理界面,都能够自适应显示。 2. 高度可定制化:中文bootstrap后台管理提供了丰富的组件和样式,开发者可以根据项目需求进行定制和调整。它支持自定义主题、颜色、布局等,使得后台管理界面可以与项目风格一致。 3. 内置UI组件:中文bootstrap后台管理提供了很多常用的UI组件,如表格、表单、按钮、图标等,开发者无需从零开始编写代码,可以直接使用这些组件来构建界面。这大大简化了开发过程,提高了开发效率。 4. 集成插件:中文bootstrap后台管理还集成了一些常用的插件和功能,如图表、日历、轮播图等,这些插件可以帮助开发者快速实现一些常见的功能需求。 总之,中文bootstrap后台管理在网站后台管理界面开发中起到了极大的作用。它提供了丰富的功能和组件,使得开发者可以快速搭建出美观、易用的后台管理界面,提高了开发效率,并提供了响应式的设计,以适应不同设备的访问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值