新功能开发文档.docx
《新功能开发文档.docx》由会员分享,可在线阅读,更多相关《新功能开发文档.docx(17页珍藏版)》请在冰豆网上搜索。
新功能开发文档
保存用户访问信息记录表
createtableMA_REPORT_USR(
"USER_ID"VARCHAR(10)NOTNULL,(用户名字段)
"USER_IP"VARCHAR(15)NOTNULL,(用户IP)
"OPERATION_OBJ"VARCHAR(200),(操作对象)
"OPERATION"VARCHAR(900),(操作手段)
"OPERATION_TIME"VARCHAR(10)(操作时间)
);
LADW项目上新增内容:
记录用户对cognos报表访问的action:
CognosMesAction
packagecom.pb.sas.action;
importjava.io.IOException;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.HashMap;
importjava.util.Map;
importmons.logging.Log;
importmons.logging.LogFactory;
importcom.pb.sas.service.inf.IMaReportUsrService;
importcom.pb.sas.util.UserInfo;
@SuppressWarnings("serial")
publicclassCognosMesActionextendsBaseAction{
privatestaticfinalLoglog=LogFactory.getLog(UserInfo.class);
privateIMaReportUsrServicereportService;
publicIMaReportUsrServicegetReportService(){
returnreportService;
}
publicvoidsetReportService(IMaReportUsrServicereportService){
this.reportService=reportService;
}
publicstaticLoggetLog(){
returnlog;
}
//记录用户操作cognos报表信息
@SuppressWarnings("unchecked")
publicvoidaddCognosMessage()throwsIOException
{
System.out.println("进入报表访问页面");
Stringcognospath=getRequest().getParameter("path");//报表对应名称
System.out.println("lujing"+"*****"+cognospath.substring(44,51));
StringopenDocUrl=getRequest().getParameter("url");//完成后跳转的页面
openDocUrl+="&ui.action=run&CAMUsername=806999&CAMPassword=806999&ui.object="+cognospath+"&cv.header=false&cv.toolbar=false";
System.out.println("lujing2"+"***********"+openDocUrl);
Stringcognosname=reportService.findCognos(cognospath.substring(44,51));
StringusrIp=getRequest().getRemoteAddr();//IP
UserInfouser=(UserInfo)getSession().getAttribute("user");
StringusrId=user.getUserId();//ID
Stringoperation="查看";//操作
StringoperationObj=cognosname;//被操作对象
SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:
mm:
ss");//设置日期格式
StringoperationTime=df.format(newDate()).toString();//操作时间
Mapreportmap=newHashMap();
reportmap.put("usrId",usrId);
reportmap.put("usrIp",usrIp);
reportmap.put("operation",operation);
reportmap.put("operationObj",operationObj);
reportmap.put("operationTime",operationTime);
reportService.saveMaReportUsr(reportmap);
//保存完后跳入报表页面
getResponse().sendRedirect(openDocUrl);
}
}
service接口:
IMaReportUsrService
packagecom.pb.sas.service.inf;
importjava.util.Map;
publicinterfaceIMaReportUsrService{
publicvoidsaveMaReportUsr(MapparamMap);//记录用户信息
publicStringfindCognos(Stringpath);//根据报表存放路径获取报表名称
}
Service类:
MaReportUsrService
packagecom.pb.sas.service.impl;
importjava.util.Map;
importcom.pb.sas.dao.inf.IMaReportUsrDao;
importcom.pb.sas.entity.MaReportUsr;
importcom.pb.sas.entity.MaReportUsrId;
importcom.pb.sas.service.inf.IMaReportUsrService;
publicclassMaReportUsrServiceimplementsIMaReportUsrService{
publicIMaReportUsrDaomaReportUsrDAO;
publicvoidsetMaReportUsrDAO(IMaReportUsrDaomaReportUsrDAO){
this.maReportUsrDAO=maReportUsrDAO;
}
publicIMaReportUsrDaogetMaReportUsrDAO(){
returnmaReportUsrDAO;
}
publicvoidsaveMaReportUsr(MapparamMap){
//TODOAuto-generatedmethodstub
System.out.println("jinruxitong");
StringuserId=(String)paramMap.get("usrId");
StringuserIp=(String)paramMap.get("usrIp");
StringoperationObj=(String)paramMap.get("operationObj");
Stringoperation=(String)paramMap.get("operation");
StringoperationTime=(String)paramMap.get("operationTime");
System.out.println(operationTime);
MaReportUsrIdusrID=newMaReportUsrId();
MaReportUsrusr=newMaReportUsr();
usrID.setUserId(userId);
usrID.setUserIp(userIp);
usrID.setOperation(operation);
usrID.setOperationObj(operationObj);
usrID.setOperationTime(operationTime);
usr.setId(usrID);
maReportUsrDAO.saveMaReportUsr(usr);
}
publicStringfindCognos(Stringpath){
//TODOAuto-generatedmethodstub
returnmaReportUsrDAO.findCognos(path);
}
}
IMaReportUsrDao接口
packagecom.pb.sas.dao.inf;
importcom.pb.sas.entity.MaReportUsr;
/**
*模块名:
用户访问信息记录(业务逻辑层接口)
*作者:
伍林
*日期:
XXXX年XX月XX日
*/
publicinterfaceIMaReportUsrDao{
publicvoidsaveMaReportUsr(MaReportUsrusr);//保存用户信息
publicStringfindCognos(Stringpath);//找到对应的cognos报表名称
}
MaReportUsrDao类
packagecom.pb.sas.dao.impl;
importjava.util.List;
importjava.util.Map;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
importcom.pb.sas.dao.inf.IMaReportUsrDao;
importcom.pb.sas.entity.MaMenu;
importcom.pb.sas.entity.MaReportUsr;
importcom.pb.sas.entity.MaReportUsrId;
publicclassMaReportUsrDaoextendsHibernateDaoSupportimplementsIMaReportUsrDao{
publicvoidsaveMaReportUsr(MaReportUsrusr){
getHibernateTemplate().save(usr);
}
publicStringfindCognos(Stringpath){
Stringsql="selectmenuDescfromMaMenuwhereurllike'%"+path+"%'";
Listlist=getHibernateTemplate().find(sql);
returnlist.get(0).toString();
}
}
利用hibernate机制生成数据表对应的实体bean
在Spring的配置文件里面加入以下代码以便对ACTION的自动注入
--用户操作信息记录管理-->
在hibernate的配置文件里面加入对数据库生成的XML的映射
修改logincognos.jsp的代码,使其先记录用户要操作的信息再跳入报表的访问页面
<%@pagepageEncoding="UTF-8"%>
<%@pageimport="com.pb.sas.util.CommonConstant"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
<%
//Stringbo_url=CommonConstant.BO_URL;
//Stringcognos_url="http:
//182.10.10.3/ibmcognos/";//IIS开发20121228
Stringcognos_url="http:
//10.0.0.23/ibmcognos/";
//StringdocID=request.getParameter("docID");
//Stringtitle=request.getParameter("title");
Stringpath=request.getParameter("path");
Stringbouser="806999";;
Stringbopassword="806999";
//Stringbouser=request.getSession().getAttribute("bouser");
//Stringbopassword=request.getSession().getAttribute("bopassword");
path=.URLEncoder.encode(newString(path.getBytes("iso-8859-1"),"utf-8"),"utf-8");
//IIS���ʵ�ַ
StringopenDocUrl=cognos_url+"cgi-bin/cognos.cgi?
b_action=cognosViewer&ui.action=run&CAMUsername="+bouser+"&CAMPassword="+bopassword+"&ui.object="+path+"&cv.header=false&cv.toolbar=false";
StringpostAction="https:
//10.0.0.23:
8443/LADW/CognosMesAction_addCognosMessage.action?
path="+path+"&url="+openDocUrl;
//StringopenDocUrl=cognos_url+"cgi-bin/cognos.cgi?
b_action=cognosViewer&ui.action=run&ui.object="+path;
//����е�¼�������������������ע��͵�¼
//StringlogOffUrl=cognos_url+"cgi-bin/cognos.cgi?
b_action=xts.run&m=portal/logoff.xts&h_CAM_action=logoff"
//StringlogOnUrl=cognos_url+"cgi-bin/cognos.cgi?
b_action=xts.run&m=portal/main.xts&h_CAM_action=logonAs&CAMUsername="+user+"&CAMPassword="+password;
%>
<%response.sendRedirect(postAction);%>
至于用户访问birt报表的记录信息要修改cadw项目上的内容
Java代码基本与之前是相同的
不同点在于,不用另外新建一个action,直接在reportaction的report_Name()方法里面新增代码
publicStringreport_Name(){
if(dateService==null)
{
System.out.println("******************null");
}else
{
System.out.println("*******************notnull");
}
if(reportService==null)
{
System.out.println("***********************null2");
}else
{
System.out.println("****************************notnull2");
}
Stringdate=dateService.serachDate();
getRequest().setAttribute("date",date);
getRequest().setAttribute("report_name",report_name);
System.out.println("开始保存");
System.out.println("name"+"*****************"+report_name);//报表名称
Stringbirtname=reportService.findCognos(report_name);
Stringuserid="admin";//用户ID
StringusrIp=getRequest().getRemoteAddr();//用户IP
SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:
mm:
ss");
StringoperationTime=df.format(newDate()).toString();//time
Stringoperation="访问";//用户操作
Mapreportmap=newHashMap();
reportmap.put("usrId",userid);
reportmap.put("usrIp",usrIp);
reportmap.put("operation",operation);
reportmap.put("operationObj",birtname);
reportmap.put("operationTime",operationTime);
reportService.saveMaReportUsr(reportmap);
System.out.println("baocunchenggong");
returnSUCCESS;
}
修改success.jsp代码为:
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
">
MyEclipseSampleReportAccessWebpage--kenengchuxiandianjicanshuwufabaocundexianxiang-->
<%
Stringdate=request.getAttribute("date").toString();
StringreportDir=request.getAttribute("report_name").toString();
StringopenDocUrl="/frameset?
__report=reports/"+reportDir+"&__format=HTML&__parameterpage=true&date="+date+"&date1="+date;
%>
<%
response.sendRedirect(path+"/frameset?
__report=reports/"+r