try{
rs=condata.executeQuery(sql);
if(rs.next()){
%>
<script language="javascript">
alert("此企业信息已经发布!!");
history.back();
</script>
<%
}
else{
wsql="insert into tb_Enterprise(EnterPriseSort,enterPriseName,Operation,WorkArea,Address,Phone,LinkMan,HandSet,Fax,Email,Http,Intro,IssueDate,UserName) values('"+style+"','"+ename+"','"+
   operation+"','"+area+"','"+address+"','"+phone+"','"+linkman+"','"+
   hand+"','"+fax+"','"+email+"','"+web+"','"+intr+"','"+showdate+"','"+username+"')";
   boolean dd=condata.executeInsert(wsql);
   if(dd){
 %>
<script language="javascript">
alert("企业信息发布成功!!");
</script>
 <%
 response.sendRedirect("/logistics/Enterprise/enterprise.jsp");
 }
   }
rs.close();
}我如果输入相同的企业信息,他会提示我,此企业信息已经发布,但是我如果输入新的信息,并且dd为真,也能跳转到enterprise.jsp,但不提示“企业信息发布成功”不知道为什么啊

解决方案 »

  1.   

    你把jsp和javascript混在一起,看起来很乱,好像在服务器端数据库操作的时候就要弹出提示窗boolean bAlreadyPublished = false;
    boolean bPublicSuccess = false;
    try{
        rs=condata.executeQuery(sql);
        if(rs.next()){
       bAlreadyPublished = true;
        }
        else{
            wsql="insert into tb_Enterprise(EnterPriseSort,enterPriseName,Operation,WorkArea,Address,Phone,LinkMan,HandSet,Fax,Email,Http,Intro,IssueDate,UserName) values('"+style+"','"+ename+"','"+
            operation+"','"+area+"','"+address+"','"+phone+"','"+linkman+"','"+
            hand+"','"+fax+"','"+email+"','"+web+"','"+intr+"','"+showdate+"','"+username+"')";
          bPublicSuccess = condata.executeInsert(wsql);
       }
       rs.close();
    }catch(....)%><%if(bAlreadyPublished){%>
    <script language="javascript">
        alert("此企业信息已经发布!!");
        history.back();
    </script>
    <%}else if(bPublicSuccess)%>
        <script language="javascript">
         alert("企业信息发布成功!!");
         self.location="/logistics/Enterprise/enterprise.jsp";
        </script>
    <%}else{%> 
    //发布失败
    <%}%>
      

  2.   


    if(dd){
         %>
        <script language="javascript">
        alert("企业信息发布成功!!");
        </script>
         <%
         response.sendRedirect("/logistics/Enterprise/enterprise.jsp");  //如果成功直接跳转了,前面的Jscript不会执行的
         }你这样写法非常混乱,javascript是页面输出到客户端之后才执行的,jsp是在后台的,redirect之后这个js所在页面已经不会输出到客户端了!
      

  3.   

    jsp中没有javascriptjsp的输出内容只有字节流(文本,图片或其他)
      

  4.   

    executeInsert 这个函数是你自己写的?
      

  5.   


    sendRedirect(...)覆盖了前面响应输出流,因此前端只会显示重定向后的页面内容,而见不到原始页面的内容
      

  6.   


    try{
    rs=condata.executeQuery(sql);
    if(rs.next()){
    bAlreadyPublished = true;
    }
    else{
    wsql="insert into tb_Enterprise(EnterPriseSort,enterPriseName,Operation,WorkArea,Address,Phone,LinkMan,HandSet,Fax,Email,Http,Intro,IssueDate,UserName) values('"+style+"','"+ename+"','"+
       operation+"','"+area+"','"+address+"','"+phone+"','"+linkman+"','"+
       hand+"','"+fax+"','"+email+"','"+web+"','"+intr+"','"+showdate+"','"+username+"')";
       bPublicSuccess = condata.executeInsert(wsql);
       }
    rs.close();
    }
    catch(Exception e){
    rs.close();
    e.printStackTrace();
    }
    %><%if(bAlreadyPublished){%>
    <script language="javascript">
        alert("此企业信息已经发布!!");
        history.back();
    </script>我这个还有点问题,当我发布相同信息室,提示此企业信息已发布,但是数据库访问的连接没有关闭,这是为什么啊,是history.back()的原因么
      

  7.   

    你添加新信息时。
    你的mySql语句有问题,insert into 表 values……
    你确定你的dd是true。你alert一下。
    如果真能是像你说的是true是一定会进去的
      

  8.   

    建议debug,没有更好的办法了,代码越多越是
      

  9.   

    <%@ page contentType="text/html; charset=gb2312" %>
    <%@ page import="java.sql.*"%>
    <jsp:useBean id="condata" scope="page" class="wuliu.conndata"/>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">我jsp上都是这样了,还要怎么弄呢,现在只是数据库查询回来的信息是乱码,
      

  10.   

    已经是字符集问题了,看你的Mysql是是么编码? utf-8?
      

  11.   

    我这个还有点问题,当我发布相同信息室,提示此企业信息已发布,但是数据库访问的连接没有关闭,这是为什么啊,是history.back()的原因么
    jsp的处理与js无关从你的<%%>代码未见到关闭连接的语句,只有rs.close()history.go(-1)不可能先于你的jsp数据库操作代码执行的 前者是jsp全部处理完毕发到客户端才可能执行
      

  12.   

    @我这个还有点问题,当我发布相同信息室,提示此企业信息已发布,但是数据库访问的连接没有关闭,这是为什么啊,是history.back()的原因么1、和JS代码没关系。你可以关注于JSP中的Scriptlet代码。JS代码是页面回浏览器后执行的,执行前在服务器上JSP代码早就执行完了。2、你看看是不是发布不同的信息也未关闭数据库连接。若关了,则两种情形的差别就是try块和catch块不同路线上的执行差别,考量这些代码就行了。3、关ResultSet不会导致连接自动关闭,连接控制的代码你尚未提供。
      

  13.   

    这一部分:
    if(dd){
         %>
        <script language="javascript">
        alert("企业信息发布成功!!");
        </script>
         <%
         response.sendRedirect("/logistics/Enterprise/enterprise.jsp");
         }
    修改成如下:
    if(dd){
        out.print("alert('企业信息发布成功!!');location.href='/logistics/Enterprise/enterprise.jsp'");
            }
    你再试试……
      

  14.   

     用Firefox的debug下断点 看进了javascript没