You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2016/07/14 09:50:02 UTC
[6/6] struts-examples git commit: Adds simple JSON example
Adds simple JSON example
Project: http://git-wip-us.apache.org/repos/asf/struts-examples/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts-examples/commit/62a6110b
Tree: http://git-wip-us.apache.org/repos/asf/struts-examples/tree/62a6110b
Diff: http://git-wip-us.apache.org/repos/asf/struts-examples/diff/62a6110b
Branch: refs/heads/master
Commit: 62a6110bfd78a135d56c53bf1261d68cc3d8f646
Parents: 1dfc0aa
Author: Lukasz Lenart <lu...@gmail.com>
Authored: Thu Jul 14 11:49:45 2016 +0200
Committer: Lukasz Lenart <lu...@gmail.com>
Committed: Thu Jul 14 11:49:45 2016 +0200
----------------------------------------------------------------------
json/pom.xml | 108 ++++++++++++++++++++
json/src/main/java/org/demo/ConsumeAction.java | 38 +++++++
json/src/main/java/org/demo/MyBean.java | 36 +++++++
json/src/main/java/org/demo/ProduceAction.java | 43 ++++++++
json/src/main/resources/log4j2.xml | 16 +++
json/src/main/resources/struts.xml | 31 ++++++
json/src/main/webapp/WEB-INF/result.jsp | 21 ++++
json/src/main/webapp/WEB-INF/web.xml | 23 +++++
json/src/main/webapp/index.html | 10 ++
9 files changed, 326 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/62a6110b/json/pom.xml
----------------------------------------------------------------------
diff --git a/json/pom.xml b/json/pom.xml
new file mode 100644
index 0000000..fc758c7
--- /dev/null
+++ b/json/pom.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>struts-examples</artifactId>
+ <groupId>org.apache.struts</groupId>
+ <version>1.0.0</version>
+ </parent>
+
+ <groupId>org.demo</groupId>
+ <artifactId>json</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <packaging>war</packaging>
+ <name>json</name>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.struts</groupId>
+ <artifactId>struts2-core</artifactId>
+ <version>${struts2.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.struts</groupId>
+ <artifactId>struts2-config-browser-plugin</artifactId>
+ <version>${struts2.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.struts</groupId>
+ <artifactId>struts2-json-plugin</artifactId>
+ <version>${struts2.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-api</artifactId>
+ <version>${log4j2.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ <version>${log4j2.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <version>3.1.0</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>jsp-api</artifactId>
+ <version>2.0</version>
+ <scope>provided</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.3</version>
+ <configuration>
+ <encoding>UTF-8</encoding>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty-maven-plugin</artifactId>
+ <version>8.1.16.v20140903</version>
+ <configuration>
+ <stopKey>CTRL+C</stopKey>
+ <stopPort>8999</stopPort>
+ <systemProperties>
+ <systemProperty>
+ <name>xwork.loggerFactory</name>
+ <value>com.opensymphony.xwork2.util.logging.log4j2.Log4j2LoggerFactory</value>
+ </systemProperty>
+ </systemProperties>
+ <scanIntervalSeconds>10</scanIntervalSeconds>
+ <webAppSourceDirectory>${basedir}/src/main/webapp/</webAppSourceDirectory>
+ <webAppConfig>
+ <descriptor>${basedir}/src/main/webapp/WEB-INF/web.xml</descriptor>
+ </webAppConfig>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/62a6110b/json/src/main/java/org/demo/ConsumeAction.java
----------------------------------------------------------------------
diff --git a/json/src/main/java/org/demo/ConsumeAction.java b/json/src/main/java/org/demo/ConsumeAction.java
new file mode 100644
index 0000000..c142581
--- /dev/null
+++ b/json/src/main/java/org/demo/ConsumeAction.java
@@ -0,0 +1,38 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.demo;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+public class ConsumeAction extends ActionSupport {
+
+ private MyBean bean = new MyBean();
+
+ public String execute() throws Exception {
+ return SUCCESS;
+ }
+
+ public MyBean getBean() {
+ return bean;
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/62a6110b/json/src/main/java/org/demo/MyBean.java
----------------------------------------------------------------------
diff --git a/json/src/main/java/org/demo/MyBean.java b/json/src/main/java/org/demo/MyBean.java
new file mode 100644
index 0000000..17deffb
--- /dev/null
+++ b/json/src/main/java/org/demo/MyBean.java
@@ -0,0 +1,36 @@
+package org.demo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MyBean {
+
+ private int counter;
+ private List<String> names;
+
+ public MyBean() {
+ counter = 0;
+ names = new ArrayList<String>();
+ }
+
+ public MyBean(int counter, List<String> names) {
+ this.counter = counter;
+ this.names = names;
+ }
+
+ public int getCounter() {
+ return counter;
+ }
+
+ public List<String> getNames() {
+ return names;
+ }
+
+ public void setCounter(int counter) {
+ this.counter = counter;
+ }
+
+ public void setNames(List<String> names) {
+ this.names = names;
+ }
+}
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/62a6110b/json/src/main/java/org/demo/ProduceAction.java
----------------------------------------------------------------------
diff --git a/json/src/main/java/org/demo/ProduceAction.java b/json/src/main/java/org/demo/ProduceAction.java
new file mode 100644
index 0000000..35c674b
--- /dev/null
+++ b/json/src/main/java/org/demo/ProduceAction.java
@@ -0,0 +1,43 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.demo;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+import java.util.Arrays;
+
+/**
+ * <code>Set welcome message.</code>
+ */
+public class ProduceAction extends ActionSupport {
+
+ private MyBean bean;
+
+ public String execute() throws Exception {
+ bean = new MyBean(2, Arrays.asList("Lukas", "Antonio"));
+ return SUCCESS;
+ }
+
+ public MyBean getBean() {
+ return bean;
+ }
+}
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/62a6110b/json/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/json/src/main/resources/log4j2.xml b/json/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..e3c583b
--- /dev/null
+++ b/json/src/main/resources/log4j2.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+ <Appenders>
+ <Console name="STDOUT" target="SYSTEM_OUT">
+ <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+ </Console>
+ </Appenders>
+ <Loggers>
+ <Logger name="com.opensymphony.xwork2" level="info"/>
+ <Logger name="org.apache.struts2" level="info"/>
+ <Logger name="org.demo" level="debug"/>
+ <Root level="warn">
+ <AppenderRef ref="STDOUT"/>
+ </Root>
+ </Loggers>
+</Configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/62a6110b/json/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/json/src/main/resources/struts.xml b/json/src/main/resources/struts.xml
new file mode 100644
index 0000000..b82521b
--- /dev/null
+++ b/json/src/main/resources/struts.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE struts PUBLIC
+ "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
+ "http://struts.apache.org/dtds/struts-2.5.dtd">
+<struts>
+ <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
+ <constant name="struts.devMode" value="true"/>
+
+ <package name="default" namespace="/" extends="json-default">
+
+ <default-action-ref name="produce"/>
+
+ <action name="produce" class="org.demo.ProduceAction">
+ <result type="json">
+ <param name="root">bean</param>
+ </result>
+ </action>
+
+ <action name="consume" class="org.demo.ConsumeAction">
+ <interceptor-ref name="basicStack"/>
+ <interceptor-ref name="json">
+ <param name="root">bean</param>
+ <param name="accept">application/json</param>
+ </interceptor-ref>
+ <result>WEB-INF/result.jsp</result>
+ </action>
+
+ </package>
+
+ <!-- Add addition packages and configuration here. -->
+</struts>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/62a6110b/json/src/main/webapp/WEB-INF/result.jsp
----------------------------------------------------------------------
diff --git a/json/src/main/webapp/WEB-INF/result.jsp b/json/src/main/webapp/WEB-INF/result.jsp
new file mode 100644
index 0000000..de96c61
--- /dev/null
+++ b/json/src/main/webapp/WEB-INF/result.jsp
@@ -0,0 +1,21 @@
+<%@ page contentType="text/html; charset=UTF-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>JSON Result</title>
+</head>
+
+<body>
+<ul>
+ <li>
+ counter: <s:property value="bean.counter"/>
+ </li>
+ <s:iterator value="bean.names" var="name" status="idx">
+ <li>
+ name<s:property value="#idx"/>: <s:property value="#name"/>
+ </li>
+ </s:iterator>
+</ul>
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/62a6110b/json/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/json/src/main/webapp/WEB-INF/web.xml b/json/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..8858656
--- /dev/null
+++ b/json/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app id="struts_blank" version="2.4"
+ xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+ <display-name>Struts Blank</display-name>
+
+ <filter>
+ <filter-name>struts2</filter-name>
+ <filter-class>
+ org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
+ </filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>struts2</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+ <welcome-file-list>
+ <welcome-file>index.html</welcome-file>
+ </welcome-file-list>
+</web-app>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/62a6110b/json/src/main/webapp/index.html
----------------------------------------------------------------------
diff --git a/json/src/main/webapp/index.html b/json/src/main/webapp/index.html
new file mode 100644
index 0000000..dc2bbd0
--- /dev/null
+++ b/json/src/main/webapp/index.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <META HTTP-EQUIV="Refresh" CONTENT="0;URL=example/HelloWorld.action">
+</head>
+
+<body>
+<p>Loading ...</p>
+</body>
+</html>