作者qrtt1 (愚人)
站内java
标题Re: 用servlet呈现 piechart 无法显现在网页中
时间Sun Nov 11 11:45:59 2007
看到一堆 jsp 就晕了 囧rz
---------------------------------------------------------------
String path2 = request.getRealPath(".");
try
{
File image = new File(path2 +"\\MyChart2.png");
ChartUtilities.saveChartAsPNG(image, chart, 640, 480);
}
catch (Exception exc)
{
}
out.println("<p><img src = 'MyChart2.png'></img></p>");
这样写有潜在的问题 src = 'MyChart2.png'
除非你确定你的 jsp 只会在 context root
不然应该要是
request.getContextPath() + '/' + 'MyChart2.png'
要以 context path 为起始点来算比较保险
如果用 jstl 就会写成
<img src="<c:url value="/MyChar2.png" />" />
---------------------------------------------------------------
if(drawback.equals("1")){
where_condiction = " and (缺失态样 like '%1%') ";
}
您 equals 的习惯不太好. 只要 drawback 不小心为 null 你的程式就挂在那边
改成 "1".equals(fooooo) 比较好
---------------------------------------------------------------
if(tartype.equals("0")){
selcase = " where (预算金额 > 0 ) ";
temptype = "的所有稽核案件";
temptype2 = "所有稽核采购案件";
}
if(tartype.equals("1")){
selcase = " where (采购标的性质 = '工程' ) ";
temptype = "的工程稽核案件";
temptype2 = "工程类稽核采购案件";
}
if(tartype.equals("2")){
selcase = " where (采购标的性质 = '劳务' ) ";
temptype = "的劳务稽核案件";
temptype2 = "劳务类稽核采购案件";
}
if(tartype.equals("3")){
selcase = " where (采购标的性质 = '财物' ) ";
temptype = "的财物稽核案件";
temptype2 = "财物类稽核采购案件";
}
if(tartype.equals("4")){
}
IF 太长了, 蛮伤脑筋的
比较好维护的方式大概会写成
public abstract class SelectType {
String selcase;
String temptype;
String temptype2;
public String getSelcase() {
return selcase;
}
public void setSelcase(String selcase) {
this.selcase = selcase;
}
public String getTemptype() {
return temptype;
}
public void setTemptype(String temptype) {
this.temptype = temptype;
}
public String getTemptype2() {
return temptype2;
}
public void setTemptype2(String temptype2) {
this.temptype2 = temptype2;
}
}
class AllType extends SelectType {
public AllType() {
selcase = " where (预算金额 > 0 ) ";
temptype = "的所有稽核案件";
temptype2 = "所有稽核采购案件";
}
}
class EngineeringType extends SelectType {
public EngineeringType() {
selcase = " where (采购标的性质 = '工程' ) ";
temptype = "的工程稽核案件";
temptype2 = "工程类稽核采购案件";
}
}
class ServiceType extends SelectType {
public ServiceType() {
selcase = " where (采购标的性质 = '劳务' ) ";
temptype = "的劳务稽核案件";
temptype2 = "劳务类稽核采购案件";
}
}
class EffectsType extends SelectType {
public EffectsType() {
selcase = " where (采购标的性质 = '财物' ) ";
temptype = "的财物稽核案件";
temptype2 = "财物类稽核采购案件";
}
}
====================================================================
if(tartype.equals("2")){
selcase = " where (采购标的性质 = '劳务' ) ";
temptype = "的劳务稽核案件";
temptype2 = "劳务类稽核采购案件";
}
把要用到的 SelectType 可以先放到 Map 里
您就不需要 if... 来决定设定的值
map.get("2") 取得一个 ServiceType 的 instance
整串 if 变成一个 map get method 会比较不容易出错
也方便加新的 type
===================================================================
而後面也有 where_condition 做法也可以模仿, 不过可能要迂回一点的做法
像是建立一个 Decorator 类别
abstract class WhereConditionDecorator extends SelectType {
SelectType selectType;
public WhereConditionDecorator(SelectType selectType) {
this.selectType = selectType;
}
public abstract String getSelcase();
}
class WhereCondition_anyone extends WhereConditionDecorator {
public WhereCondition_anyone(SelectType selectType) {
super(selectType);
}
public String getSelcase() {
return selectType.getSelcase() + " " +
"and ((缺失态样 like '%1%') " +
"or (缺失态样 like '%2%') " +
"or (缺失态样 like '%3%') " +
"or (缺失态样 like '%4%') " +
"or (缺失态样 like '%5%') " +
"or (缺失态样 like '%6%') " +
"or (缺失态样 like '%7%') " +
"or (缺失态样 like '%8%') " +
"or (缺失态样 like '%9%')) ";
}
}
有了他, 你可以利用已经取得的 SelectType 实体再建立一个新的物件
new WhereCondition_anyone(type).getSelcase()
您就算是透过物件的手法帮您产生 sql string
where (采购标的性质 = '劳务' ) and ((缺失态样 like '%1%') or (缺失态样 like
'%2%') or (缺失态样 like '%3%') or (缺失态样 like '%4%') or (缺失态样 like
'%5%') or (缺失态样 like '%6%') or (缺失态样 like '%7%') or (缺失态样 like
'%8%') or (缺失态样 like '%9%'))
--
虽然讲那麽多
不知对您现在的用处大不大
不过您可以留着以後有闲再来改看也说不定 :)
java 也能写得很有趣 ^^
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.167.103.78
1F:推 cklonger:获益良多 11/11 13:32
2F:推 mybluesky:大推此文章,此文该M才是 11/15 00:39