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>
java学习笔记(12) —— Struts2 通过 xml /json 实现简单的业务处理的更多相关文章
- java学习笔记(13) —— google GSON 实现json转化方法
1.配置struts.xml <action name="getGsonAction" class="com.test.action.json.GetGsonAct ...
- java学习笔记(11) —— Struts2与Spring的整合
1.右键 项目名称 —— MyEclipse —— Add Spring Capabilities 2.选取 Copy checked Library contents to project fold ...
- java学习笔记 (9) —— Struts2 国际化
1.Test.java package com.i18n; import java.util.Locale; public class Test1 { public static void main( ...
- java学习笔记 (8) —— Struts2 实现上传
1.新建upload.jsp <%@ page language="java" import="java.util.*" pageEncoding=&qu ...
- java学习笔记 (2) —— Struts2类型转换、数据验证重要知识点
1.*Action.conversion-properties 如(point=com.test.Converter.PointListConverter) 具体操作类的配置文件 2.*Action. ...
- Java学习笔记(十)——xml
[前面的话] 学习过程中还是效率不够高,老是容易注意力不集中,着急啊.不能在这样了,要好好学习,好好努力. 学习过程中的小知识点总结,基础知识,选择阅读. [xml定义] 定义:可扩展标记语言(英语: ...
- UI学习笔记---第十六天XML JSON解析
一.解析的基本概念 从事先规定好的格式中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据,数据方按照格式获取数据 常见解析方式XML解析JSON解析 二.XML:可扩展标记语言 XML ...
- Java学习笔记12
循环 打印一个字符串(例如: "Welcome to Java!") 100次,就需要吧下面的输出语句重复写100遍,这是相当繁琐的: System.out.println(&qu ...
- java学习笔记 (5) —— Struts2 监听器配置
1.创建MyListener.java 实现 PreResultLisener 接口 import com.opensymphony.xwork2.ActionInvocation; import c ...
随机推荐
- v$session_wait p1 p1raw p1_16
SQL> select * from v$mystat where rownum<2; SID STATISTIC# VALUE ---------- ---------- ------- ...
- 【HDOJ】1078 FatMouse and Cheese
这道题目是典型的DFS+记忆化搜索, DP思想.符合:含重叠子问题,无后效性等特点. #include <cstdio> #include <cstring> #include ...
- 【数学】XMU 1593 找数字
题目链接: http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1593 题目大意: T组数据,n个数,只有一种出现q次,其余的出现p次.(1<=T ...
- oracle触发器使用总结
1.说明 1)触发器是一种特殊的存储过程,触发器一般由事件触发并且不能接受参数,存储器由语句块去调用 2)触发器分类: 1.DML触发器: 创建在表上,由DML事件引发 2.instead of触发器 ...
- [C#错误] 未找到类型或命名空间名称" " (是否缺少 using 指令或程序集引用?)
现象:编译项目时提示未找到类型或命名空间名称" " (是否缺少 using 指令或程序集引用?)解决方法:如果是未找到类型,检查是否引用了类型所在的命名空间,使用using指令.如 ...
- 【2】JAVA---地址App小软件(ListPanel.class)(表现层)
这个是表现层的主界面. /* * ListPanel.java * */ package cn.hncu.addr.ui; import javax.swing.JFrame; import java ...
- HDOJ 1098 Ignatius's puzzle
Problem Description Ignatius is poor at math,he falls across a puzzle problem,so he has no choice bu ...
- Android ProgressDialog 加载进度
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...
- Understand Rails Authenticity Token
翻译整理自: http://stackoverflow.com/questions/941594/understand-rails-authenticity-token 主要翻译的是第一个回答,另外结 ...
- [Redux] Writing a Todo List Reducer (Adding a Todo)
Learn how to implement adding a todo in a todo list application reducer. let todo = (state = [], act ...