两个字母搞定J2EE通用分页标签(三)

作者:张纪豪(转载请注明出处)


(四)、控制层取得分页数据

在上一篇中强调本主题要阐述的是分页,不搞那么复杂,所以省掉服务层代码,我们直接在控制层的Action里调用Dao层组件。

工作之前,我们先在com.zhangjihao.util包下做一个工具类,用来从请求参数中得到页码值:

WebUtil.java

package com.zhangjihao.util;

import javax.servlet.http.HttpServletRequest;

public class WebUtil {

	//根据指定参数在Request对象得到整数值,如果为空或出错则返回给定的默认值
	public static int getIntByRequestParament(HttpServletRequest request, String param, int defaultvalue){
		try {
			return Integer.parseInt(request.getParameter(param));
		} catch (Exception e) {
			return defaultvalue;
		}
	}
}

    
开始在com.zhangjihao.web.struts.action建立两个Action:

BookAction.java

package com.zhangjihao.web.struts.action;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.stereotype.Controller;

import com.zhangjihao.bean.Page;
import com.zhangjihao.dao.BookDao;
import com.zhangjihao.util.WebUtil;

@Controller("/listBook")  //注意这个注解,它的作用是将这个action交给Spring管理,实现SSH集成
public class BookAction extends Action {

	//注入一个bookDao数据访问组件
	@Resource BookDao bookDao;
	
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		//从request对象里得到页码信息,如果为空或不是数值都返回1
		int pageindex = WebUtil.getIntByRequestParament(request, "pageindex", 1);
		
		//构造一个page对象,第1个参数是当前页,第2个参数是该页最大记录数,第3个是页码上的连接地址
		Page page = new Page(pageindex,20,"listBook.do");
		
		//将page对象送到数据访问组件层,返回当前页的数据借助request作用域送到视图层,
		//当然也可以封装到page对象里
		request.setAttribute("books", bookDao.listAllBooks(page));
		
		//出来后的page对象已经有了总记录数了,自然就有了页码信息
		request.setAttribute("page", page);
		
		return mapping.findForward("list");
	}

}
NewsAction.java
package com.zhangjihao.web.struts.action;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.stereotype.Controller;

import com.zhangjihao.bean.Page;
import com.zhangjihao.dao.NewsDao;
import com.zhangjihao.util.WebUtil;

@Controller("/listNews")   //注意这个注解,它的作用是将这个action交给Spring管理,实现SSH集成
public class NewsAction extends Action {
	
	//注入一个newsDao数据访问组件
	@Resource NewsDao newsDao;
	
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		//从request对象里得到页码信息,如果为空或不是数值都返回1
		int pageindex = WebUtil.getIntByRequestParament(request, "pageindex", 1);
		
		//构造一个page对象,第1个参数是当前页,第2个参数是该页最大记录数,第3个是页码上的连接地址
		Page page = new Page(pageindex,20,"listNews.do");
		
		//将page对象送到数据访问组件层,返回当前页的数据借助request作用域送到视图层,
		//当然也可以封装到page对象里
		request.setAttribute("newses", newsDao.listAllNews(page));
		
		//出来后的page对象已经有了总记录数了,自然就有了页码信息
		request.setAttribute("page", page);
		
		return mapping.findForward("list");
		}
}

再到struts-config.xml文件配置两个action

 
后面进行视图层内容,也是最重要的内容
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <form-beans> </form-beans> <global-forwards> <forward name="message" path="/WEB-INF/page/public/message.jsp"/> </global-forwards> <action-mappings> <!-- BookAction,注意这个path中的值与Action类名上的注解内容一致--> <action path="/listBook" validate="false" scope="request"> <forward name="list" path="/WEB-INF/page/public/list_book.jsp"/> </action> <!-- NewsAction,大家发现是不是没有写type属性,交给Spring管理后就可以省掉了--> <action path="/listNews" validate="false" scope="request"> <forward name="list" path="/WEB-INF/page/public/list_news.jsp"/> </action> </action-mappings> <!-- 将控制器交给Spring,也意思着编写的Action都由Spring管理--> <controller> <set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor"/> </controller> <message-resources parameter="ApplicationResources" /> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/> </plug-in> </struts-config>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值