`
huangshihang
  • 浏览: 12260 次
社区版块
存档分类
最新评论

Web开发:分页技术的实现(中)——Struts2+json

阅读更多

        在前端页面通过异步发送请求到后台时,后台接受请求处理后返回,在struts2中前台的请求发送到后台后交由相应的action来处理,所以ajax请求的url形式类似于“/ActionClass.action?params=x&...”

(1)环境:首先要在工程中添加依赖的包,后台需要json数据格式的支持,而且struts2需要能够支持json,所以在maven工程的pom.xml文件中加入以下配置:

    <dependency>
      <groupId>net.sf.json-lib</groupId>
      <artifactId>json-lib</artifactId>
      <version>2.3</version>
      <classifier>jdk15</classifier>
    </dependency>
    <dependency>
      <groupId>org.apache.struts</groupId>
      <artifactId>struts2-json-plugin</artifactId>
      <version>2.3.24</version>
    </dependency>

 (2)struts2的配置文件:

<package name="front" namespace="/" extends="json-default">     //支持json
    <action name="listContractsAjaxAction" class="contractAjaxAction" method="listContracts">
            <result type="json">            //返回json格式数据,不需要加返回后的页面
                <param name="root">contracts</param>
            </result>
        </action>
 </package>

 (3)Action类:

package com.mz.action;

import com.mz.service.IContractService;
import com.opensymphony.xwork2.ActionSupport;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.struts2.ServletActionContext;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;

/**
 * Created by hadoop on 15-9-29.
 */
public class ContractAjaxAction extends ActionSupport {
    private JSONArray contracts;      //返回的json数据
    private JSONObject countJson;

    private IContractService contractService;   //spring的注入

    public JSONArray getContracts() {     //数据的get和set方法
        return contracts;
    }

    public void setContracts(JSONArray contracts) {
        this.contracts = contracts;
    }

    public JSONObject getCountJson() {
        return countJson;
    }

    public void setCountJson(JSONObject countJson) {
        this.countJson = countJson;
    }

    public void setContractService(IContractService contractService) {
        this.contractService = contractService;
    }

    public String countContracts(){
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpServletResponse response = ServletActionContext.getResponse();
        try {
            request.setCharacterEncoding("UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        response.setContentType("text/html;charset=utf-8");
        String chars = request.getParameter("chars");
        int count = contractService.getContractsSize(chars);
        countJson = new JSONObject();
        countJson.put("count", count);
        return SUCCESS;
    }

    public String listContracts(){           //请求页面当前页内容
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpServletResponse response = ServletActionContext.getResponse();
        try {
            request.setCharacterEncoding("UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        response.setContentType("text/html;charset=utf-8");
        Integer pageIndex = Integer.valueOf(request.getParameter("pageIndex"));
        Integer pageSize = Integer.valueOf(request.getParameter("pageSize"));
        String chars = request.getParameter("chars");  //当前页数和页大小
        contracts = new JSONArray();
        List<Map<String, Object>> cbs = contractService.listContracts(pageIndex,pageSize,chars);//调用后台逻辑
        for(Map<String, Object> cb : cbs) {
            contracts.add(JSONObject.fromObject(cb));
        }
        return SUCCESS;
    }

}

        (action对应的类在spring的配置文件中设置)         

         总结:

        前端ajax请求指定action,在struts2文件中根据action名对应的类及方法交由对应的方法处理,返回结果在配置文件中说明格式及名称,该名称是action类中属性,并需要定义set和get方法,这样返回的时候struts2才能将对应的属性的值按照说明的格式返回给前端。

        相关内容

(1)Web开发:分页技术的实现(上)——jBootstrapPage.js+ajax

(2)Web开发:分页技术的实现(下)——Hibernate查询

(3)Web开发:Struts2 Spring Hibernate整合(一)——Struts2的使用

(4)Web开发:Struts2 Spring Hibernate整合(二)——Spring的使用

(5)Web开发:Struts2 Spring Hibernate整合(三)上——Hibernate的使用

(6)Web开发:Struts2 Spring Hibernate整合(三)下——Hibernate的使用

分享到:
评论

相关推荐

    jqgrid+struts2实现的增删改查

    在本项目中,jqGrid 与 Struts2 结合,实现了Web应用中的核心功能——增删改查。以下是关键步骤: 1. **配置 Struts2**:首先,需要在项目的 `struts.xml` 配置文件中设置Action类及其对应的URL映射,以及指定使用...

    基于JQuery的datagrid分页数据实现

    1. **SSH2框架**:SSH2是Java Web开发中常用的三大框架组合,包括Struts2、Spring和Hibernate。Struts2负责控制层,处理HTTP请求并转发到相应的业务逻辑;Spring作为整体的应用容器,管理对象依赖关系以及事务控制;...

    extjs+struts2的一个套路模式

    在IT领域,特别是Web开发中,Struts2与ExtJS的结合是一种常见且高效的技术搭配。Struts2作为后端框架,负责业务逻辑处理及数据交互;而ExtJS作为前端框架,专注于用户界面的构建与优化。两者结合,能够实现前后端...

    struts2 增删改查

    在"struts2 增删改查"的主题中,我们主要关注的是如何使用Struts2来实现基本的数据操作——增(Add)、删(Delete)、改(Modify)和查(Query)功能,这些是任何数据驱动应用的核心部分。以下是对这个主题的详细...

    Structs 2 Action 与 JQuery Datatable 的整合

    标题中的“Structs 2 Action”指的是Apache Struts 2框架的一个重要概念——Action,它在Web应用开发中起到了核心作用。Struts 2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架,用于简化并管理...

    ssh+jqGrid的项目

    首先,SSH(Struts2 + Spring + Hibernate)是Java Web开发中的经典框架组合。Struts2作为MVC(模型-视图-控制器)架构的一部分,负责处理HTTP请求,维护业务逻辑和视图之间的分离。Spring框架则提供了依赖注入(DI...

    SS2H框架模板

    SSH是Java Web开发中常用的三大框架——Spring、Struts和Hibernate的组合。Spring负责管理对象和依赖注入,提供事务控制等功能;Struts则处理MVC(模型-视图-控制器)架构,负责请求分发和业务逻辑展示;Hibernate...

    底层框架搭建

    本主题主要关注的是两个流行的Java开发框架——Hibernate和Struts2,以及用于前端展示的JqGrid。这些技术的结合使用,可以帮助开发者快速构建出功能完善的Web应用程序。 Hibernate是一个强大的对象关系映射(ORM)...

    jqgrid+三大框架

    【jqgrid+三大框架】是将前端数据展示组件jqGrid与经典的Java后端开发框架——Hibernate、Struts和Spring相结合的应用实例。这个项目基于MyEclipse2014开发环境,主要目标是实现数据的查询功能并通过jqGrid进行前端...

    全套Java、Android、HTML5前端视频教程

    #### Java教程知识点 **1.... - **20天横扫Java基础(课堂实录)** - Java语言基础:变量、数据类型、...通过这些教程的学习,不仅可以掌握Java编程的基础知识,还能深入了解Web开发以及企业级应用开发的相关技术。

    JAVA上百实例源码以及开源项目源代码

    Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...

Global site tag (gtag.js) - Google Analytics