#
双击:
ondblClick="edit_on('I104120130400011')"单击:
onclick="lightonRow(this);"
嵌入页面:<iframe allowtransparency="true" width=420 height=330 frameborder=0 scrolling=auto src=URL></iframe> allowtransparency:代表透明景色
用户输入内容 输出用 htmlspecialchars
服务端 sql过滤
xss漏洞过滤
使用工具:Acunetix Web Vulnerability Scanner 7
卸载客户端已经安装的插件,升级服务器上的插件到最新版本,再访问服务器上的报表下载新的插件
卸载插件方法:
如果是从服务器自动下载安装的插件:首先关闭浏览报表的浏览器窗口,重新打开一个浏览器窗口,选择浏览器的菜单:
工具-->Internet选项-->设置-->查看对象-->Ming-WebReport Viewer-->右键菜单-->删除
如果是在客户端运行安装程序安装的插件:在客户端运行 regsvr32 /u "C:\.....\MRViewer.ocx"卸载安装的插件。
升级插件到最新版本 windows7
正式版下载地址是http://www.soft2web.com/v4/MRLic/opendownload.asp,下载V3版本
解压缩以后(不需要运行安装程序),更新服务器上报表应用程序下的文件
报表根目录下的MREngine.prop文件;
报表根目录\Viewer\MRViewer.CAB文件;
更新以后,重启一下。
服务器上文件正确升级以后,客户端会自动下载安装新版本的插件
注意客户端需要管理员帐户登陆以后再安装浏览器插件。
windows7下 按F8 禁用数字签名驱动。
获取父窗口的名称
parent.frames["otherframe"].name
parent.frames["otherframe"].location.href
parent.frames["otherframe"].document.all.控件ID.value
获取父窗口内容:
$(parent.window.frames["frameMain"].document.body).html()
在body中增加内容:
当前页的body增加内容:$("body").append('4444');
增加父窗口代码:parent.frameContent.$(parent.frameContent.document).find("body").append('<font size="17" color="red">类别编码: </font>');
本人觉得写得很有道理,值得学习。
转自【IT168知识库】
表单自定义功能看似非常方便,可以不用写代码即可完成表单的开发设计,表面上看的确是减少不少开发成本,但深入研究,发现是有不少误区的。
1、 对于整体成本来讲,当表单自定义功能能满足实际客户需求的60%时,会为另外的40%需求付出多少成本。现实中所见到的表单自定义工具一般至多能满足实际客户需求的50%。一般容易实现的仅布局、字段的增减、简单的脚本控制等,但有很多诸如复杂脚本控制、自动计算、特殊逻辑验证、主从关系,复杂基础数据选择(过滤、合并)、与其它功能模块的交互等等需求,自定义工具都不能实现。最终可能带来的代价是重做,甚至推翻整个系统架构重新实现,付出成本是预计成本的2-4倍以上均有可能;
2、 表单自定义功能实现的方式一般是数据库表中预制了很多字段或者是一个表中的记录存储为 ID、字段名、值、字段类型,而且值的类型往往是字符型,这些做法给数据的查询统计及SQL优化带来的是非常大的性能损失和阻力,业务系统数据量不大的时候看不出,一旦数据业务表大到一定程度的时候,性能瓶颈就会出现。我们知道需要工作流的业务系统都是大量用户和大规模业务数据的。对于表单自定义做法,性能瓶颈是一定要考虑的;
3、 表单自定义往往实现的是一个数据实体的增、删、改,但对于一个系统来讲一个表单仅仅是一个功能点而已,这个功能点对于整个系统来讲远不是那么单纯的,有可能一个数据实体的资料分别在多个表单里进行更新和维护,自定义逻辑往往是处理不了它们之间的冲突,还有查询和统计分析,这些是需要关联很多基础数据、关联其它业务数据。自定义表单功能本身也只是从功能特性的角度去出发,对于系统复杂的实体关系、业务模式、设计模式的支持几乎为零,一个高质量系统需要的因素基本实现不了;
4、 我们企业使用表单自定义工具的时候往往已经有了很多的系统,比如HR、CRM甚至ERP系统,我们很多关联数据会是来自于这些系统的数据。表单自定义工具往往无法提供高可靠性的集成方案,即使能集成也是勉强的,后续会付出很多手工同步、统计口径不一致等代价,为企业整体的信息化效果大打折扣;
5、 另外从实际的使用情况而言,我们实现一个表单自定义功能的目标往往是为了方便用户实现自己的业务逻辑,但实际上很少客户会自己去自定义这些表单。而开发人员都会热忠于实现一个表单自定义工具,但不会愿意长期去做表单的定制工作,从开发人员的成长角度来说是不利的。对于团队的管理者来说用程序员的工资去做表单配置工作也是不划算的;
6、 透过这些现象的分析,假如我们一定要去实现一个好的表单自定义工具,一定是有很多事件接口的、一定是要能支持调试的、布局一定要能有足够的细致、自定义过程中要有提供给业务人员的自动向导(比开发人员需要的向导更加傻瓜化)、一定能做到足够的优化或支持优化的实现、能支持缓存、调用程序集、从WebService获取信息、能对页面交互过程进行优化。。。。。。这些都实现后,会发现做的表单定义工具其实就是大软件公司研发的IDE开发环境,如:visual studio开发环境,我们是否有这个能力呢?
表单自定义工具在软件投标过程中实现快速原型有帮助,但实际应用系统还是需要用大厂商提供的开发工具进行开发,假如一个表单自定义工具真那么容易实现的话,而且那么有用的话,为什么微软、IBM等公司不去做这样的工具呢?
eclipse classic 是eclipse的标准版:标准版;
Eclipse Classic的带有source
建议使用Eclipse Classic,需要插件自己安装配置即可
安装相应插件:
1.安装wtp,方便web开发
打开菜单help->Install new Software,单击“add..”按钮,弹出框的name和location都填入“http://download.eclipse.org/webtools/updates/”,等待一会,勾选“Web Tools Platform (WTP) 3.1.2”
2.安装“java decompiler”
打开菜单help->Install new Software,单击“add..”按钮,弹出框的name和location都填入“http://java.decompiler.free.fr/jd-eclipse/update”,等待一会,勾选“Java Decompiler Eclipse Plug-in”,按向导进行安装。
相关配置:
1.统一设置为utf-8编码,Window->Preferences->General->Workspace->Text file encoding->Other->UTF-8。
2.修改jsp等默认编码为utf-8,打开Window->Preferences->Web->Jsp Files,修改右面的encoding为(utf-8)。
3.统一设置为utf-8编码,Window->Preferences->General->Content Types,在右面选择“Text”,在default encoding输入“UTF-8”,点“update”按钮更新。
经过配置后,所有的新建的java、jsp、txt、html、xml、文件夹等编码都是utf-8,这样在jsp、html等文件中设定编码为utf-8,可以避免乱码。
1,Long转换为BigDecimal.
btn.setSortCode(BigDecimal.valueOf(2l));
一、oracle启动:把以下代码另存为批处理文件(.bat)
@echo off
@ ECHO 启动 Oracle 11g 服务
net start "OracleDBConsoleorcl"
net start "OracleOraDb11g_home1TNSListener"
net start "OracleServiceORCL"
@ ECHO 启动完毕 按任意键继续
exit
二、oracle停止:把以下代码另存为批处理文件(.bat)
@echo off
@ ECHO 停止 Oracle 11g 服务
net stop "OracleDBConsoleorcl"
net stop "OracleOraDb11g_home1TNSListener"
net stop "OracleServiceORCL"
@ ECHO 停止完毕 按任意键继续
pause
exit
一。安装ireport,到iReport的官方网站:http://ireport.sourceforge.net/去下载。
二。安装完后制作report模板文件:
1.新建一个文件:档案-->开启新档
2.配置数据源:data-->连接资源来源-->new-->DataBase JDBC connection,输入名称,选择驱动,填写url.
3.插入数据,选择data-->报表查询,在这里写要查询的sql,写好后会在field里自动生成查后的列;
4.拖动field到detail里。这样就制作完成了。
5.建立--->编译会在ireport的安装目录下生成.jasper结尾的文件。这就是我们需要的模板文件。
很简单的一个报表例子。
三。写jsp文件: (偶用的是IREPORT300,包请在IREPORT300中lib里找吧)
1。导入需要的降包:itext-1.3.1.jar,iTextAsian.jar,jasperreports-1.0.1.jar,poi-2.0-final-20040126.jar,classes12.jar。注意:不要是classes12.zip,我导入classes12.zip就是报找不到OracleDriver错误。
2.写jsp文件:
- <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
- <%@ page import="java.sql.*"%>
- <%@ page import="java.io.*"%>
- <%@ page import="net.sf.jasperreports.engine.JasperFillManager"%>
- <%@ page import="net.sf.jasperreports.engine.JasperPrint"%>
- <%@ page import="net.sf.jasperreports.engine.JRException"%>
- <%@ page import="net.sf.jasperreports.engine.JRExporterParameter"%>
- <%@ page import="net.sf.jasperreports.engine.export.JRXlsExporterParameter"%>
- <%@ page import="net.sf.jasperreports.engine.export.JRXlsExporter"%>
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <body>
-
- <%
- String Name = "aa";
- Class.forName("oracle.jdbc.driver.OracleDriver");
- Connection conn= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","lshh","lshh");
-
- File exe_rpt = new File(application.getRealPath("/test.jasper"));
-
- Map parameters = new HashMap();
- parameters.put("Name", Name);
- try {
-
- JasperPrint jasperPrint = JasperFillManager.fillReport(exe_rpt
- .getPath(), parameters, conn);
-
- ByteArrayOutputStream oStream = new ByteArrayOutputStream();
- JRXlsExporter exporter = new JRXlsExporter();
- exporter.setParameter(JRExporterParameter.JASPER_PRINT,
- jasperPrint);
- exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
- oStream);
- exporter.setParameter(
- JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
- Boolean.TRUE);
- exporter.setParameter(
- JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
- Boolean.FALSE);
- exporter.setParameter(
- JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,
- Boolean.FALSE);
- exporter.exportReport();
-
- byte[] bytes = oStream.toByteArray();
-
- if (bytes != null && bytes.length > 0) {
- response.reset();
- response.setContentType("application/vnd.ms-excel");
- response.setContentLength(bytes.length);
- ServletOutputStream ouputStream = response
- .getOutputStream();
- ouputStream.write(bytes, 0, bytes.length);
- ouputStream.flush();
- ouputStream.close();
-
- } else {
- out.print("bytes were null!");
- }
- conn.close();
- } catch (JRException ex) {
- out.print("Jasper Output Error:" + ex.getMessage());
- }
- %>
-
-
- </body>
- </html>
强烈强调一句,如果你要在线显示PDF,excel直接把response.setHeader("Content-disposition", "attachment; filename=" + fileName);
改为:response.setHeader("Content-disposition","inline; filename=MyExcel.pdf"); 就行了,
再强调一点,首先确定一定要安装adobe reader阅读器啊(别说,我就因为没装这个,折腾了二天,呵呵。。。)
升级处理:
需要包:iText-2.1.7.jar、iTextAsian.jar、jasperreports-5.5.0.jar、poi-3.9-20121203.jar
相当于request.getparameter()的EL语句:
1、 ${param.method}
2、
<s:property value="#parameters.method"/>
3、 <s:if test="%{#parameters.method[0]=='delete'}">
4、<% String sysCode = (String)request.getSession().getAttribute("sysCode");%>
<c:url value="/${sysCode}/LoginAction_left.do"/>