`

[转]Struts2分面实现示例

 
阅读更多

摘要: http://java.chinaitlab.com/List_213_11.html

 

    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页面的分页判断可以写为:
    
    <p>
    
    <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>
    
    </p>
    
    当然可以在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"
    
    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">
    
    <h3>
    
    省市操作
    
    </h3>
    
    <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}">

 

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">
    
    <h3>
    
    省市操作
    
    </h3>
    
    <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}">

 

 

分享到:
评论

相关推荐

    Struts2 UI标签代码示例

    Struts2是一个强大的MVC框架,它为Java开发者提供了丰富的功能来构建Web应用程序。在Struts2中,UI标签库是其一大特色,它简化了视图层的开发,使得开发者能够更专注于业务逻辑,而不是繁琐的HTML代码。本篇文章将...

    struts2+ireport+jasperreport报表设计简单示例

    使用ireport和struts2进行报表设计的简单示例,生成普通报表和饼图、柱状图。java工程的lib里包含丰富的jar包,且很多都是从各个网站下载的最新版本,文件夹内还包含一些ireport和jasperreport文档,适合刚入门学习...

    struts2枚举值、日期值转换示例

    在这个“struts2枚举值、日期值转换示例”中,我们将关注如何自定义枚举值和日期值的转换器。 首先,枚举(Enum)在Java中是一种特殊的类,用于表示有限集合中的固定数量的值。在Struts2中,如果Action类的属性是...

    一个基于Ext+Struts2+spring实现的级联分页示例程序源码例子

    "一个基于Ext+Struts2+Spring实现的级联分页示例程序源码例子"是一个很好的学习资源,它揭示了如何利用这三大框架来构建高效、灵活的Web应用。下面将详细解析这个项目的知识点。 首先,Ext是一个强大的JavaScript库...

    struts-2.3.24简单示例以及相关jar包

    包括一个最简单的struts2入门示例,导入项目即可运行。 还有struts-2.3.24-all.zip即所有jar包,官方示例,官方文档。(除struts2-rest-showcase.war,struts2-showcase.war这两个文件,为了保证小于60m)

    Struts2自定义类型转换

    Struts2提供了两种实现自定义类型转换器的途径: 1. **继承`ognl.DefaultTypeConverter`**:这是原始的类型转换器接口,提供基础的类型转换功能。 2. **继承`org.apache.struts2.util.StrutsTypeConverter`**:这是...

    Struts 2 properties文件详解

    **描述**: 此属性用于指定加载Struts 2配置文件的配置文件管理器,默认值为 `org.apache.struts2.config.DefaultConfiguration`,这是一个内置的配置文件管理器。开发者若需实现自定义配置文件管理器,可通过实现`...

    jfreechart与struts2结合,实现折线图、饼状图、柱状图的页面显示

    当JFreeChart与Struts2结合时,可以实现动态生成图表并在Web页面上展示的功能。下面将详细介绍这两个工具以及它们如何协同工作。 首先,JFreeChart是一个强大的图表库,它支持多种图表类型,如折线图、饼状图、柱状...

    Struts2框架笔记

    #### Struts2分模块开发 为了更好地组织和管理大型项目的逻辑,Struts2支持分模块开发。可以通过设置`&lt;package&gt;`标签的`namespace`属性来实现不同模块之间的隔离。 #### Action编写方式 1. **普通类**: 不继承任何...

    struts2实现单个和多个文件上传示例代码

    在本示例中,我们将深入探讨如何利用Struts2来实现单个和多个文件的上传功能。 首先,我们需要理解文件上传的基本原理。在web应用中,文件上传通常涉及到将客户端计算机上的文件通过HTTP协议传输到服务器端。Struts...

    struts2学习笔记黑马程序员

    3. **Struts2 JSON插件**:通过引入Struts2的JSON插件,可以更便捷地实现Ajax功能。 - **配置文件**:在Struts2配置文件中指定扩展名为`json-default`的包,以启用JSON处理功能。 - **Action返回类型**:设置...

    Struts2标签使用及API文档

    `struts2.0_zh.chm`是Struts2的中文帮助文档,包含了所有标签的详细解释、属性说明以及使用示例。通过查阅API文档,开发者可以了解每个标签的功能、属性设置以及如何与后台Action进行交互。 4. **标签详解文档** ...

    struts2类型转换深入总结

    开发者可以通过实现`org.apache.struts2.util.TypeConverter`接口并注册到Struts2配置中来自定义类型转换。这在处理框架无法默认处理的复杂类型或自定义类型时非常有用。例如,如果需要将日期字符串转换为自定义的`...

    struts系列 struts 2

    我们创建一个名为HelloWorldAction的类,实现execute方法,当用户发送请求时,Struts 2会调用这个方法执行业务逻辑。 4. **结果类型(Result)**:结果类型定义了Action执行后的跳转方式。在Hello World示例中,...

    Struts的权限实现

    ### Struts的权限实现 #### 一、概念介绍 **1. 资源(Resource)** - **定义**: 在Struts框架中,资源是指系统内可以被操作的对象或功能,例如用户注册、用户信息修改等。 - **结构**: 资源在系统内部以树状结构...

    Struts2+Hibernate写的下拉菜单级联两级分类

    总的来说,实现“Struts2+Hibernate写的下拉菜单级联两级分类”需要对这两个框架有深入的理解,同时也涉及到前端交互和数据库操作。这是一个典型的前后端协作的例子,展示了如何利用Java Web技术解决实际问题。在...

    Struts2小程序源代码

    这通常意味着包含了一系列小型的、独立的示例程序,这些程序分别展示了Struts2框架的不同组件和功能。通过这些小程序,开发者可以直观地了解如何在实际项目中应用Struts2,例如如何创建Action、配置Namespace等。 1...

    tab标签页和struts2登陆.rar

    在提供的压缩包文件中,`o200952016530.rar`、`testtab.rar`和`struts2用户登录.zip`可能包含了具体实现Tab标签页和Struts2登录功能的源代码、资源文件和示例项目。解压后,你可以研究其中的HTML模板、Java类、配置...

    struts2官方例子7-表单验证 xml形式的验证

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。在Struts2中,表单验证是非常重要的一个环节,它确保了用户输入的数据符合预设的规则,从而保证了应用程序的数据质量和安全性。本示例...

    struts2+spring3+mybatis整合示例

    真是不好意思,后来发现Dao层注入是在接口,接口实现类完全没必要要了,但是...SSM(struts2+spring3+mybatis)整合示例, 在网上实在找不到现成的,用了2天时间折腾了一个,保证能用....看在这么辛苦的份上,多收点分 嘿嘿....

Global site tag (gtag.js) - Google Analytics