日期:2014-05-17  浏览次数:20616 次

JSP 怎么才能得到每个帖子的点击次数啊啊啊~~~~
Java code

public int getNum() {
        return num;
    }
    public void setNum(int num) {
        num++;
        this.num = num;    
    }



article.jsp
Java code

<a>href="articleDetailFlat.jsp?id=<%=a.getId()%>&num=<%=a.setNum(num) %>"><%=a.getTitle()%></a>


articelDetailFlat.jsp
Java code

<%
    String strId = request.getParameter("id");
    String num = request.getParameter("num");

    List<Article> articles = new ArrayList<Article>();
    Connection conn = DB.getConn();
    
    String sql = "select * from article where rootid = " + id + " order by pdate asc";
    String sqlNum = "update article set num = " + num + " where pid = 0";
    
    
    Statement stmt = DB.createStmt(conn);
    stmt.executeUpdate(sqlNum);
    
    ResultSet rs = DB.executeQuery(stmt, sql);
    while(rs.next()){
    Article a = new Article();
    a.initFromRs(rs);
    articles.add(a);    
    }
    
    DB.close(stmt);
    DB.close(rs);
    DB.close(conn);    
%>



我想做的是通过点击主页上某个帖子的链接的时候就让num加1,然后传到子贴里,更新数据库里pid也就是主题帖的num值。
可是好像就是第一次能够加1,后面的再怎么点都不行了额,这是什么情况。。。有别的办法么

------解决方案--------------------
在你的article.jsp中连接传过去参数的时候用错方法了吧,a.setNum(num)是一个没有返回值的方法,在get里面自增再换成get试一下
------解决方案--------------------
每点一下传一个帖子的id,然后根据这个id找到帖子。然后帖子的num属性加加就好了
------解决方案--------------------
点击进入每个帖子的时候 要调用一个方法 该方法就是用来统计次数的。
------解决方案--------------------
检查这个sql
 String sqlNum = "update article set num = " + num + " where pid = 0";
pid=0 每次的条件都是这样的吗?
num = num + 参数
------解决方案--------------------
探讨

检查这个sql
String sqlNum = "update article set num = " + num + " where pid = 0";
pid=0 每次的条件都是这样的吗?
num = num + 参数

------解决方案--------------------
<a>href="articleDetailFlat.jsp?id=<%=a.getId()%>&num=<%=a.setNum(num) %>">
~~~~~~~~~~~~~~~~~~~
你这里的setNum返回的是void
也就是说<%=a.setNum(num)%>的结果永远是空
因此你的num参数永远是0,所以永远是0+1=1

不过我觉得你的代码思路不是很清晰,为什么要在链接里把num也带上呢?只要有id就可以了,然后根据id找到数据库里的记录,然后把num字段自增就好了吧。不要把num从数据库里读出来,然后+1,然后再存回去,这样会有多线程的问题。数据库本身有多线程保护机制。

还有就是,如果用java来做web应用,还是要用servlet的,不要把业务代码放在jsp里面,jsp只是view,只要把servlet准备好的数据读出来,嵌入到html里面就好了