From 720e78a72b3b6a74be5339ff1c9b2c2abc82567f Mon Sep 17 00:00:00 2001 From: zhangwei Date: Fri, 29 Jun 2018 15:39:11 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9log4j=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E7=9A=84=E8=AE=BE=E7=BD=AE=EF=BC=9B2=E3=80=81?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0ddos=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nis/domain/configuration/DdosIpCfg.java | 27 ++ .../nis/web/controller/BaseController.java | 3 + .../manipulation/DdosCfgController.java | 96 ++++ .../nis/web/dao/configuration/DdosCfgDao.java | 16 + .../nis/web/dao/configuration/DdosCfgDao.xml | 350 ++++++++++++++ .../service/configuration/DdosCfgService.java | 164 +++++++ src/main/resources/log4j.properties | 4 +- .../WEB-INF/views/cfg/ddosIpCfgForm.jsp | 122 +++++ .../WEB-INF/views/cfg/ddosIpCfgList.jsp | 448 ++++++++++++++++++ src/main/webapp/WEB-INF/web.xml | 14 +- 10 files changed, 1235 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/nis/domain/configuration/DdosIpCfg.java create mode 100644 src/main/java/com/nis/web/controller/configuration/manipulation/DdosCfgController.java create mode 100644 src/main/java/com/nis/web/dao/configuration/DdosCfgDao.java create mode 100644 src/main/java/com/nis/web/dao/configuration/DdosCfgDao.xml create mode 100644 src/main/java/com/nis/web/service/configuration/DdosCfgService.java create mode 100644 src/main/webapp/WEB-INF/views/cfg/ddosIpCfgForm.jsp create mode 100644 src/main/webapp/WEB-INF/views/cfg/ddosIpCfgList.jsp diff --git a/src/main/java/com/nis/domain/configuration/DdosIpCfg.java b/src/main/java/com/nis/domain/configuration/DdosIpCfg.java new file mode 100644 index 000000000..020f4b500 --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/DdosIpCfg.java @@ -0,0 +1,27 @@ +/** + *@Title: DnsIpConfig.java + *@Package com.nis.domain.restful + *@Description 欺骗IP实体类 + *@author dell + *@date 2018年2月5日 下午2:57:17 + *@version 版本号 + */ +package com.nis.domain.configuration; + + +/** + * @ClassName: DnsIpConfig.java + * @author (dell) + * @date 2018年2月5日 下午2:57:17 + * @version V1.0 + */ +public class DdosIpCfg extends BaseIpCfg { + + /** + * + */ + private static final long serialVersionUID = -5446903784736960824L; + + + +} diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index d8bdcea76..824c28fd1 100644 --- a/src/main/java/com/nis/web/controller/BaseController.java +++ b/src/main/java/com/nis/web/controller/BaseController.java @@ -61,6 +61,7 @@ import com.nis.web.service.configuration.AvContentCfgService; import com.nis.web.service.configuration.BgpCfgService; import com.nis.web.service.configuration.ComplexStringCfgService; import com.nis.web.service.configuration.ControlPolicyService; +import com.nis.web.service.configuration.DdosCfgService; import com.nis.web.service.configuration.DnsIpCfgService; import com.nis.web.service.configuration.DnsResStrategyService; import com.nis.web.service.configuration.FileTransferCfgService; @@ -162,6 +163,8 @@ public class BaseController { protected DnsResStrategyService dnsResStrategyService; @Autowired protected HttpRedirectCfgService httpRedirectCfgService; + @Autowired + protected DdosCfgService ddosCfgService; /** * 管理基础路径 */ diff --git a/src/main/java/com/nis/web/controller/configuration/manipulation/DdosCfgController.java b/src/main/java/com/nis/web/controller/configuration/manipulation/DdosCfgController.java new file mode 100644 index 000000000..350f66d16 --- /dev/null +++ b/src/main/java/com/nis/web/controller/configuration/manipulation/DdosCfgController.java @@ -0,0 +1,96 @@ +package com.nis.web.controller.configuration.manipulation; + +import java.util.Date; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.cxf.common.util.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import com.nis.domain.Page; +import com.nis.domain.basics.ServiceDictInfo; +import com.nis.domain.configuration.BaseIpCfg; +import com.nis.domain.configuration.DdosIpCfg; +import com.nis.domain.configuration.DnsResStrategy; +import com.nis.domain.configuration.DdosIpCfg; +import com.nis.domain.configuration.RequestInfo; +import com.nis.exceptions.MaatConvertException; +import com.nis.util.StringUtil; +import com.nis.web.controller.BaseController; +import com.nis.web.security.UserUtils; + +@Controller +@RequestMapping("${adminPath}/manipulation/ddos") +public class DdosCfgController extends BaseController { + + @RequestMapping(value = {"/list"}) + public String list(Model model,HttpServletRequest request,HttpServletResponse response,@ModelAttribute("cfg")DdosIpCfg entity){ + Page page = ddosCfgService.findPage(new Page(request, response,"r"), entity); + model.addAttribute("page", page); + initPageCondition(model); + return "/cfg/ddosIpCfgList"; + } + @RequestMapping(value = {"/form"}) + @RequiresPermissions(value={"ddos:ip:config"}) + public String form(Model model,HttpServletRequest request,HttpServletResponse response,String ids,@ModelAttribute("cfg")DdosIpCfg cfg){ + if(!StringUtil.isEmpty(ids)){ + cfg = ddosCfgService.getDdosIpCfg(Long.parseLong(ids)); + initUpdateFormCondition(model, cfg); + }else{ + initFormCondition(model,cfg); + } + model.addAttribute("_cfg", cfg); + return "/cfg/ddosIpCfgForm"; + } + + @RequestMapping(value = {"/saveOrUpdate"}) + @RequiresPermissions(value={"ddos:ip:config"}) + public String saveOrUpdate(Model model,HttpServletRequest request,HttpServletResponse response, + @ModelAttribute("cfg")DdosIpCfg cfg){ + try{ + ddosCfgService.saveOrUpdate(cfg); + addMessage(model,"save_success"); + }catch(Exception e){ + logger.error("信息保存失败",e); + e.printStackTrace(); + addMessage(model,"save_failed"); + } + + return "redirect:" + adminPath +"/manipulation/ddos/list?functionId="+cfg.getFunctionId(); + } + + @RequestMapping(value = {"/delete"}) + @RequiresPermissions(value={"ddos:ip:config"}) + public String delete(Integer isAudit,Integer isValid,String ids,Integer functionId){ + ddosCfgService.delete(isAudit,isValid,ids,functionId); + return "redirect:" + adminPath +"/manipulation/ddos/list?functionId="+functionId; + } + @RequestMapping(value = {"/audit"}) + //@RequiresPermissions(value={"ddos:ip:audit"}) + public String audit(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { + if(!StringUtil.isEmpty(ids)){ + String[] idArray = ids.split(","); + Date auditTime=new Date(); + for(String id :idArray){ + try { + ddosCfgService.audit(isAudit,isValid,functionId,id,auditTime); + } catch (MaatConvertException e) { + e.printStackTrace(); + logger.info("dns fake ip配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes, e.getMessage()); + } + + } + + } + return "redirect:" + adminPath +"/manipulation/ddos/list?functionId="+functionId; + } + +} diff --git a/src/main/java/com/nis/web/dao/configuration/DdosCfgDao.java b/src/main/java/com/nis/web/dao/configuration/DdosCfgDao.java new file mode 100644 index 000000000..e3b144d3f --- /dev/null +++ b/src/main/java/com/nis/web/dao/configuration/DdosCfgDao.java @@ -0,0 +1,16 @@ +package com.nis.web.dao.configuration; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.configuration.DdosIpCfg; +import com.nis.domain.configuration.DnsIpCfg; +import com.nis.web.dao.CrudDao; +import com.nis.web.dao.MyBatisDao; + +@MyBatisDao +public interface DdosCfgDao extends CrudDao { + List findPage(DdosIpCfg cfg); + DdosIpCfg getDdosIpCfg(Long cfgId); +} diff --git a/src/main/java/com/nis/web/dao/configuration/DdosCfgDao.xml b/src/main/java/com/nis/web/dao/configuration/DdosCfgDao.xml new file mode 100644 index 000000000..be87cebb6 --- /dev/null +++ b/src/main/java/com/nis/web/dao/configuration/DdosCfgDao.xml @@ -0,0 +1,350 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + r.cfg_id,r.cfg_desc,r.ip_type,r.src_ip_address,r.ip_pattern,r.port_pattern,r.src_port + ,r.protocol,r.protocol_id,r.direction,r.cfg_type,r.action,r.dest_port,r.dest_ip_address + ,r.is_valid,r.is_audit,r.creator_id,r.create_time,r.editor_id + ,r.edit_time,r.auditor_id,r.audit_time,r.service_id,r.request_id, + r.compile_id,r.is_area_effective,r.classify,r.attribute,r.lable + ,r.area_effective_ids,r.function_id,r.cfg_region_code + + + + + + + + insert into ddos_ip_cfg ( + CFG_DESC, + ACTION, + IS_VALID, + IS_AUDIT, + CREATOR_ID, + CREATE_TIME, + EDITOR_ID, + EDIT_TIME, + AUDITOR_ID, + AUDIT_TIME, + SERVICE_ID, + REQUEST_ID, + COMPILE_ID, + IS_AREA_EFFECTIVE, + CLASSIFY, + ATTRIBUTE, + LABLE, + AREA_EFFECTIVE_IDS, + function_id, + ip_type, + src_ip_address, + ip_pattern, + port_pattern, + src_port, + protocol, + protocol_id, + direction, + dest_port, + dest_ip_address, + cfg_type, + cfg_region_code + )values ( + #{cfgDesc,jdbcType=VARCHAR}, + #{action,jdbcType=INTEGER}, + 0, + 0, + #{creatorId,jdbcType=INTEGER}, + #{createTime,jdbcType=TIMESTAMP}, + #{editorId,jdbcType=INTEGER}, + #{editTime,jdbcType=TIMESTAMP}, + #{auditorId,jdbcType=INTEGER}, + #{auditTime,jdbcType=TIMESTAMP}, + #{serviceId,jdbcType=INTEGER}, + #{requestId,jdbcType=INTEGER}, + #{compileId,jdbcType=INTEGER}, + #{isAreaEffective,jdbcType=INTEGER}, + #{classify,jdbcType=VARCHAR}, + #{attribute,jdbcType=VARCHAR}, + #{lable,jdbcType=VARCHAR}, + #{areaEffectiveIds,jdbcType=VARCHAR}, + #{functionId,jdbcType=INTEGER}, + #{ipType,jdbcType=INTEGER}, + #{srcIpAddress,jdbcType=VARCHAR}, + #{ipPattern,jdbcType=INTEGER}, + #{portPattern,jdbcType=INTEGER}, + #{srcPort,jdbcType=VARCHAR}, + #{protocol,jdbcType=INTEGER}, + #{protocolId,jdbcType=INTEGER}, + #{direction,jdbcType=INTEGER}, + #{destPort,jdbcType=VARCHAR}, + #{destIpAddress,jdbcType=VARCHAR}, + #{cfgType,jdbcType=VARCHAR}, + #{cfgRegionCode,jdbcType=INTEGER} + ) + + + + update ddos_ip_cfg + + + + cfg_desc = #{cfgDesc,jdbcType=VARCHAR}, + + + action = #{action,jdbcType=INTEGER}, + + + is_valid = #{isValid,jdbcType=INTEGER}, + + + is_audit = #{isAudit,jdbcType=INTEGER}, + + + editor_id = #{editorId,jdbcType=INTEGER}, + + + edit_time = #{editTime,jdbcType=TIMESTAMP}, + + + AUDITOR_ID = #{auditorId,jdbcType=INTEGER}, + + + AUDIT_TIME = #{auditTime,jdbcType=TIMESTAMP}, + + + COMPILE_ID = #{compileId,jdbcType=TIMESTAMP}, + + + request_id = #{requestId,jdbcType=INTEGER}, + + + is_area_effective = #{isAreaEffective,jdbcType=INTEGER}, + + + classify = #{classify,jdbcType=VARCHAR}, + + + attribute = #{attribute,jdbcType=VARCHAR}, + + + lable = #{lable,jdbcType=VARCHAR}, + + + area_effective_ids = #{areaEffectiveIds,jdbcType=VARCHAR}, + + + function_id = #{functionId,jdbcType=INTEGER}, + + + service_id = #{serviceId,jdbcType=INTEGER}, + + + ip_type = #{ipType,jdbcType=INTEGER}, + + + src_ip_address = #{srcIpAddress,jdbcType=VARCHAR}, + + + ip_pattern = #{ipPattern,jdbcType=INTEGER}, + + + port_pattern = #{portPattern,jdbcType=INTEGER}, + + + src_port = #{srcPort,jdbcType=VARCHAR}, + + + protocol = #{protocol,jdbcType=INTEGER}, + + + protocol_id = #{protocolId,jdbcType=INTEGER}, + + + direction = #{direction,jdbcType=INTEGER}, + + + dest_port = #{destPort,jdbcType=VARCHAR}, + + + dest_ip_address = #{destIpAddress,jdbcType=VARCHAR}, + + + cfg_type = #{cfgType,jdbcType=VARCHAR}, + + + cfg_region_code = #{cfgRegionCode,jdbcType=INTEGER}, + + + + + and cfg_id = #{cfgId,jdbcType=INTEGER} + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/service/configuration/DdosCfgService.java b/src/main/java/com/nis/web/service/configuration/DdosCfgService.java new file mode 100644 index 000000000..b664160e1 --- /dev/null +++ b/src/main/java/com/nis/web/service/configuration/DdosCfgService.java @@ -0,0 +1,164 @@ +package com.nis.web.service.configuration; + + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.nis.domain.Page; +import com.nis.domain.callback.InlineIp; +import com.nis.domain.configuration.DdosIpCfg; +import com.nis.domain.maat.ToMaatResult; +import com.nis.exceptions.MaatConvertException; +import com.nis.util.ConfigServiceUtil; +import com.nis.web.dao.configuration.DdosCfgDao; +import com.nis.web.security.UserUtils; +import com.nis.web.service.BaseService; + + + +/** + * ddos配置业务 + * @author dell + * + */ +@Service +public class DdosCfgService extends BaseService{ + @Autowired + protected DdosCfgDao ddosCfgDao; + + + public Page findPage(Page page, DdosIpCfg entity) { + entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"r")); + entity.setPage(page); + List list=ddosCfgDao.findPage(entity); + page.setList(list); + return page; + } + + public DdosIpCfg getDdosIpCfg(Long cfgId) { + return ddosCfgDao.getDdosIpCfg(cfgId); + } + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void saveOrUpdate(DdosIpCfg entity){ + Date createTime=new Date(); + //设置区域运营商信息 + setAreaEffectiveIds(entity); + //新增 + if(entity.getCfgId()==null){ + entity.setCreatorId(UserUtils.getUser().getId()); + entity.setCreateTime(createTime); + entity.setIsValid(0); + entity.setIsAudit(0); + //调用服务接口获取compileId + List compileIds = new ArrayList(); + try { + compileIds = ConfigServiceUtil.getId(1,1); + } catch (Exception e) { + e.printStackTrace(); + logger.info("获取编译ID出错"); + throw new MaatConvertException(e.getMessage()); + } + if(compileIds != null && compileIds.size() >0 && compileIds.get(0) != 0){ + entity.setCompileId(compileIds.get(0)); + ddosCfgDao.insert(entity); + }else{ + throw new MaatConvertException(""); + } + + //修改 + }else{ + Date editTime=new Date(); + entity.setIsValid(0); + entity.setIsAudit(0); + entity.setEditorId(UserUtils.getUser().getId()); + entity.setEditTime(editTime); + ddosCfgDao.update(entity); + } + } + + /** + * + * @param isAudit + * @param isValid + * @param ids compileIds + */ + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void delete(Integer isAudit,Integer isValid,String ids,Integer functionId){ + DdosIpCfg entity = new DdosIpCfg(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity.setCfgId(Long.valueOf(id)); + entity.setFunctionId(functionId); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setEditorId(UserUtils.getUser().getId()); + entity.setEditTime(new Date()); + ddosCfgDao.update(entity); + } + } + /** + * + * @param isAudit + * @param isValid + * @param ids cfgId + * @param functionId + */ + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void audit(Integer isAudit,Integer isValid,Integer functionId,String id,Date auditTime){ + DdosIpCfg entity = new DdosIpCfg(); + + List list = new ArrayList(); + + entity.setCfgId(Long.valueOf(id)); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(auditTime); + + ddosCfgDao.update(entity); + + entity=ddosCfgDao.getDdosIpCfg(Long.valueOf(id)); + + String json=""; + if(entity.getIsAudit()==1){ + List ipList=new ArrayList(); + InlineIp resStrategy=convertCallBackIp(entity,null); + ipList.add(resStrategy); + //调用服务接口下发配置数据 + json=gsonToJson(ipList); + logger.info("DDOS IP配置下发配置参数:"+json); + //调用服务接口下发配置 + try { + ToMaatResult result = ConfigServiceUtil.postCallbackCfg(json); + if(result!=null){ + logger.info("DDOS IP配置下发响应信息:"+result.getMsg()); + } + } catch (Exception e) { + logger.error("DDOS IP配置下发失败",e); + throw e; + } + }else if(entity.getIsAudit()==3){ + List resStrategyList=new ArrayList<>(); + InlineIp resStrategy=convertCallBackIp(entity,entity.getDnsStrategyId()); + resStrategyList.add(resStrategy); + //调用服务接口取消配置 + json=gsonToJson(resStrategyList); + logger.info("DDOS IP配置参数:"+json); + //调用服务接口取消配置 + try { + ToMaatResult result = ConfigServiceUtil.put(json, 2); + logger.info("DDOS IP配置响应信息:"+result.getMsg()); + } catch (Exception e) { + e.printStackTrace(); + logger.info("DDOS IP配置配置失败"); + throw e; + } + } + + } +} diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties index b734b9eb2..95146a6e2 100644 --- a/src/main/resources/log4j.properties +++ b/src/main/resources/log4j.properties @@ -8,10 +8,10 @@ log4j.appender.console.layout.ConversionPattern=[%d{yyyy-MM-dd HH\:mm\:ss}] [%-5 # 文件日志设置 log4j.appender.file=org.apache.log4j.DailyRollingFileAppender -log4j.appender.file.Threshold=error +log4j.appender.file.Threshold=info log4j.appender.file.encoding=UTF-8 log4j.appender.file.Append=true -log4j.appender.file.file=${nis.root}/WEB-INF/log/nis.log +log4j.appender.file.file=${nis.root}/WEB-INF/log/gwall.log log4j.appender.file.DatePattern='.'yyyy-MM-dd log4j.appender.file.layout=org.apache.log4j.PatternLayout #log4j.appender.file.layout.ConversionPattern=%d{HH:mm:ss} %X{ip} [%t] %5p %c{1} %m%n diff --git a/src/main/webapp/WEB-INF/views/cfg/ddosIpCfgForm.jsp b/src/main/webapp/WEB-INF/views/cfg/ddosIpCfgForm.jsp new file mode 100644 index 000000000..517b5186a --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cfg/ddosIpCfgForm.jsp @@ -0,0 +1,122 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +<spring:message code="${cfgName}"></spring:message> + + + + +
+ + <%--

+ +

--%> + +
+
+
+
+
+ + + +
+
+
+ +
+ + + + + + + + + + + + + +
+ +
+
+
+ +
+ +
+
+
+ +
+ + <%@include file="/WEB-INF/include/form/ipInfo.jsp" %> + <%@include file="/WEB-INF/include/form/basicInfo.jsp" %> +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/cfg/ddosIpCfgList.jsp b/src/main/webapp/WEB-INF/views/cfg/ddosIpCfgList.jsp new file mode 100644 index 000000000..a4431edf8 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cfg/ddosIpCfgList.jsp @@ -0,0 +1,448 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +<spring:message code="${cfgName}"></spring:message> + + + + +
+ + +

+ +

+ +
+
+
+
+
+ + + + + + + + + + +
+
+ + + + + + + <%-- --%> + +
+ +
+ +
+
+ + + + + + + + + +
+ + + +
+
+
+ + + +
+
+ + + + +
+ + +
+ href="javascript:;"> + + +
+
+ + + +
+
+ +
+ +
+ + + + + + + + +
+ +
+ +
+ +
+ + + + + + + +
+ +
+ +
+ +
+ + + + + + + + +
+ +
+ +
+ +
+ + + + + + + +
+ +
+ +
+ +
+
+
+ + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+
+ + +
+ + +
+
+
+ + + + + <%-- --%> + + + + + + + + + + + + + + + + + + + + + + + + + <%-- --%> + + + + + + + + + + + + + + + + + + + + + + + <%-- --%> + + + + + + + + + + + + +
${cfg.cfgDesc } + + + + ${cfg.srcIpAddress }${cfg.srcPort }${cfg.destIpAddress }${cfg.destPort } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${cfg.requestName } + + + + + + + + + + + + + + + ${fns:abbr(classify,20)} + + + + + + + + + + + + + + + + + ${fns:abbr(attribute,20)} + + + + + + + + + + + + + + + + + ${fns:abbr(lableInfo,20)} + + ${cfg.areaEffectiveIds } + + + + + + + + + + + ${cfg.creatorName }${cfg.editorName }${cfg.auditorName }
+
${page}
+
+ +
+
+
+ + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index d86a23d33..fe8a586ba 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -93,7 +93,10 @@ / - + + webAppRootKey + nis.root + @@ -107,17 +110,14 @@ --> - - webAppRootKey - nis.root - + - +