java学习笔记(12) —— Struts2 通过 xml /json 实现简单的业务处理

XML

1、引入dom4j-2.0.0.jar

2、引入jquery-1.8.2.js

3、新建common.js

getInfo = function(){
    $.post("getXmlAction.action",{name:$(‘#name‘).val()},function(ret,status){
        if("success" == status)
            var id = $(ret).find("id").text();
            var age = $(ret).find("age").text();
            var address = $(ret).find("address").text();
            var name = $(ret).find("name").text();

            var html = "<table>" +
                    "<tr>" +
                    "<th>" +id+age+address+name
                    "</th>"+
                    "</tr>" +
                    "</table>"
             $(‘body table:eq(0)‘).remove();
             $(‘#xmlbody‘).append(html);
    });
}

getJson = function(){    $.post("getJsonAction.action",{name:$(‘#name‘).val()},function(ret,status){        if("success" == status){                }    });}

4、新建xmlTest.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <script type="text/javascript" src="js/jquery-1.8.2.js"></script>
    <script type="text/javascript" src="scripts/common.js"></script>
  </head>

  <body id="xmlbody">
      <select id="name">
          <option value="james" selected="selected">james</option>
          <option value="currey">currey</option>
      </select>
      <input type="button" value="getInfo" onclick="getInfo();"/>
  </body>
</html>

5、修改struts.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>
    <package name="testSSH" extends="struts-default">

        <action name="getXmlAction" class="com.test.action.xml.GetXmlAction">

        </action>
    </package>
</struts>    

6、新建GetXmlAction.java

package com.test.action.xml;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.dom4j.*;
import org.dom4j.io.*;
import com.opensymphony.xwork2.ActionSupport;

public class GetXmlAction extends ActionSupport {

    private static final long serialVersionUID = 1L;

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String execute() throws Exception {
        person person1 = new person();
        person1.setAge(11);
        person1.setName("james");
        person1.setId(1);
        person1.setAddress("beijing");

        person person2 = new person();
        person2.setId(2);
        person2.setAddress("shanghai");
        person2.setAge(12);
        person2.setName("currey");

        //创建 xml 对象
        Document document = DocumentHelper.createDocument();
        //创建根元素
        Element rootElement = document.addElement("users");
        Element userElement = rootElement.addElement("user");
        Element idElement = userElement.addElement("Id");
        Element ageElement = userElement.addElement("age");
        Element addressElement = userElement.addElement("address");
        Element nameElement = userElement.addElement("name");
        if("james".equals(this.name)){
            idElement.setText(person1.getId()+"");
            ageElement.setText(person1.getAge()+"");
            addressElement.setText(person1.getAddress());
            nameElement.setText(person1.getName());
        }else{
            idElement.setText(person2.getId()+"");
            ageElement.setText(person2.getAge()+"");
            addressElement.setText(person2.getAddress());
            nameElement.setText(person2.getName());
        }
        HttpServletResponse response = ServletActionContext.getResponse();
        //设置返回类型
        response.setContentType("text/xml; charset=UTF-8 ");
        //清除浏览器缓存
        response.setHeader("Cache-Control", "no-cache");
        //定义输出流
        PrintWriter out = response.getWriter();
        //定义格式
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("utf-8");
        //定义XMLWriter 对象,将document 对象,输出到客户端
        XMLWriter writer  = new XMLWriter(out,format);
        writer.write(document);
        out.flush();
        out.close();
        return null;
    }
}

JSON

1、引入struts2-json-plugin.jar、json-lib.jar包

2、配置struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>  // 继承自json-default 而json-default继承自 struts-default
    <package name="testSSH" extends="json-default">
        //异步请求不定义返回值
        <action name="getXmlAction" class="com.test.action.xml.GetXmlAction"></action>     //异步请求返回值为SUCCESS,定义类型为json 即可,客户端到服务端序列化的过程交由core 处理
        <action name="getJsonAction" class="com.test.action.json.GetJsonAction">
            <result name="success" type="json">         //排除 属性 name MyAge【指向别名】
                <param name="excludeProperties">name,MyAge</param>          // 只解析root
                <param name="root">person</param>
            </result>
        </action>

    </package>
</struts>    

3、定义GetJsonAction.java

package com.test.action.json;

import org.apache.struts2.json.annotations.JSON;
import java.util.*;

import com.opensymphony.xwork2.ActionSupport;
import com.test.action.json.person;

public class GetJsonAction extends ActionSupport {

    private static final long serialVersionUID = 1L;

    //客户端传入的名称
    private String name;

    private int age;

    private String address; 

    private int id;

    private Date date;

    private person person = new person();

    public person getPerson() {
        return person;
    }

    public void setPerson(person person) {
        this.person = person;
    }

    @JSON(format = "yyyy-MM-dd")
    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @JSON(name = "MyAddress")
    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @JSON(serialize=false)
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    //将Action 的成员变量序列化成json对象
    @Override
    public String execute() throws Exception {
        person person1 = new person();
        person1.setAge(11);
        person1.setName("james");
        person1.setId(1);
        person1.setAddress("beijing");
        person1.setDate(new Date());

        person person2 = new person();
        person2.setId(2);
        person2.setAddress("shanghai");
        person2.setAge(12);
        person2.setName("currey");
        person2.setDate(new Date());

        if("james".equals(this.name)){
            this.id = person1.getId();
            this.age = person1.getAge();
            this.address = person1.getAddress();
            this.date = person1.getDate();
        }else{
            this.id = person2.getId();
            this.age = person2.getAge();
            this.address = person2.getAddress();
            this.date = person2.getDate();
        }

        return SUCCESS;
    }
}

4、定义person属性类

package com.test.action.json;
import java.util.*;

public class person {

    private int id;
    private String name;
    private int age;
    private String address;
    private Date date;

    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }

}

5、引入jsonText.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <script type="text/javascript" src="js/jquery-1.8.2.js"></script>
    <script type="text/javascript" src="scripts/common.js"></script>
  </head>

  <body id="xmlbody">
      <select id="name">
          <option value="james" selected="selected">james</option>
          <option value="currey">currey</option>
      </select>
      <input type="button" value="getInfo" onclick="getJson();"/>
  </body>
</html>
时间: 2024-11-01 13:40:11

java学习笔记(12) —— Struts2 通过 xml /json 实现简单的业务处理的相关文章

UI学习笔记---第十六天XML JSON解析

一.解析的基本概念 从事先规定好的格式中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据,数据方按照格式获取数据 常见解析方式XML解析JSON解析 二.XML:可扩展标记语言 XML数据格式的功能:数据交换 web服务  内容管理  用作配置文件 一对标签称为一个节点  节点可以包含节点   没有子节点叫叶子节点  只有一个根节点  节点可以相互嵌套 三.进行XML解析时使用到的SAX工具 SAX:Simple API for XML  基于事件驱动的解析方式,逐行解析数据.(

java学习笔记 (9) —— Struts2 国际化 [1]

1.Test.java package com.i18n; import java.util.Locale; public class Test1 { public static void main(String[] args) { Locale[] locales = Locale.getAvailableLocales(); for(Locale locale: locales){ System.out.println(locale.getDisplayCountry() + " : &qu

java学习笔记(11) —— Struts2与Spring的整合

1.右键 项目名称 —— MyEclipse —— Add Spring Capabilities 2.选取 Copy checked Library contents to project folder 3.建立IService 与 Service [Spring 同样是面向接口编程,因此需要引入IService] public interface ILoginService { public boolean isLogin(String username,String password);

java学习笔记 (2) —— Struts2类型转换、数据验证重要知识点

1.*Action.conversion-properties 如(point=com.test.Converter.PointListConverter) 具体操作类的配置文件 2.*Action.properties 如(invalid.fieldvalue.graduation=\u6bd5\u4e1a\u65e5\u671f\u8f93\u5165\u9519\u8bef) 具体字段错误提示信息的配置文件 2.struts.xml 中 <action name="register&

我的java学习笔记(12)关于反射(part 1)

1.能够分析类能力的程序称为反射. 2.在程序运行期间,java运行时系统始终为所有的对象维护一个被称为运行时的类型标识.这个信息跟踪着每个对象所属的类.虚拟机利用运行时类型信息选择相应的方法执行. 3.这些保存信息的类被称为Class. 4.Object类中的getClass()方法将会返回一个Class类型的实例. String s = "hello"; Class c1 = s.getClass(); 5.如果类在一个包里,包的名字也作为类名的一部分. 6.获得类名的三种方法 a

Java学习笔记12

Object类是所有类.数组.枚举类的父类,是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括 数组)都实现这个类的方法. Object类实现了以下方法: 我们来看看源码中getClass()方法: public final native Class<?> getClass(); 以上的Class<?> getClass()方法的作用是返回该对象的运行时类. 具体使用参看以下程序: class Work{ } public class Main { public

Java学习笔记-12.传递和返回对象

1.Clone()方法产生一个object,使用方法后必须产生的object赋值. Vector v2 = (Vector)v.clone(); 2.Clone()方法在object中是保护类型方法,如果自己创建的类需要使用Clone()方法的话需要自己重新写一个,并且继承Cloneable接口. package tweleve; import java.util.*; class MyObject implements Cloneable { int i; MyObject(int ii) {

java学习笔记3——java关键字

java学习笔记3——java关键字 虽然老师说不用刻意的去记忆,但是我还是在网上找到了非常详细的注解,再次收藏 关键字的类型表: 各个关键字的详细注解和实例,按首字母排序: 1.abstract abstract 关键字可以修改类或方法. abstract 类可以扩展(增加子类),但不能直接实例化. abstract 方法不在声明它的类中实现,但必须在某个子类中重写. -示例- public abstract class MyClass{ } public abstract String my

【Java学习笔记之二十六】深入理解Java匿名内部类

在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始化匿名内部类.匿名内部类使用的形参为何要为final. 一.使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 在这里我们看到使用匿名内部类我们必须要继承一个父类或者