更新文章浏览次数

利用强大的jquery的AJAX功能,可以很方便的实现,由于本人js水平有限,研究了2天才搞出来,期间主要参考了关于jquery的中文手册等资料,所以感觉掌握这些基本知识后做起东西来就随心所欲了,好了进入正题!
关于ASP.NET动转静技术这里就不讨论了,网上有很多资料。现在是生成静态页后如何更新文章浏览次数
这里需要掌握jquery ajax相关知识,

jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。
$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该对象,但特殊情况下可用于手动终止请求。

注意: 如果你指定了 dataType 选项,请确保服务器返回正确的 MIME 信息,(如 xml 返回 "text/xml")。错误的 MIME 类型可能导致不可预知的错误。见 Specifying the Data Type for AJAX Requests 。

$.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息。详细参数选项见下。

jQuery 1.2 中,您可以跨域加载 JSON 数据,使用时需将数据类型设置为 JSONP。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。数据类型设置为 "jsonp" 时,jQuery 将自动调用回调函数。

这里我采用$get()方式,简单的,如果要实现错误处理需要采用高级的$ajax方式;
首先在页面要加载jquery.js(可到官网下载,最新版本)
<script language="javascript" type="text/javascript" src="../js/jquery.js"></script>

另外我生成的每篇文章是以id编号来命名的 要知道浏览的是那篇文章只需要传递文章编号就可以了
实际我们需要一个函数来处理
<script language="javascript" type="text/javascript" src="../js/GetData.js?id=12"></script>
我们通过这样的方式把文章编号传进去 做模板的时候这样也很方便替换。现在是js函数怎么接受这个id=12的参数呢?
参考网上,找到一个非常好的方法,这里我就直接贴源码了哈!
//读取文章浏览次数

 

好了,至于以get方式传递参数到后台处理就很简单 以上代码已经包含,我就不多解释了。

下面是后台处理程序 ashx

来自:http://www.cnblogs.com/mygood/articles/1234427.html

要根据IP统计文章浏览量,需要在Java web应用中使用Servlet技术和数据库技术。 以下是一个简单的示例: 1. 在MySQL数据库中创建一张表,用于存储文章浏览量统计信息。表结构如下: ```sql CREATE TABLE article_view_count ( article_id INT NOT NULL, ip VARCHAR(15) NOT NULL, view_count INT DEFAULT 0, PRIMARY KEY (article_id, ip) ); ``` 2. 在Java web项目中编写一个Servlet,用于处理文章浏览请求。在Servlet中,可以通过request对象获取客户端的IP地址,并将IP地址和文章ID存入数据库中。代码示例: ```java @WebServlet("/article") public class ArticleServlet extends HttpServlet { private static final String DB_URL = "jdbc:mysql://localhost:3306/mydb"; private static final String DB_USER = "root"; private static final String DB_PASSWORD = "password"; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取文章ID int articleId = Integer.parseInt(request.getParameter("id")); // 获取客户端IP String ip = request.getRemoteAddr(); // 将IP和文章ID存入数据库中 try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD)) { // 查询是否已经存在该IP对应的浏览记录 PreparedStatement ps = conn.prepareStatement( "SELECT * FROM article_view_count WHERE article_id = ? AND ip = ?"); ps.setInt(1, articleId); ps.setString(2, ip); ResultSet rs = ps.executeQuery(); if (rs.next()) { // 如果已经存在该IP对应的浏览记录,则更新浏览次数 int viewCount = rs.getInt("view_count") + 1; ps = conn.prepareStatement( "UPDATE article_view_count SET view_count = ? WHERE article_id = ? AND ip = ?"); ps.setInt(1, viewCount); ps.setInt(2, articleId); ps.setString(3, ip); ps.executeUpdate(); } else { // 如果不存在该IP对应的浏览记录,则插入新的记录 ps = conn.prepareStatement( "INSERT INTO article_view_count (article_id, ip, view_count) VALUES (?, ?, 1)"); ps.setInt(1, articleId); ps.setString(2, ip); ps.executeUpdate(); } } catch (SQLException e) { e.printStackTrace(); } // 返回文章内容 // ... } } ``` 3. 在文章页面中调用上述Servlet,获取文章浏览量的信息,并显示在页面上。代码示例: ```java <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="java.sql.*,java.util.*" %> <% int articleId = Integer.parseInt(request.getParameter("id")); String ip = request.getRemoteAddr(); // 查询文章浏览量 int viewCount = 0; try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD)) { PreparedStatement ps = conn.prepareStatement( "SELECT SUM(view_count) AS total_view_count FROM article_view_count WHERE article_id = ?"); ps.setInt(1, articleId); ResultSet rs = ps.executeQuery(); if (rs.next()) { viewCount = rs.getInt("total_view_count"); } } catch (SQLException e) { e.printStackTrace(); } %> <html> <head> <title>文章页面</title> </head> <body> <h1>文章标题</h1> <p>浏览量: <%= viewCount %></p> <p>文章内容...</p> </body> </html> ``` 这样,每当有用户访问文章页面时,就会根据IP地址统计文章浏览量,并将统计信息存入数据库中。在文章页面中,可以通过查询数据库获取文章的总浏览量,并显示在页面上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值