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

📄 newslistaction.java

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

package action.newspress;

import dbservice.hibernate.HibernateService;
import dbservice.hibernate.PageCounter;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.newspress.hibernate.Newspress;
import model.newspress.hibernate.Newstype;
import model.newspress.hibernate.NewstypeUtil;

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 NewsListAction 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请求中得到参数type的值,即当前新闻类型信息的编号
        String type = request.getParameter("type");
        // 从用户Http请求中得到参数page的值,即当前数据库游标移动方式
        String page = request.getParameter("page");
        
        // 获得HttpSession缓存
        HttpSession httpSession = request.getSession();
        // 从缓存中获得计数器
        PageCounter pageCounter = (PageCounter)httpSession.getAttribute("newspagecounter");
        if ( pageCounter == null) {
            pageCounter = new PageCounter();
            httpSession.setAttribute("newspagecounter", pageCounter);
        }

        // 设置页面最大允许显示的信息数量;也即访问数据库时,游标的最大活动范围
        pageCounter.setMaxSize(6);
        int rows = HibernateService.getRows("select count(*) from Newspress where type=" + type);
        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()。
        // 在这个限制条件下,统计新闻信息的总数量
        List list = HibernateService.execQuery("from Newspress where type=" + type, pageCounter.getFirstRow(), pageCounter.getMaxSize());
        if (list == null) {
            return new ActionForward(mapping.getInput());
        }
        // 将统计出的文档信息存入缓存
        httpSession.setAttribute("newspresslist", list);
        
        // 根据新闻类型编号,从数据库读取对应的类型信息
        Newstype newstype = NewstypeUtil.find(type);
        if (newstype == null) {
            return new ActionForward(mapping.getInput());
        }
        // 将新闻类型信息存入缓存
        httpSession.setAttribute("newstype", newstype);
        
        return mapping.findForward(SUCCESS);
    }
}

⌨️ 快捷键说明

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