⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 topicmainaction.java

📁 J2EE电子商务系统开发从入门到精通---基于Struts和Hibernate技术实现
💻 JAVA
字号:
/*
 * TopicInitAction.java
 *
 * Created on 2006年6月14日, 上午2:37
 */

package action.bbs;

import dbservice.hibernate.HibernateService;
import dbservice.hibernate.PageCounter;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.bbs.hibernate.*;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
/**
 *
 * @author Administrator
 * @version
 */

public class TopicMainAction extends Action {
    
    /* forward name="success" path="" */
    private final static String SUCCESS = "success";
    
    /**
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    public ActionForward execute(ActionMapping mapping, ActionForm  form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        // 从用户Http请求中得到参数id的值,即当前的主题空间的编号
        String id = request.getParameter("id");
        // 从用户Http请求中得到参数page的值,即当前数据库游标移动方式
        String page = request.getParameter("page");
        
        // 获得HttpSession缓存
        HttpSession httpSession = request.getSession();
        // 从缓存中获得计数器
        PageCounter pageCounter = (PageCounter)httpSession.getAttribute("articlepagecounter");
        if (pageCounter == null) {
            pageCounter = new PageCounter();
            httpSession.setAttribute("articlepagecounter", pageCounter);
        }
        
        // 设置页面最大允许显示的信息数量;也即访问数据库时,游标的最大活动范围
        pageCounter.setMaxSize(20);
        // 统计编号为id的主题空间中的文章数量
        int rows = HibernateService.getRows("select count(*) from Article article where article.topic.id=" + id);
        pageCounter.setTotalRows(rows);
        int pages = rows % pageCounter.getMaxSize();
        pages = pages == 0 ? rows/pageCounter.getMaxSize() : rows/pageCounter.getMaxSize() + 1;
        pageCounter.setTotalPages(pages);
        pageCounter.counter(page);
        
        // 数据库游标从pageCounter.getFirstRow()开始, 活动范围为pageCounter.getMaxSize()。
        // 在这个限制条件下,统计编号为id的主题空间中的文章数量
        List articleList = HibernateService.execQuery("from Article article where article.topic.id=" + id, pageCounter.getFirstRow(), pageCounter.getMaxSize());
        if (articleList == null) {
            return new ActionForward(mapping.getInput());
        }
        
        // 读取数据库中编号为id的主题空间信息
        Topic topic = TopicUtil.find(id);
        if (topic == null) {
            return new ActionForward(mapping.getInput());
        }
        
        List responseCountList = new ArrayList();
        for (int i=0; i<articleList.size(); i++) {
            String articleId = String.valueOf(((Article)articleList.get(i)).getId());
            // 统计编号为articleId的文章的回复数量
            int count = HibernateService.getRows("select count(*) from Articleresponse response where response.article.id='" + articleId + "'");
            responseCountList.add(new Integer(count));
        }
        
        // 将主题空间信息存入缓存
        httpSession.setAttribute("topic", topic);
        // 将文章信息存入缓存
        httpSession.setAttribute("articlelist", articleList);
        // 将文章回复数量信息存入缓存
        httpSession.setAttribute("responsecountlist", responseCountList);
        
        return mapping.findForward(SUCCESS);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -