| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1258 人关注过本帖
标题:JSP建的留言板,管理者删除留言的功能不正常
只看楼主 加入收藏
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
 问题点数:0 回复次数:5 
JSP建的留言板,管理者删除留言的功能不正常

这个留言板的删除功能就是:如果是管理员的IP,那么显示留言的页面就会有一个 删除本篇 的文字链接,到delete.jsp页面,执行删除功能,这个删除其实并不是真正的删除,只是让它在显示留言的时候不显示而已,我在数据库表中设置了一个标识字段,若是删除的就设置为 0 ,显示留言的时候只显示 标识为 1 的;可是,我发现当我测试这个删除功能的时候,(我在本机上测试,管理员的ip设置为127.0.0.1),只是在我第一次登录时输入的信息,(我这个留言板实现的不好,就是管理员也必须要输入信息才能浏览留言),我才能删除,此外,无论我怎么点击各条留言的 删除本篇 ,它都还是显示出来,删除不掉;我感觉好像是参数没有传到delete.jsp页面;我不知道问题是出在哪里,我看不出我的程序哪里有误,

下面是有关删除操作的两个页面的代码,恳请各位大侠指出问题出在哪里吧,感激不尽!!!

success.jsp(显示留言的页面)

<jsp:useBean id="gue_db" class="com.aa.struts.data.Connect" scope="session"></jsp:useBean>

<%
int intPageSize;
int intRowCount=20;
int intPageCount;
int intPage;
String userIP="127.0.0.1";
String strPage=null;
int i;
intPageSize=8;
strPage=request.getParameter("page");
if(strPage==null)
{
intPage=1;
}
else
{
intPage=Integer.parseInt(strPage);
if(intPage<1)
intPage=1;
}
%>
<%
ResultSet rs=null;
rs=gue_db.show_liuyan();

rs.last();
intRowCount=rs.getRow();
intPageCount=(intRowCount+intPageSize-1)/intPageSize;
if(intPage>intPageCount)
intPage=intPageCount;
if(intPageCount>0)
{
try
{
rs.absolute((intPage-1)*intPageSize+1);
}
catch(Exception e)
{
e.printStackTrace();
}
i=0;
while(i<intPageSize && !rs.isAfterLast())
{
%>
<TR bgcolor="black">

<td width="30%"><NOBR><strong><font color=orange>留言时间:</font></strong></NOBR></td>
<td width="70%" ><font color=orange><%=rs.getString("m_date")%></font></td>
</TR>
<TR bgcolor="">
<td width="30%" ><NOBR><strong>姓名:</strong></NOBR></td>
<td width="70%"><%=rs.getString("name")%></td>
</tr>
<TR bgcolor="black">
<TD width="30%" ><NOBR><strong><font color=orange>标题</font></strong></NOBR></TD>
<td width="70%" ><font color=orange><%=rs.getString("title")%></font></td>
</TR>
<TR >
<TD width="30%" ><NOBR><strong>内容</strong></NOBR></TD>
<TD width="70%" ></TD>
</TR>
<TR bgcolor=white><TD width="70%" colspan=2 ><%=rs.getString("content")%></TD>
</TR>
<TR bgcolor=bgcolor><td colspan=2 width="91" height=30></td></TR>
<%
if(userIP.equals(request.getRemoteAddr()))
out.println("<TR bgcolor=bgcolor><td colspan=2><a href=delete.jsp?title="+rs.getString("title")+">删除本篇</a></td></TR>");

rs.next();
i++;
}
}
%>
</TABLE>



搜索更多相关主题的帖子: 留言板 JSP 管理者 数据库 
2006-07-19 23:48
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 

我把delete.jsp copy错了!!!重新copy一次:


<%@ page language="java" import="java.sql.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" errorPage="" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html locale="true">
<head>
<META http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>delete.jsp</title>
</head>
<body>
<%
Connection conn=null;
String DBDriver="oracle.jdbc.driver.OracleDriver";
String ConnStr="jdbc:oracle:thin:@aa-cb3cda624d59:1521:Grace";
String userIP="127.0.0.1";
if(userIP.equals(request.getRemoteAddr()))
{
try{
Class.forName(DBDriver);
conn=DriverManager.getConnection(ConnStr,"system","ffffff");
Statement stm=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="update guestbook1 set mark=0 where title='"+request.getParameter("title")+"'";
stm.executeUpdate(sql);
}
catch(Exception e)
{
e.printStackTrace();
}
conn.close();
}
response.sendRedirect("success.jsp");
%>
</body>
</html:html>


com.aa.struts.data.Connect.java中的show_liuyan()代码:

public ResultSet show_liuyan()
{
try{
conn=DriverManager.getConnection(ConnStr, "system ", "ffffff ");
Statement stm=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql= "select * from guestbook1 where mark=1 ";
rs=stm.executeQuery(sql);

}
catch(Exception e)
{
e.printStackTrace();
}
return rs;
}

我设置删除的where条件是让的数据库表中的字段全都不能为空,而且当用户名和密码相同时,认为是同一个人,所以,数据库表中的字段是有重复内容的,我觉得只要title内容相同的,那么就应该不被显示,但是我调试了N次,它连一条都不删除。

大侠们看是我的代码的问题,还是其它的什么问题,谢谢拉!!!

2006-07-19 23:49
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
看了下你的代码,撇开你的问题,说说一些你犯下的不可饶恕的罪行。

public ResultSet show_liuyan()
{
try{
conn=DriverManager.getConnection(ConnStr, "system ", "ffffff ");
Statement stm=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql= "select * from guestbook1 where mark=1 ";
rs=stm.executeQuery(sql);

}
catch(Exception e)
{
e.printStackTrace();
}
return rs;
}

看看这段代码:
1.为了一个数据库操作就连接一次数据库,重新进行身份验证.....汗一下,你没想过这样的效率是非常低下的么?
2.数据库连接使用完后,竟然没有看见释放连接的代码.....你的机器内存一定很大了
3.异常捕获没有进行处理。
很多人都是像你这么写异常的,这样写异常的人,我很不客气的说,根本就不知道异常的作用。异常,就是程序在运行的过程中出现了程序所不能自行解决的错误。比如说数据库连接失败等。这些错误很可能是很多种原因造成的。比如说你的数据库进程挂了,或者说你的帐号或者密码不对等等。这个时候才必须抛出一个异常,因为程序根本无法知道到底是什么原因导致了获取字段的失败,所以也不知道应该如何进行修正和处理,这个时候如果让程序继续运行下去,很可能会导致不可预知的后果,与其让它危险的存在,那么还不如让这个程序自杀。这个时候就必须throw一个异常。
你这个程序,仅仅简单了catch了一个Exception的异常,然而却不对这个异常进行任何处理,只是简单的打印出来,我的天,我还不如不catch让JVM捕获这个异常终止这个不知道将来会发生什么的程序好呢。

淘宝杜琨
2006-07-20 18:12
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
String sql="update guestbook1 set mark=0 where title='"+request.getParameter("title")+"'";
你这句不是删除数据的SQL语句,应该是
String sql = "delete from guestbook1 where title = '" + request.getParameter("title") + "'";

淘宝杜琨
2006-07-20 18:14
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
1.为了一个数据库操作就连接一次数据库,重新进行身份验证.....汗一下,你没想过这样的效率是非常低下的么?
----------
其实,我也觉得挺罗嗦的,可是不知道该怎么做,你能大致说一下要怎么做才能既对数据库操作又效率高?


2。你这个程序,仅仅简单了catch了一个Exception的异常,然而却不对这个异常进行任何处理,只是简单的打印出来,
-----------
怎么样才叫处理呢,我写成:
catch(Exception e)
{
System.err.print("executeUpdate(sql):"+e.getMessage());
}
叫不叫处理呢?

谢谢你的指教。
2006-07-20 22:07
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
1.1你可以使用数据库连接池,具体怎么弄你可以上网查,因为比较难简单描述。
1.2你也可以使用spring + hibernate,我现在就用这个组合,非常完美。不过学习成本比较高。
所以还是推荐你用数据库连接池好了。

2.所谓处理异常,不是说简单的把异常打印出来就完事了的
你可以看看网络上很流行的说教
http://java.

淘宝杜琨
2006-07-21 05:59
快速回复:JSP建的留言板,管理者删除留言的功能不正常
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040406 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved