温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Struts2分页的实现方法

发布时间:2021-08-05 20:15:00 来源:亿速云 阅读:115 作者:chen 栏目:编程语言

本篇内容主要讲解“Struts2分页的实现方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Struts2分页的实现方法”吧!

1.介绍

(1)Struts2相当于是servlet,和servelt不同的是当提交到struts.xml中之后,通过aciton标签就可以直接调用想用的方法,减少了代码量。

(2)在ActionSuport中set方法是注入,即是set方法是获取jsp页面中传过来的值,get方法是是向jsp页面发送值,值得一提的是有了get和set方法之后就取代了servlet中的

request.getParameter("");和重定向的操作。在这里要重点理解get和set方法的使用。

(3)在struts2分页中set和set方法更能突出它的用法。

2.下面来看实例把!

(1)首先访问这个页面时就应该查找出nowPage为1信息,所以在action中要判断nowPage是否为空。

在jsp页面的分页判断可以写为:

<div>                    <a href="${pageContext.request.contextPath}/findAllPro.action?nowPage=1">首页</a>                    <a href="${pageContext.request.contextPath}/findAllPro.action?nowPage=${nowPage-1<=1?1:nowPage-1}">上一页</a>                    <a href="${pageContext.request.contextPath}/findAllPro.action?nowPage=${nowPage+1>=page.countPage?page.countPage:nowPage+1}">下一页</a>                    <a href="${pageContext.request.contextPath}/findAllPro.action?nowPage=${page.countPage}">末页</a>                </div>

当然可以在Page中封装好nowPage的判断,在这里主要介绍action。

当点击下一页的时候会连接到findAllPro.action这个struts.xml中的action,

struts.xml 文件为:

<?xml version="1.0" encoding="GBK"?>    <!DOCTYPE struts PUBLIC        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"        "http://struts.apache.org/dtds/struts-2.3.dtd">    <struts>        <package name="pro" namespace="/" extends="struts-default">            <action name="findAllPro" class="cn.csdn.hr.action.ProvinceAction" method="findAll">                <result>./list.jsp</result>            </action>        </package>    </struts>

从struts.xml中可以看出findAllPro连接到的是cn.csdn.hr.action.ProvinceAction下的findAll方法,我们去找ProvinceAction,为:

// 分页查询    public String findAll() {         if ("".equals(nowPage) || nowPage == null) {            this.nowPage = 1;        }        System.out.println(nowPage + "==============");         page = new PageWhere("Province", nowPage, "where 1<2");        // page= page.getDatas();        return SUCCESS;    }

因为要返回到jsp页面,所以要写一个get方法来把page传到jsp页面中:

// 得到page的值 ,并把得到的值放到page中,page可以获取所有的东西    private PageWhere page;     public PageWhere getPage() {        return page;    }

这样就把当前页的信息传到了jsp中,但是在分页的时候因为nowPage是jsp和struts2来回传的值,并且是一个变量,所以设置一个属性nowPage,生成get和set方法,来获取nowPage和把修改的nowPage传到jsp中,整个ProvinceAction页面为:

package cn.csdn.hr.action;        import cn.csdn.hr.HibernateUtil.PageWhere;    import cn.csdn.hr.domain.Province;    import cn.csdn.hr.service.ProvinceService;    import cn.csdn.hr.service.ProvinceServiceImpl;        import com.opensymphony.xwork2.ActionSupport;        public class ProvinceAction extends ActionSupport {            /**         * get方法是向jsp页面中传值 set方法向获取jsp页面的值         */        private static final long serialVersionUID = 1L;            private ProvinceService provinceService = new ProvinceServiceImpl();            private Integer id;        private String name;            public ProvinceAction() {            super();        }            // 通过页面注入进来的。id的名称一定要和表单中 的一致        public void setId(Integer id) {            this.id = id;        }            public void setName(String name) {            this.name = name;        }            // 接收传过来的nowPage        private Integer nowPage;            public void setNowPage(Integer nowPage) {            this.nowPage = nowPage;        }            public Integer getNowPage() {            return nowPage;        }            // 得到page的值 ,并把得到的值放到page中,page可以获取所有的东西        private PageWhere page;            public PageWhere getPage() {            return page;        }            // 分页查询        public String findAll() {                if ("".equals(nowPage) || nowPage == null) {                this.nowPage = 1;            }            System.out.println(nowPage + "==============");                page = new PageWhere("Province", nowPage, "where 1<2");            // page= page.getDatas();            return SUCCESS;        }    }

整个jsp页面为:

<body>        <div align="center">            <h4>                省市操作            </h4>            <table border="1px" cellpadding="0px" cellspacing="0px" width="300px">                <tr>                    <th>                        编号                    </th>                    <th>                        省名                    </th>                    <th>                        操作                    </th>                </tr>                <tbody>                    <c:forEach items="${page.datas}" var="entity">                        <tr align="center">                            <td>                                ${entity.id}                            </td>                            <td>                                ${entity.name}                            </td>                            <td>                                                                <a href="${pageContext.request.contextPath}/insert.jsp">添加</a>                                <a href="${pageContext.request.contextPath}/delPro.action?id=${entity.id}">删除</a>                                <a href="${pageContext.request.contextPath}/updatePro.action?id=${entity.id}">编辑</a>                            </td>                        </tr>                    </c:forEach>                </tbody>            </table>            <br/>            <div>                <a href="${pageContext.request.contextPath}/findAllPro.action?nowPage=1">首页</a>                <a href="${pageContext.request.contextPath}/findAllPro.action?nowPage=${nowPage-1<=1?1:nowPage-1}">上一页</a>                <a href="${pageContext.request.contextPath}/findAllPro.action?nowPage=${nowPage+1>=page.countPage?page.countPage:nowPage+1}">下一页</a>                <a href="${pageContext.request.contextPath}/findAllPro.action?nowPage=${page.countPage}">末页</a>            </div>        </div>    </body>

以上数据和从hibernate配置的数据库中读取出来的,分页学会了,这个就是小case了。主要看其中的注释就ok了。但是在写更新的时候需要注意:

更新需要在更新完之后要在内部跳转到查询的页面,所以结果应写为:

<result type="chain">findAllPro</result>

记住要写type、类型。

到此,相信大家对“Struts2分页的实现方法”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI