📄 myjsp.jsp
字号:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=gb2312" import="java.sql.*" errorPage="" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<body background="E:\壁纸\20081161243540.jpg" >
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<base href="<%=basePath%>">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<form name="form1" method="post" action="index.jsp">
<%
try
{Class.forName("org.gjt.mm.mysql.Driver").newInstance(); }
catch(ClassNotFoundException e){out.print("error");}
try{
int factCounter=Integer.parseInt((session.getAttribute("factCounter")).toString());
int []factDetail=new int[factCounter];
String[] checkbox = new String[factCounter];
int inCounter=0;
int count=0;
%>您选择了如下的事实:<br /><%
String cond1 = request.getParameter("hair");
if (cond1!=null)
{
checkbox[count] = "该动物有毛发";
factDetail[count]=1;
inCounter++;
count++;
%><br>该动物有毛发<%
}
String cond2 = request.getParameter("milk");
if (cond2!=null)
{
checkbox[count] = "该动物有奶";
factDetail[count]=2;
inCounter++;
count++;
%><br>该动物有奶<%
}
String cond3 = request.getParameter("feather");
if (cond3!=null)
{
checkbox[count] = "该动物有羽毛";
factDetail[count]=3;
inCounter++;
count++;
%><br>该动物有羽毛<%
}
String cond4 = request.getParameter("fly");
if (cond4!=null)
{
checkbox[count] = "该动物会飞";
factDetail[count]=4;
inCounter++;
count++;
%><br>该动物会飞<%
}
String cond5 = request.getParameter("egg");
if (cond5!=null)
{
checkbox[count] = "该动物会下蛋";
factDetail[count]=5;
inCounter++;
count++;
%><br>该动物会下蛋<%
}
String cond6 = request.getParameter("meat");
if (cond6!=null)
{
checkbox[count] = "该动物吃肉";
factDetail[count]=6;
inCounter++;
count++;
%><br>该动物吃肉<%
}
String cond7 = request.getParameter("tooth");
if (cond7!=null)
{
checkbox[count] = "该动物有犬齿";
factDetail[count]=7;
inCounter++;
count++;
%><br>该动物有犬齿<%
}
String cond8 = request.getParameter("talon");
if (cond8!=null)
{
checkbox[count] = "该动物有爪";
factDetail[count]=8;
inCounter++;
count++;
%><br>该动物有爪<%
}
String cond9 = request.getParameter("forward");
if (cond9!=null)
{
checkbox[count] = "该动物眼盯前方";
factDetail[count]=9;
inCounter++;
count++;
%><br>该动物眼盯前方<%
}
String cond10 = request.getParameter("lactation");
if (cond10!=null)
{
checkbox[count] = "该动物是哺乳动物";
factDetail[count]=10;
inCounter++;
count++;
%><br>该动物是哺乳动物<%
}
String cond11 = request.getParameter("bird");
if (cond11!=null)
{
checkbox[count] = "该动物是鸟";
factDetail[count]=11;
inCounter++;
count++;
%><br>该动物是鸟<%
}
String cond12 = request.getParameter("flesh");
if (cond12!=null)
{
checkbox[count] = "该动物是肉食动物";
factDetail[count]=12;
inCounter++;
count++;
%><br>该动物是肉食动物<%
}
String cond13 = request.getParameter("unguis");
if (cond13!=null)
{
checkbox[count] = "该动物有蹄";
factDetail[count]=13;
inCounter++;
count++;
%><br>该动物有蹄<%
}
String cond14 = request.getParameter("hoof");
if (cond14!=null)
{
checkbox[count] = "该动物是有蹄类动物";
factDetail[count]=14;
inCounter++;
count++;
%><br>该动物是有蹄类动物<%
}
String cond15 = request.getParameter("ruminant");
if (cond15!=null)
{
checkbox[count] = "该动物是嚼反刍动物";
factDetail[count]=15;
inCounter++;
count++;
%><br>该动物是嚼反刍动物<%
}
String cond16 = request.getParameter("tan");
if (cond16!=null)
{
checkbox[count] = "该动物是黄褐色";
factDetail[count]=16;
inCounter++;
count++;
%><br>该动物是黄褐色<%
}
String cond17 = request.getParameter("spot");
if (cond17!=null)
{
checkbox[count] = "该动物身上有暗斑点";
factDetail[count]=17;
inCounter++;
count++;
%><br>该动物身上有暗斑点<%
}
String cond18 = request.getParameter("list");
if (cond18!=null)
{
checkbox[count] = "该动物身上有黑色条纹";
factDetail[count]=18;
inCounter++;
count++;
%><br>该动物身上有黑色条纹<%
}
String cond19 = request.getParameter("neck");
if (cond19!=null)
{
checkbox[count] = "该动物有长脖子";
factDetail[count]=19;
inCounter++;
count++;
%><br>该动物有长脖子<%
}
String cond20 = request.getParameter("leg");
if (cond20!=null)
{
checkbox[count] = "该动物有长腿";
factDetail[count]=20;
inCounter++;
count++;
%><br>该动物有长腿<%
}
String cond21 = request.getParameter("notfly");
if (cond21!=null)
{
checkbox[count] = "该动物不会飞";
factDetail[count]=21;
inCounter++;
count++;
%><br>该动物不会飞<%
}
String cond22 = request.getParameter("swim");
if (cond22!=null)
{
checkbox[count] = "该动物会游泳";
factDetail[count]=22;
inCounter++;
count++;
%><br>该动物会游泳<%
}
String cond23 = request.getParameter("whiteblack");
if (cond23!=null)
{
checkbox[count] = "该动物有黑白二色";
factDetail[count]=23;
inCounter++;
count++;
%><br>该动物有黑白二色<%
}
if(inCounter!=0)
{
String url = "jdbc:mysql://localhost:3306/ai?user=root&password=";
Connection conn = DriverManager.getConnection(url);
Connection conn2 = DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
Statement stmt2=conn2.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select distinct ruleid from rule;";
ResultSet rstmp=stmt2.executeQuery(sql);
ResultSet rs=stmt.executeQuery(sql);
rs.last();
int counterRule=rs.getRow();
int [] ruleId=new int[counterRule];
boolean [] isRuleUsed=new boolean[counterRule];
rs.first();
for(int i=0;i<counterRule;i++)
{
ruleId[i]=rs.getInt(1);
isRuleUsed[i]=false;
rs.next();
}//初始化
sql="delete from current where 1=1;";
stmt.execute(sql);
for(int i=0;i<=count;i++)
{
if(factDetail[i]!=0)
{
sql="insert into current(factid) values(";
sql+=factDetail[i];
sql+=");";
stmt.execute(sql);
}
}
boolean currentChanged=true;
boolean targetFound=false;
int cyclecounter=1;
%>
<br>推理过程:
<%
while(currentChanged)
{
cyclecounter++;
currentChanged=false;
for(int i=0;i<counterRule;i++)
{
if (isRuleUsed[i]) continue;//若当前规则已用过,退出此次循环
sql="select factid from rule where ftype=0 and ruleid=";//搜索规则的前件。
sql+=ruleId[i];
sql+=";";
boolean met=true;
rs=stmt.executeQuery(sql);
while(rs.next())
{
sql="select factid from current where factid = ";
sql+=rs.getInt(1);
sql+=";";
rstmp=stmt2.executeQuery(sql);
if(!rstmp.next())
{met=false;break;}
}
if(met)
{
%><br>规则<%=ruleId[i]%>匹配<%
isRuleUsed[i]=true;
sql="select factid from rule where ftype=1 and ruleid=";
sql+=ruleId[i];
sql+=";";
rs=stmt.executeQuery(sql);
while(rs.next())
{
sql="select factid from fact where flag=1 and factid =";
sql+=rs.getInt(1);
sql+=";";
rstmp=stmt2.executeQuery(sql);
if(rstmp.next())
{
targetFound=true;
sql="select detail from fact where factid=";
sql+=rstmp.getInt(1);
sql+=";";
rstmp=stmt2.executeQuery(sql);
rstmp.next();
String str=new String(rstmp.getString(1).getBytes("ISO8859-1"),"gb2312");
%><br>找到目标事实<%=str%><%
}//找到了目标事实。
sql="select factid from current where factid =";
sql+=rs.getInt(1);
sql+=";";
rstmp=stmt2.executeQuery(sql);
if(!rstmp.next())
{
sql="insert into current(factid) values(";
sql+=rs.getInt(1);%><br>添加新事实<%=rs.getInt(1)%><%
sql+=");";
stmt2.execute(sql);//添加本次推理得到的结果。
currentChanged=true;
count++;
factDetail[count]=rs.getInt(1);
}
else
{
%>规则后件<%=rs.getInt(1)%>已经在数据库中,不再添加<br /><%
}
}
}
}
}
if(targetFound==false){%>推理完毕 目标事实不在数据库中 找不到您要的事实结果<br /><%}
}
if(inCounter==0)
{
%>错误!您没有输入任何信息<%
}
}
catch(Exception e2){out.print("error");}
%>
推理结束
</form>
<body><br><br></body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -