http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exception_handling/src/main/resources/struts.xml ---------------------------------------------------------------------- diff --git a/exception_handling/src/main/resources/struts.xml b/exception_handling/src/main/resources/struts.xml deleted file mode 100644 index c77b0de..0000000 --- a/exception_handling/src/main/resources/struts.xml +++ /dev/null @@ -1,78 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE struts PUBLIC - "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" - "http://struts.apache.org/dtds/struts-2.0.dtd"> - -<struts> - - <constant name="struts.devMode" value="true" /> - - <package name="basicstruts2" extends="struts-default"> - - <!-- setup the default-stack exception mapping interceptor - so that any exceptions not caught by this application - will be logged and then handled by the global exception - mapping --> - <interceptors> - <interceptor-stack name="appDefault"> - <interceptor-ref name="defaultStack"> - <param name="exception.logEnabled">true</param> - <param name="exception.logLevel">ERROR</param> - </interceptor-ref> - </interceptor-stack> - </interceptors> - - <default-interceptor-ref name="appDefault" /> - - <global-results> - <result name="error">/error.jsp</result> - <result name="securityerror">/securityerror.jsp</result> - </global-results> - - - <global-exception-mappings> - <exception-mapping exception="org.apache.struts.register.exceptions.SecurityBreachException" result="securityerror" /> - <exception-mapping exception="java.lang.Exception" result="error" /> - </global-exception-mappings> - - - - <action name="causesecurityexception" class="org.apache.struts.register.action.Register" method="throwSecurityException"> - <result>/register.jsp</result> - </action> - - <action name="causeexception" class="org.apache.struts.register.action.Register" method="throwException"> - <result>/register.jsp</result> - </action> - - <action name="causenullpointerexception" class="org.apache.struts.register.action.Register" method="throwNullPointerException"> - <result>/register.jsp</result> - </action> - - <action name="actionspecificexception" class="org.apache.struts.register.action.Register" method="throwSecurityException"> - <exception-mapping exception="org.apache.struts.register.exceptions.SecurityBreachException" - result="login" /> - <result>/register.jsp</result> - <result name="login">/login.jsp</result> - </action> - - <!-- If no class attribute is specified the framework will assume success and - render the result index.jsp --> - <!-- If no name value for the result node is specified the success value is the default --> - <action name="index"> - <result>/index.jsp</result> - </action> - - <!-- If the URL is hello.action the call the execute method of class HelloWorldAction. - If the result returned by the execute method is success render the HelloWorld.jsp --> - <action name="hello" class="org.apache.struts.helloworld.action.HelloWorldAction" method="execute"> - <result name="success">/HelloWorld.jsp</result> - </action> - - <action name="register" class="org.apache.struts.register.action.Register" method="execute"> - <result name="success">/thankyou.jsp</result> - </action> - - </package> - -</struts> \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exception_handling/src/main/webapp/HelloWorld.jsp ---------------------------------------------------------------------- diff --git a/exception_handling/src/main/webapp/HelloWorld.jsp b/exception_handling/src/main/webapp/HelloWorld.jsp deleted file mode 100644 index 286a6ab..0000000 --- a/exception_handling/src/main/webapp/HelloWorld.jsp +++ /dev/null @@ -1,16 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> -<%@ taglib prefix="s" uri="/struts-tags" %> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> -<title>Hello World!</title> -</head> -<body> -<h2><s:property value="messageStore.message" /></h2> -<p>I've said hello <s:property value="helloCount" /> times!</p> -<p><s:property value="messageStore" /></p> -<p><a href="<s:url action='index' />" >Return to home page</a>.</p> -</body> -</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exception_handling/src/main/webapp/META-INF/MANIFEST.MF ---------------------------------------------------------------------- diff --git a/exception_handling/src/main/webapp/META-INF/MANIFEST.MF b/exception_handling/src/main/webapp/META-INF/MANIFEST.MF deleted file mode 100644 index 5e94951..0000000 --- a/exception_handling/src/main/webapp/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exception_handling/src/main/webapp/WEB-INF/web.xml ---------------------------------------------------------------------- diff --git a/exception_handling/src/main/webapp/WEB-INF/web.xml b/exception_handling/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index abfd1f4..0000000 --- a/exception_handling/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<web-app id="WebApp_ID" 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>Exception Handling</display-name> - <welcome-file-list> - <welcome-file>index.jsp</welcome-file> - </welcome-file-list> - - - <filter> - <filter-name>struts2</filter-name> - <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> - </filter> - - <filter-mapping> - <filter-name>struts2</filter-name> - <url-pattern>/*</url-pattern> - </filter-mapping> - -</web-app> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exception_handling/src/main/webapp/error.jsp ---------------------------------------------------------------------- diff --git a/exception_handling/src/main/webapp/error.jsp b/exception_handling/src/main/webapp/error.jsp deleted file mode 100644 index 44a8044..0000000 --- a/exception_handling/src/main/webapp/error.jsp +++ /dev/null @@ -1,24 +0,0 @@ -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<html> - - <head> - <title>Error</title> - </head> - - <body> - <h4>The application has malfunctioned.</h4> - <p> Please contact technical support with the following information:</p> - - <!-- the exception and exceptionStack bean properties - were created by Struts2's Exception Intercepter --> - <h4>Exception Name: <s:property value="exception" /> </h4> - <h4>Exception Details: <s:property value="exceptionStack" /></h4> - - - <p><a href="index.jsp">Return to the home page.</a></p> - - - </body> - -</html> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exception_handling/src/main/webapp/index.jsp ---------------------------------------------------------------------- diff --git a/exception_handling/src/main/webapp/index.jsp b/exception_handling/src/main/webapp/index.jsp deleted file mode 100644 index 0e38bcc..0000000 --- a/exception_handling/src/main/webapp/index.jsp +++ /dev/null @@ -1,39 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> -<%@ taglib prefix="s" uri="/struts-tags" %> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> -<title>Exception Handling Struts 2 Application - Welcome</title> -</head> -<body> -<h1>Welcome To Struts 2!</h1> -<p><a href="<s:url action='hello'/>">Hello World</a></p> -<s:url action="hello" var="helloLink"> - <s:param name="userName">Bruce Phillips</s:param> -</s:url> -<p><a href="${helloLink}">Hello Bruce Phillips</a></p> - -<p>Get your own personal hello by filling out and submitting this form.</p> - -<s:form action="hello"> - - <s:textfield name="userName" label="Your name" /> - - <s:submit value="Submit" /> - -</s:form> - -<p><a href="register.jsp">Please register</a> for our prize drawing.</p> - -<p><a href='<s:url action="causeexception" />' >Cause Exception</a></p> - -<p><a href='<s:url action="causenullpointerexception" />' >Cause Null Pointer Exception</a></p> - -<p><a href='<s:url action="causesecurityexception" />' >Cause Global Security Exception</a></p> - -<p><a href='<s:url action="actionspecificexception" />' >Cause ActionSpecific Security Exception</a></p> - -</body> -</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exception_handling/src/main/webapp/login.jsp ---------------------------------------------------------------------- diff --git a/exception_handling/src/main/webapp/login.jsp b/exception_handling/src/main/webapp/login.jsp deleted file mode 100644 index 1b59392..0000000 --- a/exception_handling/src/main/webapp/login.jsp +++ /dev/null @@ -1,17 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> -<%@ taglib prefix="s" uri="/struts-tags" %> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> -<title>Exception Handling Struts 2 Application - Login</title> -</head> -<body> -<h1>You Must Login</h1> -<p>Please login</p> - -<p><a href="index.jsp">Return to the home page.</a></p> - -</body> -</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exception_handling/src/main/webapp/register.jsp ---------------------------------------------------------------------- diff --git a/exception_handling/src/main/webapp/register.jsp b/exception_handling/src/main/webapp/register.jsp deleted file mode 100644 index 0adac76..0000000 --- a/exception_handling/src/main/webapp/register.jsp +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1" ?> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> -<title>Register</title> -</head> -<body> -<h3>Register for a prize by completing this form.</h3> - -<s:form action="register"> - - <s:textfield name="personBean.firstName" label="First name" /> - <s:textfield name="personBean.lastName" label="Last name" /> - <s:textfield name="personBean.email" label ="Email"/> - <s:textfield name="personBean.age" label="Age" /> - - <s:submit/> - -</s:form> - -</body> -</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exception_handling/src/main/webapp/securityerror.jsp ---------------------------------------------------------------------- diff --git a/exception_handling/src/main/webapp/securityerror.jsp b/exception_handling/src/main/webapp/securityerror.jsp deleted file mode 100644 index 873c467..0000000 --- a/exception_handling/src/main/webapp/securityerror.jsp +++ /dev/null @@ -1,24 +0,0 @@ -<%@ page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="s" uri="/struts-tags" %> -<html> - - <head> - <title>Security Error</title> - </head> - - <body> - <h4>There has been a security error.</h4> - <p> Please contact technical support with the following information:</p> - - <!-- the exception and exceptionStack bean properties - were created by Struts2's Exception Intercepter --> - <h4>Exception Name: <s:property value="exception" /> </h4> - <h4>Exception Details: <s:property value="exceptionStack" /></h4> - - - <p><a href="index.jsp">Return to the home page.</a></p> - - - </body> - -</html> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exception_handling/src/main/webapp/thankyou.jsp ---------------------------------------------------------------------- diff --git a/exception_handling/src/main/webapp/thankyou.jsp b/exception_handling/src/main/webapp/thankyou.jsp deleted file mode 100644 index 3c845bc..0000000 --- a/exception_handling/src/main/webapp/thankyou.jsp +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1" ?> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> -<title>Registration Successful</title> -</head> -<body> -<h3>Thank you for registering for a prize.</h3> - -<p>Your registration information: <s:property value="personBean" /> </p> - -<p><a href="<s:url action='index' />" >Return to home page</a>.</p> - -</body> -</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/README.txt ---------------------------------------------------------------------- diff --git a/exclude-parameters/README.txt b/exclude-parameters/README.txt new file mode 100644 index 0000000..56d63d4 --- /dev/null +++ b/exclude-parameters/README.txt @@ -0,0 +1,19 @@ +This is the example project referred to in the +Struts 2 documentation, Exclude Params tutorial. +See: http://struts.apache.org. + +To build the application's war file run mvn clean package +from the project's root folder. + +The war file is created in the target sub-folder. + +Copy the war file to your Servlet container (e.g. Tomcat, GlassFish) and +then startup the Servlet container. + +In a web browser go to: http://localhost:8080/exclude-parameters/index.action. + +You should see a web page with Welcome to Struts 2! + +The application writes log messages to the console. In Tomcat the +log messages can be found in catalina.out ([tomcat home]/logs). + http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/pom.xml ---------------------------------------------------------------------- diff --git a/exclude-parameters/pom.xml b/exclude-parameters/pom.xml new file mode 100644 index 0000000..920c505 --- /dev/null +++ b/exclude-parameters/pom.xml @@ -0,0 +1,24 @@ +<?xml version="1.0"?> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>struts.apache.org</groupId> + <artifactId>struts2examples</artifactId> + <version>1.0.0</version> + </parent> + + <artifactId>exclude-parameters</artifactId> + + <name>exclude-parameters</name> + + <description>Struts 2 example application for the exclude parameters getting started tutorial</description> + + <packaging>war</packaging> + + <build> + <finalName>exclude-parameters</finalName> + </build> + +</project> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/src/main/java/org/apache/struts/edit/action/EditAction.java ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/java/org/apache/struts/edit/action/EditAction.java b/exclude-parameters/src/main/java/org/apache/struts/edit/action/EditAction.java new file mode 100644 index 0000000..0383bbc --- /dev/null +++ b/exclude-parameters/src/main/java/org/apache/struts/edit/action/EditAction.java @@ -0,0 +1,95 @@ +package org.apache.struts.edit.action; + +import com.opensymphony.xwork2.ActionSupport; +import com.opensymphony.xwork2.Preparable; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.struts.edit.model.Person; +import org.apache.struts.edit.model.State; +import org.apache.struts.edit.service.CarModelsService; +import org.apache.struts.edit.service.CarModelsServiceHardCoded; +import org.apache.struts.edit.service.EditService; +import org.apache.struts.edit.service.EditServiceInMemory; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * Acts as a controller to handle actions + * related to editing a Person. + * @author bruce phillips + * + */ +public class EditAction extends ActionSupport implements Preparable { + + private static Logger log = LogManager.getLogger(EditAction.class); + private static final long serialVersionUID = 1L; + + private EditService editService = new EditServiceInMemory(); + private CarModelsService carModelsService = new CarModelsServiceHardCoded() ; + + private Person personBean; + private String [] sports = {"football", "baseball", "basketball" }; + private String [] genders = {"male", "female", "not sure" }; + private List<State> states ; + private String [] carModelsAvailable ; + + @Override + public void prepare() throws Exception { + log.info("In prepare method..."); + carModelsAvailable = carModelsService.getCarModels() ; + setPersonBean( editService.getPerson() ); + } + + public void prepareExecute() { + log.info("In prepareExecute method..."); + } + + public String execute() throws Exception { + log.info ("In execute method..."); + editService.savePerson( getPersonBean() ); + return SUCCESS; + } + + public void prepareInput() { + log.info("In prepareInput method..."); + } + + public String input() throws Exception { + log.info("In input method..."); + return INPUT; + } + + public Person getPersonBean() { + return personBean; + } + + public void setPersonBean(Person person) { + personBean = person; + } + + public List<String> getSports() { + return Arrays.asList(sports); + } + + public List<String> getGenders() { + return Arrays.asList(genders); + } + + public List<State> getStates() { + + states = new ArrayList<>(); + states.add( new State("AZ", "Arizona") ); + states.add( new State("CA", "California") ); + states.add( new State("FL", "Florida") ); + states.add( new State("KS", "Kansas") ); + states.add( new State("NY", "New York") ); + + return states; + } + + public String [] getCarModelsAvailable() { + return carModelsAvailable; + } +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/src/main/java/org/apache/struts/edit/model/Person.java ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/java/org/apache/struts/edit/model/Person.java b/exclude-parameters/src/main/java/org/apache/struts/edit/model/Person.java new file mode 100644 index 0000000..2d127eb --- /dev/null +++ b/exclude-parameters/src/main/java/org/apache/struts/edit/model/Person.java @@ -0,0 +1,121 @@ +package org.apache.struts.edit.model; + +import java.util.Arrays; + + + +/** + * Models a Person who registers. + * @author bruce phillips + * + */ +public class Person +{ + private String firstName; + private String lastName; + private String sport; + private String gender; + private String residency; + private boolean over21; + private String [] carModels; + private String email; + private String phoneNumber; + + + + public String getFirstName() + { + return firstName; + } + + public void setFirstName(String firstName) + { + this.firstName = firstName; + } + + public String getLastName() + { + return lastName; + } + + public void setLastName(String lastName) + { + this.lastName = lastName; + } + + + + + public void setSport(String sport) { + this.sport = sport; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getGender() { + return gender; + } + + public String getSport() { + return sport; + } + + public void setResidency(String residency) { + this.residency = residency; + } + + public String getResidency() { + return residency; + } + + public void setOver21(boolean over21) { + this.over21 = over21; + } + + public boolean isOver21() { + return over21; + } + + public void setCarModels(String [] carModels) { + this.carModels = carModels; + } + + public String [] getCarModels() { + return carModels; + } + + public String toString() + { + return "First Name: " + getFirstName() + " | " + + " Last Name: " + getLastName() + " | " + + " Favorite Sport: " + getSport() + " | " + + " Gender: " + getGender() + " | " + + " Residency: " + getResidency() + " | " + + " Over 21: " + isOver21() + " | " + + " Car models: " + Arrays.asList( getCarModels() ) + " | " + + " Email: " + getEmail() + " | " + + " Phone: " + getPhoneNumber(); + + + } + + public void setEmail(String email) { + this.email = email; + } + + public String getEmail() { + return email; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/src/main/java/org/apache/struts/edit/model/State.java ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/java/org/apache/struts/edit/model/State.java b/exclude-parameters/src/main/java/org/apache/struts/edit/model/State.java new file mode 100644 index 0000000..bb927e1 --- /dev/null +++ b/exclude-parameters/src/main/java/org/apache/struts/edit/model/State.java @@ -0,0 +1,39 @@ +package org.apache.struts.edit.model; + +public class State { + + private String stateAbbr; + + private String stateName; + + public State (String stateAbbr, String stateName) { + + this.stateAbbr = stateAbbr; + this.stateName = stateName; + + } + + public void setStateAbbr(String stateAbbr) { + this.stateAbbr = stateAbbr; + } + + public String getStateAbbr() { + return stateAbbr; + } + + public void setStateName(String stateName) { + this.stateName = stateName; + } + + public String getStateName() { + return stateName; + } + + public String toString() { + + return getStateAbbr() ; + + } + + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/src/main/java/org/apache/struts/edit/service/CarModelsService.java ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/java/org/apache/struts/edit/service/CarModelsService.java b/exclude-parameters/src/main/java/org/apache/struts/edit/service/CarModelsService.java new file mode 100644 index 0000000..e931dbe --- /dev/null +++ b/exclude-parameters/src/main/java/org/apache/struts/edit/service/CarModelsService.java @@ -0,0 +1,18 @@ +/** + * + */ +package org.apache.struts.edit.service; + +/** + * Specifies what methods a CarModelService + * class must implement to provide information + * about car models. + * @author bphillips + * + */ +public interface CarModelsService { + + + String [] getCarModels() ; + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java b/exclude-parameters/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java new file mode 100644 index 0000000..7d7eb20 --- /dev/null +++ b/exclude-parameters/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java @@ -0,0 +1,22 @@ +package org.apache.struts.edit.service; + +/** + * Provides information on car models using data hard-coded + * in this class. + * @author bphillips + * + */ +public class CarModelsServiceHardCoded implements CarModelsService { + + + @Override + public String[] getCarModels() { + + String [] carModelsAvailable = {"Ford","Chrysler","Toyota","Nissan"}; + + return carModelsAvailable ; + + + } + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/src/main/java/org/apache/struts/edit/service/EditService.java ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/java/org/apache/struts/edit/service/EditService.java b/exclude-parameters/src/main/java/org/apache/struts/edit/service/EditService.java new file mode 100644 index 0000000..79d759a --- /dev/null +++ b/exclude-parameters/src/main/java/org/apache/struts/edit/service/EditService.java @@ -0,0 +1,12 @@ +package org.apache.struts.edit.service; + +import org.apache.struts.edit.model.Person; + +public interface EditService { + + + Person getPerson() ; + + void savePerson(Person personBean); + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java b/exclude-parameters/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java new file mode 100644 index 0000000..b0821fb --- /dev/null +++ b/exclude-parameters/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java @@ -0,0 +1,60 @@ +package org.apache.struts.edit.service; + + + +import org.apache.struts.edit.model.Person; + +/** + * Implement Services needed to edit and save + * a Person object's state. In this implementation + * the Person object's state is stored in memory + * @author brucephillips + * + */ + +public class EditServiceInMemory implements EditService { + + + private static Person person ; + private static String [] carModels = {"Ford","Nissan"}; + + + static { + + person = new Person(); + person.setFirstName("Bruce"); + person.setLastName("Phillips"); + person.setEmail("[email protected]"); + person.setSport("basketball"); + person.setGender("not sure"); + person.setResidency("KS"); + person.setOver21(true); + person.setCarModels( carModels); + person.setPhoneNumber("123-456-9999"); + + + + } + + + public Person getPerson() { + + return EditServiceInMemory.person; + } + + + public void savePerson(Person personBean) { + + EditServiceInMemory.person.setFirstName(personBean.getFirstName() ); + EditServiceInMemory.person.setLastName(personBean.getLastName() ); + EditServiceInMemory.person.setSport(personBean.getSport() ); + EditServiceInMemory.person.setGender( personBean.getGender() ); + EditServiceInMemory.person.setResidency( personBean.getResidency() ); + EditServiceInMemory.person.setOver21( personBean.isOver21() ); + EditServiceInMemory.person.setCarModels(personBean.getCarModels() ); + EditServiceInMemory.person.setEmail( personBean.getEmail() ); + EditServiceInMemory.person.setPhoneNumber( personBean.getPhoneNumber() ); + + } + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/src/main/resources/log4j2.xml ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/resources/log4j2.xml b/exclude-parameters/src/main/resources/log4j2.xml new file mode 100644 index 0000000..d7c09f9 --- /dev/null +++ b/exclude-parameters/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.apache.struts2.edit" 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/433ea016/exclude-parameters/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml b/exclude-parameters/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml new file mode 100644 index 0000000..0a884ff --- /dev/null +++ b/exclude-parameters/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml @@ -0,0 +1,35 @@ +<!DOCTYPE validators PUBLIC + "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + <validator type="requiredstring"> + <param name="fieldname">personBean.firstName</param> + <message>First name is required.</message> + </validator> + <validator type="requiredstring"> + <param name="fieldname">personBean.lastName</param> + <message>Last name is required.</message> + </validator> + <validator type="requiredstring"> + <param name="fieldname">personBean.email</param> + <message>Email address is required.</message> + </validator> + <validator type="email"> + <param name="fieldname">personBean.email</param> + <message>Email address not valid.</message> + </validator> + <validator type="requiredstring"> + <param name="fieldname">personBean.phoneNumber</param> + <message>Phone number is required.</message> + </validator> +<validator type="regex"> + <param name="fieldname">personBean.phoneNumber</param> + <param name="regex"><![CDATA[\d{3}-\d{3}-\d{4}]]></param> + <message>Phone number must be entered as 999-999-9999.</message> +</validator> +<validator type="fieldexpression"> + <param name="fieldname">personBean.carModels</param> + <param name="expression"><![CDATA[personBean.carModels.length > 0]]></param> + <message>You must select at least one car model.</message> +</validator> +</validators> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/src/main/resources/org/apache/struts/edit/action/EditAction.properties ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/resources/org/apache/struts/edit/action/EditAction.properties b/exclude-parameters/src/main/resources/org/apache/struts/edit/action/EditAction.properties new file mode 100644 index 0000000..1b36d51 --- /dev/null +++ b/exclude-parameters/src/main/resources/org/apache/struts/edit/action/EditAction.properties @@ -0,0 +1,10 @@ +personBean.firstName=First name +personBean.lastName=Last name +personBean.email=Email address +personBean.phoneNumber=Phone number (999-999-9999) +personBean.sport=Favorite sport +personBean.gender=Gender +personBean.residency=State resident +personBean.over21=21 or older +personBean.carModels=Car models owned +submit=Save Changes \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/src/main/resources/struts.xml ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/resources/struts.xml b/exclude-parameters/src/main/resources/struts.xml new file mode 100644 index 0000000..f0ee62d --- /dev/null +++ b/exclude-parameters/src/main/resources/struts.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE struts PUBLIC + "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" + "http://struts.apache.org/dtds/struts-2.0.dtd"> + +<struts> + + <constant name="struts.devMode" value="true" /> + + <package name="basicstruts2" extends="struts-default" > + + <interceptors> + <interceptor-stack name="appDefault"> + <interceptor-ref name="defaultStack"> + <param name="exception.logEnabled">true</param> + <param name="exception.logLevel">ERROR</param> + <param name="params.excludeParams">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*,submit</param> + </interceptor-ref> + </interceptor-stack> + </interceptors> + + <default-interceptor-ref name="appDefault" /> + + <!-- If no class attribute is specified the framework will assume success and + render the result index.jsp --> + <!-- If no name value for the result node is specified the success value is the default --> + <action name="index"> + <result>/index.jsp</result> + </action> + + <action name="edit" class="org.apache.struts.edit.action.EditAction" method="input"> + <result name="input">/edit.jsp</result> + </action> + + <action name="save" class="org.apache.struts.edit.action.EditAction" method="execute"> + <result name="input">/edit.jsp</result> + <result name="success">/thankyou.jsp</result> + </action> + + </package> + +</struts> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/src/main/webapp/META-INF/MANIFEST.MF ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/webapp/META-INF/MANIFEST.MF b/exclude-parameters/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/exclude-parameters/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/src/main/webapp/WEB-INF/web.xml ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/webapp/WEB-INF/web.xml b/exclude-parameters/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..3e29883 --- /dev/null +++ b/exclude-parameters/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<web-app id="WebApp_ID" 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>Exclude Parameters</display-name> + <welcome-file-list> + <welcome-file>index.jsp</welcome-file> + </welcome-file-list> + + + <filter> + <filter-name>struts2</filter-name> + <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> + </filter> + + <filter-mapping> + <filter-name>struts2</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + +</web-app> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/src/main/webapp/edit.jsp ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/webapp/edit.jsp b/exclude-parameters/src/main/webapp/edit.jsp new file mode 100644 index 0000000..67a9901 --- /dev/null +++ b/exclude-parameters/src/main/webapp/edit.jsp @@ -0,0 +1,30 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@ taglib prefix="s" uri="/struts-tags" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<s:head /> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Struts 2 Form Tags - Edit Person</title> +</head> +<body> +<h1>Update Information</h1> + +<p>Use the form below to edit your information.</p> + +<s:form action="save" method="post"> +<s:textfield key="personBean.firstName" /> +<s:textfield key="personBean.lastName" /> +<s:textfield key="personBean.email" /> +<s:textfield key="personBean.phoneNumber" /> +<s:select key="personBean.sport" list="sports" /> +<s:radio key="personBean.gender" list="genders" /> +<s:select key="personBean.residency" list="states" listKey="stateAbbr" listValue="stateName" /> +<s:checkbox key="personBean.over21" /> +<s:checkboxlist key="personBean.carModels" list="carModelsAvailable" /> +<s:submit key="submit" /> +</s:form> + +</body> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/src/main/webapp/index.jsp ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/webapp/index.jsp b/exclude-parameters/src/main/webapp/index.jsp new file mode 100644 index 0000000..88209d8 --- /dev/null +++ b/exclude-parameters/src/main/webapp/index.jsp @@ -0,0 +1,16 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@ taglib prefix="s" uri="/struts-tags" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Struts 2 Form Tags - Welcome</title> +</head> +<body> +<h1>Welcome To Struts 2!</h1> + +<p><a href='<s:url action="edit" />' >Edit your information</a></p> + +</body> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude-parameters/src/main/webapp/thankyou.jsp ---------------------------------------------------------------------- diff --git a/exclude-parameters/src/main/webapp/thankyou.jsp b/exclude-parameters/src/main/webapp/thankyou.jsp new file mode 100644 index 0000000..5fa306f --- /dev/null +++ b/exclude-parameters/src/main/webapp/thankyou.jsp @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> +<title>Update Successful</title> +</head> +<body> + +<h1>Updated Information</h1> + + +<p>Your information: <s:property value="personBean" /> </p> + +<p><a href="<s:url action='index' />" >Return to home page</a>.</p> + +</body> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/README.txt ---------------------------------------------------------------------- diff --git a/exclude_parameters/README.txt b/exclude_parameters/README.txt deleted file mode 100644 index a026815..0000000 --- a/exclude_parameters/README.txt +++ /dev/null @@ -1,19 +0,0 @@ -This is the example project referred to in the -Struts 2 documentation, Exclude Params tutorial. -See: http://struts.apache.org. - -To build the application's war file run mvn clean package -from the project's root folder. - -The war file is created in the target sub-folder. - -Copy the war file to your Servlet container (e.g. Tomcat, GlassFish) and -then startup the Servlet container. - -In a web browser go to: http://localhost:8080/exclude_parameters/index.action. - -You should see a web page with Welcome to Struts 2! - -The application writes log messages to the console. In Tomcat the -log messages can be found in catalina.out ([tomcat home]/logs). - http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/pom.xml ---------------------------------------------------------------------- diff --git a/exclude_parameters/pom.xml b/exclude_parameters/pom.xml deleted file mode 100644 index 3d7ea88..0000000 --- a/exclude_parameters/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0"?> -<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>struts.apache.org</groupId> - <artifactId>struts2examples</artifactId> - <version>1.0.0</version> - </parent> - - <artifactId>exclude_parameters</artifactId> - - <name>exclude_parameters</name> - - <description>Struts 2 example application for the - exclude parameters getting started tutorial</description> - - <packaging>war</packaging> - - <build> - <finalName>exclude_parameters</finalName> - </build> - -</project> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/src/main/java/org/apache/struts/edit/action/EditAction.java ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/java/org/apache/struts/edit/action/EditAction.java b/exclude_parameters/src/main/java/org/apache/struts/edit/action/EditAction.java deleted file mode 100644 index 0383bbc..0000000 --- a/exclude_parameters/src/main/java/org/apache/struts/edit/action/EditAction.java +++ /dev/null @@ -1,95 +0,0 @@ -package org.apache.struts.edit.action; - -import com.opensymphony.xwork2.ActionSupport; -import com.opensymphony.xwork2.Preparable; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.apache.struts.edit.model.Person; -import org.apache.struts.edit.model.State; -import org.apache.struts.edit.service.CarModelsService; -import org.apache.struts.edit.service.CarModelsServiceHardCoded; -import org.apache.struts.edit.service.EditService; -import org.apache.struts.edit.service.EditServiceInMemory; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * Acts as a controller to handle actions - * related to editing a Person. - * @author bruce phillips - * - */ -public class EditAction extends ActionSupport implements Preparable { - - private static Logger log = LogManager.getLogger(EditAction.class); - private static final long serialVersionUID = 1L; - - private EditService editService = new EditServiceInMemory(); - private CarModelsService carModelsService = new CarModelsServiceHardCoded() ; - - private Person personBean; - private String [] sports = {"football", "baseball", "basketball" }; - private String [] genders = {"male", "female", "not sure" }; - private List<State> states ; - private String [] carModelsAvailable ; - - @Override - public void prepare() throws Exception { - log.info("In prepare method..."); - carModelsAvailable = carModelsService.getCarModels() ; - setPersonBean( editService.getPerson() ); - } - - public void prepareExecute() { - log.info("In prepareExecute method..."); - } - - public String execute() throws Exception { - log.info ("In execute method..."); - editService.savePerson( getPersonBean() ); - return SUCCESS; - } - - public void prepareInput() { - log.info("In prepareInput method..."); - } - - public String input() throws Exception { - log.info("In input method..."); - return INPUT; - } - - public Person getPersonBean() { - return personBean; - } - - public void setPersonBean(Person person) { - personBean = person; - } - - public List<String> getSports() { - return Arrays.asList(sports); - } - - public List<String> getGenders() { - return Arrays.asList(genders); - } - - public List<State> getStates() { - - states = new ArrayList<>(); - states.add( new State("AZ", "Arizona") ); - states.add( new State("CA", "California") ); - states.add( new State("FL", "Florida") ); - states.add( new State("KS", "Kansas") ); - states.add( new State("NY", "New York") ); - - return states; - } - - public String [] getCarModelsAvailable() { - return carModelsAvailable; - } -} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/src/main/java/org/apache/struts/edit/model/Person.java ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/java/org/apache/struts/edit/model/Person.java b/exclude_parameters/src/main/java/org/apache/struts/edit/model/Person.java deleted file mode 100644 index 2d127eb..0000000 --- a/exclude_parameters/src/main/java/org/apache/struts/edit/model/Person.java +++ /dev/null @@ -1,121 +0,0 @@ -package org.apache.struts.edit.model; - -import java.util.Arrays; - - - -/** - * Models a Person who registers. - * @author bruce phillips - * - */ -public class Person -{ - private String firstName; - private String lastName; - private String sport; - private String gender; - private String residency; - private boolean over21; - private String [] carModels; - private String email; - private String phoneNumber; - - - - public String getFirstName() - { - return firstName; - } - - public void setFirstName(String firstName) - { - this.firstName = firstName; - } - - public String getLastName() - { - return lastName; - } - - public void setLastName(String lastName) - { - this.lastName = lastName; - } - - - - - public void setSport(String sport) { - this.sport = sport; - } - - public void setGender(String gender) { - this.gender = gender; - } - - public String getGender() { - return gender; - } - - public String getSport() { - return sport; - } - - public void setResidency(String residency) { - this.residency = residency; - } - - public String getResidency() { - return residency; - } - - public void setOver21(boolean over21) { - this.over21 = over21; - } - - public boolean isOver21() { - return over21; - } - - public void setCarModels(String [] carModels) { - this.carModels = carModels; - } - - public String [] getCarModels() { - return carModels; - } - - public String toString() - { - return "First Name: " + getFirstName() + " | " + - " Last Name: " + getLastName() + " | " + - " Favorite Sport: " + getSport() + " | " + - " Gender: " + getGender() + " | " + - " Residency: " + getResidency() + " | " + - " Over 21: " + isOver21() + " | " + - " Car models: " + Arrays.asList( getCarModels() ) + " | " + - " Email: " + getEmail() + " | " + - " Phone: " + getPhoneNumber(); - - - } - - public void setEmail(String email) { - this.email = email; - } - - public String getEmail() { - return email; - } - - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } - - public String getPhoneNumber() { - return phoneNumber; - } - - -} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/src/main/java/org/apache/struts/edit/model/State.java ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/java/org/apache/struts/edit/model/State.java b/exclude_parameters/src/main/java/org/apache/struts/edit/model/State.java deleted file mode 100644 index bb927e1..0000000 --- a/exclude_parameters/src/main/java/org/apache/struts/edit/model/State.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.apache.struts.edit.model; - -public class State { - - private String stateAbbr; - - private String stateName; - - public State (String stateAbbr, String stateName) { - - this.stateAbbr = stateAbbr; - this.stateName = stateName; - - } - - public void setStateAbbr(String stateAbbr) { - this.stateAbbr = stateAbbr; - } - - public String getStateAbbr() { - return stateAbbr; - } - - public void setStateName(String stateName) { - this.stateName = stateName; - } - - public String getStateName() { - return stateName; - } - - public String toString() { - - return getStateAbbr() ; - - } - - -} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/src/main/java/org/apache/struts/edit/service/CarModelsService.java ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/java/org/apache/struts/edit/service/CarModelsService.java b/exclude_parameters/src/main/java/org/apache/struts/edit/service/CarModelsService.java deleted file mode 100644 index e931dbe..0000000 --- a/exclude_parameters/src/main/java/org/apache/struts/edit/service/CarModelsService.java +++ /dev/null @@ -1,18 +0,0 @@ -/** - * - */ -package org.apache.struts.edit.service; - -/** - * Specifies what methods a CarModelService - * class must implement to provide information - * about car models. - * @author bphillips - * - */ -public interface CarModelsService { - - - String [] getCarModels() ; - -} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java b/exclude_parameters/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java deleted file mode 100644 index 7d7eb20..0000000 --- a/exclude_parameters/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.apache.struts.edit.service; - -/** - * Provides information on car models using data hard-coded - * in this class. - * @author bphillips - * - */ -public class CarModelsServiceHardCoded implements CarModelsService { - - - @Override - public String[] getCarModels() { - - String [] carModelsAvailable = {"Ford","Chrysler","Toyota","Nissan"}; - - return carModelsAvailable ; - - - } - -} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/src/main/java/org/apache/struts/edit/service/EditService.java ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/java/org/apache/struts/edit/service/EditService.java b/exclude_parameters/src/main/java/org/apache/struts/edit/service/EditService.java deleted file mode 100644 index f52e053..0000000 --- a/exclude_parameters/src/main/java/org/apache/struts/edit/service/EditService.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.apache.struts.edit.service; - -import org.apache.struts.edit.model.Person; - -public interface EditService { - - - Person getPerson() ; - - void savePerson(Person personBean); - -} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java b/exclude_parameters/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java deleted file mode 100644 index 8fd35e2..0000000 --- a/exclude_parameters/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.apache.struts.edit.service; - - - -import org.apache.struts.edit.model.Person; - -/** - * Implement Services needed to edit and save - * a Person object's state. In this implementation - * the Person object's state is stored in memory - * @author brucephillips - * - */ - -public class EditServiceInMemory implements EditService { - - - private static Person person ; - private static String [] carModels = {"Ford","Nissan"}; - - - static { - - person = new Person(); - person.setFirstName("Bruce"); - person.setLastName("Phillips"); - person.setEmail("[email protected]"); - person.setSport("basketball"); - person.setGender("not sure"); - person.setResidency("KS"); - person.setOver21(true); - person.setCarModels( carModels); - person.setPhoneNumber("123-456-9999"); - - - - } - - - public Person getPerson() { - - return EditServiceInMemory.person; - } - - - public void savePerson(Person personBean) { - - EditServiceInMemory.person.setFirstName(personBean.getFirstName() ); - EditServiceInMemory.person.setLastName(personBean.getLastName() ); - EditServiceInMemory.person.setSport(personBean.getSport() ); - EditServiceInMemory.person.setGender( personBean.getGender() ); - EditServiceInMemory.person.setResidency( personBean.getResidency() ); - EditServiceInMemory.person.setOver21( personBean.isOver21() ); - EditServiceInMemory.person.setCarModels(personBean.getCarModels() ); - EditServiceInMemory.person.setEmail( personBean.getEmail() ); - EditServiceInMemory.person.setPhoneNumber( personBean.getPhoneNumber() ); - - } - -} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/src/main/resources/log4j2.xml ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/resources/log4j2.xml b/exclude_parameters/src/main/resources/log4j2.xml deleted file mode 100644 index d7c09f9..0000000 --- a/exclude_parameters/src/main/resources/log4j2.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?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.apache.struts2.edit" 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/433ea016/exclude_parameters/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml b/exclude_parameters/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml deleted file mode 100644 index 0a884ff..0000000 --- a/exclude_parameters/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml +++ /dev/null @@ -1,35 +0,0 @@ -<!DOCTYPE validators PUBLIC - "-//Apache Struts//XWork Validator 1.0.3//EN" - "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> -<validators> - <validator type="requiredstring"> - <param name="fieldname">personBean.firstName</param> - <message>First name is required.</message> - </validator> - <validator type="requiredstring"> - <param name="fieldname">personBean.lastName</param> - <message>Last name is required.</message> - </validator> - <validator type="requiredstring"> - <param name="fieldname">personBean.email</param> - <message>Email address is required.</message> - </validator> - <validator type="email"> - <param name="fieldname">personBean.email</param> - <message>Email address not valid.</message> - </validator> - <validator type="requiredstring"> - <param name="fieldname">personBean.phoneNumber</param> - <message>Phone number is required.</message> - </validator> -<validator type="regex"> - <param name="fieldname">personBean.phoneNumber</param> - <param name="regex"><![CDATA[\d{3}-\d{3}-\d{4}]]></param> - <message>Phone number must be entered as 999-999-9999.</message> -</validator> -<validator type="fieldexpression"> - <param name="fieldname">personBean.carModels</param> - <param name="expression"><![CDATA[personBean.carModels.length > 0]]></param> - <message>You must select at least one car model.</message> -</validator> -</validators> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/src/main/resources/org/apache/struts/edit/action/EditAction.properties ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/resources/org/apache/struts/edit/action/EditAction.properties b/exclude_parameters/src/main/resources/org/apache/struts/edit/action/EditAction.properties deleted file mode 100644 index 83f400a..0000000 --- a/exclude_parameters/src/main/resources/org/apache/struts/edit/action/EditAction.properties +++ /dev/null @@ -1,10 +0,0 @@ -personBean.firstName=First name -personBean.lastName=Last name -personBean.email=Email address -personBean.phoneNumber=Phone number (999-999-9999) -personBean.sport=Favorite sport -personBean.gender=Gender -personBean.residency=State resident -personBean.over21=21 or older -personBean.carModels=Car models owned -submit=Save Changes \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/src/main/resources/struts.xml ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/resources/struts.xml b/exclude_parameters/src/main/resources/struts.xml deleted file mode 100644 index f0ee62d..0000000 --- a/exclude_parameters/src/main/resources/struts.xml +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE struts PUBLIC - "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" - "http://struts.apache.org/dtds/struts-2.0.dtd"> - -<struts> - - <constant name="struts.devMode" value="true" /> - - <package name="basicstruts2" extends="struts-default" > - - <interceptors> - <interceptor-stack name="appDefault"> - <interceptor-ref name="defaultStack"> - <param name="exception.logEnabled">true</param> - <param name="exception.logLevel">ERROR</param> - <param name="params.excludeParams">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*,submit</param> - </interceptor-ref> - </interceptor-stack> - </interceptors> - - <default-interceptor-ref name="appDefault" /> - - <!-- If no class attribute is specified the framework will assume success and - render the result index.jsp --> - <!-- If no name value for the result node is specified the success value is the default --> - <action name="index"> - <result>/index.jsp</result> - </action> - - <action name="edit" class="org.apache.struts.edit.action.EditAction" method="input"> - <result name="input">/edit.jsp</result> - </action> - - <action name="save" class="org.apache.struts.edit.action.EditAction" method="execute"> - <result name="input">/edit.jsp</result> - <result name="success">/thankyou.jsp</result> - </action> - - </package> - -</struts> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/src/main/webapp/META-INF/MANIFEST.MF ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/webapp/META-INF/MANIFEST.MF b/exclude_parameters/src/main/webapp/META-INF/MANIFEST.MF deleted file mode 100644 index 5e94951..0000000 --- a/exclude_parameters/src/main/webapp/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/src/main/webapp/WEB-INF/web.xml ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/webapp/WEB-INF/web.xml b/exclude_parameters/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 3e29883..0000000 --- a/exclude_parameters/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<web-app id="WebApp_ID" 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>Exclude Parameters</display-name> - <welcome-file-list> - <welcome-file>index.jsp</welcome-file> - </welcome-file-list> - - - <filter> - <filter-name>struts2</filter-name> - <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> - </filter> - - <filter-mapping> - <filter-name>struts2</filter-name> - <url-pattern>/*</url-pattern> - </filter-mapping> - -</web-app> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/src/main/webapp/edit.jsp ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/webapp/edit.jsp b/exclude_parameters/src/main/webapp/edit.jsp deleted file mode 100644 index 67a9901..0000000 --- a/exclude_parameters/src/main/webapp/edit.jsp +++ /dev/null @@ -1,30 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> -<%@ taglib prefix="s" uri="/struts-tags" %> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<s:head /> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> -<title>Struts 2 Form Tags - Edit Person</title> -</head> -<body> -<h1>Update Information</h1> - -<p>Use the form below to edit your information.</p> - -<s:form action="save" method="post"> -<s:textfield key="personBean.firstName" /> -<s:textfield key="personBean.lastName" /> -<s:textfield key="personBean.email" /> -<s:textfield key="personBean.phoneNumber" /> -<s:select key="personBean.sport" list="sports" /> -<s:radio key="personBean.gender" list="genders" /> -<s:select key="personBean.residency" list="states" listKey="stateAbbr" listValue="stateName" /> -<s:checkbox key="personBean.over21" /> -<s:checkboxlist key="personBean.carModels" list="carModelsAvailable" /> -<s:submit key="submit" /> -</s:form> - -</body> -</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/src/main/webapp/index.jsp ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/webapp/index.jsp b/exclude_parameters/src/main/webapp/index.jsp deleted file mode 100644 index 88209d8..0000000 --- a/exclude_parameters/src/main/webapp/index.jsp +++ /dev/null @@ -1,16 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> -<%@ taglib prefix="s" uri="/struts-tags" %> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> -<title>Struts 2 Form Tags - Welcome</title> -</head> -<body> -<h1>Welcome To Struts 2!</h1> - -<p><a href='<s:url action="edit" />' >Edit your information</a></p> - -</body> -</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/exclude_parameters/src/main/webapp/thankyou.jsp ---------------------------------------------------------------------- diff --git a/exclude_parameters/src/main/webapp/thankyou.jsp b/exclude_parameters/src/main/webapp/thankyou.jsp deleted file mode 100644 index 5fa306f..0000000 --- a/exclude_parameters/src/main/webapp/thankyou.jsp +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1" ?> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> -<title>Update Successful</title> -</head> -<body> - -<h1>Updated Information</h1> - - -<p>Your information: <s:property value="personBean" /> </p> - -<p><a href="<s:url action='index' />" >Return to home page</a>.</p> - -</body> -</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/form-processing/README.txt ---------------------------------------------------------------------- diff --git a/form-processing/README.txt b/form-processing/README.txt new file mode 100644 index 0000000..70e168f --- /dev/null +++ b/form-processing/README.txt @@ -0,0 +1,16 @@ +This is the example project referred to in the +Struts 2 documentation, Processing Forms tutorial. +See: http://struts.apache.org. + +To build the application's war file run mvn clean package +from the project's root folder. + +The war file is created in the target sub-folder. + +Copy the war file to your Servlet container (e.g. Tomcat, GlassFish) and +then startup the Servlet container. + +In a web browser go to: http://localhost:8080/form-processing/index.action. + +You should see a web page with Welcome to Struts 2! + http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/form-processing/pom.xml ---------------------------------------------------------------------- diff --git a/form-processing/pom.xml b/form-processing/pom.xml new file mode 100644 index 0000000..d355876 --- /dev/null +++ b/form-processing/pom.xml @@ -0,0 +1,22 @@ +<?xml version="1.0"?> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>struts.apache.org</groupId> + <artifactId>struts2examples</artifactId> + <version>1.0.0</version> + </parent> + <artifactId>form-processing</artifactId> + + <name>Form Processing</name> + + <description>Form processing example application for the Struts 2 getting started tutorials</description> + + <packaging>war</packaging> + + <build> + <finalName>form-processing</finalName> + </build> +</project> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/form-processing/src/main/java/org/apache/struts/helloworld/action/HelloWorldAction.java ---------------------------------------------------------------------- diff --git a/form-processing/src/main/java/org/apache/struts/helloworld/action/HelloWorldAction.java b/form-processing/src/main/java/org/apache/struts/helloworld/action/HelloWorldAction.java new file mode 100644 index 0000000..1285010 --- /dev/null +++ b/form-processing/src/main/java/org/apache/struts/helloworld/action/HelloWorldAction.java @@ -0,0 +1,79 @@ +package org.apache.struts.helloworld.action; + +import com.opensymphony.xwork2.ActionSupport; +import org.apache.struts.helloworld.model.MessageStore; + +/** + * Acts as a Struts 2 controller that responds + * to a user action by setting the value + * of the Message model class, and returns a String + * result. + * @author Bruce Phillips + * + */ +public class HelloWorldAction extends ActionSupport { + + private static final long serialVersionUID = 1L; + + /** + * The model class that stores the message + * to display in the view. + */ + private MessageStore messageStore; + + private static int helloCount = 0; + + public int getHelloCount() { + return helloCount; + } + + public void setHelloCount(int helloCount) { + HelloWorldAction.helloCount = helloCount; + } + + private String userName; + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + /* + * Creates the MessageStore model object, + * increase helloCount by 1 and + * returns success. The MessageStore model + * object will be available to the view. + * (non-Javadoc) + * @see com.opensymphony.xwork2.ActionSupport#execute() + */ + public String execute() throws Exception { + + messageStore = new MessageStore() ; + + //Action included a query string parameter of userName + //or a form field with name of userName + if (userName != null) { + + messageStore.setMessage( messageStore.getMessage() + " " + userName); + + } + + helloCount++; + + return SUCCESS; + } + + public MessageStore getMessageStore() { + return messageStore; + } + + public void setMessageStore(MessageStore messageStore) { + this.messageStore = messageStore; + } + + + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/form-processing/src/main/java/org/apache/struts/helloworld/model/MessageStore.java ---------------------------------------------------------------------- diff --git a/form-processing/src/main/java/org/apache/struts/helloworld/model/MessageStore.java b/form-processing/src/main/java/org/apache/struts/helloworld/model/MessageStore.java new file mode 100644 index 0000000..b7fceeb --- /dev/null +++ b/form-processing/src/main/java/org/apache/struts/helloworld/model/MessageStore.java @@ -0,0 +1,31 @@ +package org.apache.struts.helloworld.model; + +/** + * Model class that stores a message. + * @author Bruce Phillips + * + */ +public class MessageStore { + + private String message; + + public MessageStore() { + + setMessage("Hello Struts User"); + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String toString() { + + return message + " (from toString)"; + + } + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/form-processing/src/main/java/org/apache/struts/register/action/Register.java ---------------------------------------------------------------------- diff --git a/form-processing/src/main/java/org/apache/struts/register/action/Register.java b/form-processing/src/main/java/org/apache/struts/register/action/Register.java new file mode 100644 index 0000000..82cde07 --- /dev/null +++ b/form-processing/src/main/java/org/apache/struts/register/action/Register.java @@ -0,0 +1,39 @@ +package org.apache.struts.register.action; + +import com.opensymphony.xwork2.ActionSupport; +import org.apache.struts.register.model.Person; + +/** + * Acts as a controller to handle actions + * related to registering a user. + * @author bruce phillips + * + */ +public class Register extends ActionSupport { + + private static final long serialVersionUID = 1L; + + private Person personBean; + + + public String execute() throws Exception { + + //call Service class to store personBean's state in database + + return SUCCESS; + + } + + public Person getPersonBean() { + + return personBean; + + } + + public void setPersonBean(Person person) { + + personBean = person; + + } + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/form-processing/src/main/java/org/apache/struts/register/model/Person.java ---------------------------------------------------------------------- diff --git a/form-processing/src/main/java/org/apache/struts/register/model/Person.java b/form-processing/src/main/java/org/apache/struts/register/model/Person.java new file mode 100644 index 0000000..3020bbb --- /dev/null +++ b/form-processing/src/main/java/org/apache/struts/register/model/Person.java @@ -0,0 +1,62 @@ +package org.apache.struts.register.model; + + +/** + * Models a Person who registers. + * @author bruce phillips + * + */ +public class Person +{ + private String firstName; + private String lastName; + private String email; + private int age; + + public String getFirstName() + { + return firstName; + } + + public void setFirstName(String firstName) + { + this.firstName = firstName; + } + + public String getLastName() + { + return lastName; + } + + public void setLastName(String lastName) + { + this.lastName = lastName; + } + + public String getEmail() + { + return email; + } + + public void setEmail(String email) + { + this.email = email; + } + + public int getAge() + { + return age; + } + + public void setAge( int age) + { + this.age = age; + } + + + public String toString() + { + return "First Name: " + getFirstName() + " Last Name: " + getLastName() + + " Email: " + getEmail() + " Age: " + getAge() ; + } +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/form-processing/src/main/resources/log4j.dtd ---------------------------------------------------------------------- diff --git a/form-processing/src/main/resources/log4j.dtd b/form-processing/src/main/resources/log4j.dtd new file mode 100644 index 0000000..1aabd96 --- /dev/null +++ b/form-processing/src/main/resources/log4j.dtd @@ -0,0 +1,227 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- + 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. +--> + +<!-- Authors: Chris Taylor, Ceki Gulcu. --> + +<!-- Version: 1.2 --> + +<!-- A configuration element consists of optional renderer +elements,appender elements, categories and an optional root +element. --> + +<!ELEMENT log4j:configuration (renderer*, appender*,plugin*, (category|logger)*,root?, + (categoryFactory|loggerFactory)?)> + +<!-- The "threshold" attribute takes a level value below which --> +<!-- all logging statements are disabled. --> + +<!-- Setting the "debug" enable the printing of internal log4j logging --> +<!-- statements. --> + +<!-- By default, debug attribute is "null", meaning that we not do touch --> +<!-- internal log4j logging settings. The "null" value for the threshold --> +<!-- attribute can be misleading. The threshold field of a repository --> +<!-- cannot be set to null. The "null" value for the threshold attribute --> +<!-- simply means don't touch the threshold field, the threshold field --> +<!-- keeps its old value. --> + +<!ATTLIST log4j:configuration + xmlns:log4j CDATA #FIXED "http://jakarta.apache.org/log4j/" + threshold (all|trace|debug|info|warn|error|fatal|off|null) "null" + debug (true|false|null) "null" + reset (true|false) "false" +> + +<!-- renderer elements allow the user to customize the conversion of --> +<!-- message objects to String. --> + +<!ELEMENT renderer EMPTY> +<!ATTLIST renderer + renderedClass CDATA #REQUIRED + renderingClass CDATA #REQUIRED +> + +<!-- Appenders must have a name and a class. --> +<!-- Appenders may contain an error handler, a layout, optional parameters --> +<!-- and filters. They may also reference (or include) other appenders. --> +<!ELEMENT appender (errorHandler?, param*, + rollingPolicy?, triggeringPolicy?, connectionSource?, + layout?, filter*, appender-ref*)> +<!ATTLIST appender + name CDATA #REQUIRED + class CDATA #REQUIRED +> + +<!ELEMENT layout (param*)> +<!ATTLIST layout + class CDATA #REQUIRED +> + +<!ELEMENT filter (param*)> +<!ATTLIST filter + class CDATA #REQUIRED +> + +<!-- ErrorHandlers can be of any class. They can admit any number of --> +<!-- parameters. --> + +<!ELEMENT errorHandler (param*, root-ref?, logger-ref*, appender-ref?)> +<!ATTLIST errorHandler + class CDATA #REQUIRED +> + +<!ELEMENT root-ref EMPTY> + +<!ELEMENT logger-ref EMPTY> +<!ATTLIST logger-ref + ref CDATA #REQUIRED +> + +<!ELEMENT param EMPTY> +<!ATTLIST param + name CDATA #REQUIRED + value CDATA #REQUIRED +> + + +<!-- The priority class is org.apache.log4j.Level by default --> +<!ELEMENT priority (param*)> +<!ATTLIST priority + class CDATA #IMPLIED + value CDATA #REQUIRED +> + +<!-- The level class is org.apache.log4j.Level by default --> +<!ELEMENT level (param*)> +<!ATTLIST level + class CDATA #IMPLIED + value CDATA #REQUIRED +> + + +<!-- If no level element is specified, then the configurator MUST not --> +<!-- touch the level of the named category. --> +<!ELEMENT category (param*,(priority|level)?,appender-ref*)> +<!ATTLIST category + class CDATA #IMPLIED + name CDATA #REQUIRED + additivity (true|false) "true" +> + +<!-- If no level element is specified, then the configurator MUST not --> +<!-- touch the level of the named logger. --> +<!ELEMENT logger (level?,appender-ref*)> +<!ATTLIST logger + name CDATA #REQUIRED + additivity (true|false) "true" +> + + +<!ELEMENT categoryFactory (param*)> +<!ATTLIST categoryFactory + class CDATA #REQUIRED> + +<!ELEMENT loggerFactory (param*)> +<!ATTLIST loggerFactory + class CDATA #REQUIRED> + +<!ELEMENT appender-ref EMPTY> +<!ATTLIST appender-ref + ref CDATA #REQUIRED +> + +<!-- plugins must have a name and class and can have optional parameters --> +<!ELEMENT plugin (param*, connectionSource?)> +<!ATTLIST plugin + name CDATA #REQUIRED + class CDATA #REQUIRED +> + +<!ELEMENT connectionSource (dataSource?, param*)> +<!ATTLIST connectionSource + class CDATA #REQUIRED +> + +<!ELEMENT dataSource (param*)> +<!ATTLIST dataSource + class CDATA #REQUIRED +> + +<!ELEMENT triggeringPolicy ((param|filter)*)> +<!ATTLIST triggeringPolicy + name CDATA #IMPLIED + class CDATA #REQUIRED +> + +<!ELEMENT rollingPolicy (param*)> +<!ATTLIST rollingPolicy + name CDATA #IMPLIED + class CDATA #REQUIRED +> + + +<!-- If no priority element is specified, then the configurator MUST not --> +<!-- touch the priority of root. --> +<!-- The root category always exists and cannot be subclassed. --> +<!ELEMENT root (param*, (priority|level)?, appender-ref*)> + + +<!-- ==================================================================== --> +<!-- A logging event --> +<!-- ==================================================================== --> +<!ELEMENT log4j:eventSet (log4j:event*)> +<!ATTLIST log4j:eventSet + xmlns:log4j CDATA #FIXED "http://jakarta.apache.org/log4j/" + version (1.1|1.2) "1.2" + includesLocationInfo (true|false) "true" +> + + + +<!ELEMENT log4j:event (log4j:message, log4j:NDC?, log4j:throwable?, + log4j:locationInfo?, log4j:properties?) > + +<!-- The timestamp format is application dependent. --> +<!ATTLIST log4j:event + logger CDATA #REQUIRED + level CDATA #REQUIRED + thread CDATA #REQUIRED + timestamp CDATA #REQUIRED + time CDATA #IMPLIED +> + +<!ELEMENT log4j:message (#PCDATA)> +<!ELEMENT log4j:NDC (#PCDATA)> + +<!ELEMENT log4j:throwable (#PCDATA)> + +<!ELEMENT log4j:locationInfo EMPTY> +<!ATTLIST log4j:locationInfo + class CDATA #REQUIRED + method CDATA #REQUIRED + file CDATA #REQUIRED + line CDATA #REQUIRED +> + +<!ELEMENT log4j:properties (log4j:data*)> + +<!ELEMENT log4j:data EMPTY> +<!ATTLIST log4j:data + name CDATA #REQUIRED + value CDATA #REQUIRED +> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/form-processing/src/main/resources/log4j.xml ---------------------------------------------------------------------- diff --git a/form-processing/src/main/resources/log4j.xml b/form-processing/src/main/resources/log4j.xml new file mode 100644 index 0000000..2100cb2 --- /dev/null +++ b/form-processing/src/main/resources/log4j.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd"> + +<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> + + <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> + <layout class="org.apache.log4j.PatternLayout"> + <param name="ConversionPattern" value="%d %-5p %c.%M:%L - %m%n"/> + </layout> + </appender> + + <!-- specify the logging level for loggers from other libraries --> + <logger name="com.opensymphony"> + <level value="DEBUG" /> + </logger> + + <logger name="org.apache.struts2"> + <level value="DEBUG" /> + </logger> + + <!-- for all other loggers log only debug and above log messages --> + <root> + <priority value="INFO"/> + <appender-ref ref="STDOUT" /> + </root> + +</log4j:configuration> + http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/form-processing/src/main/resources/struts.xml ---------------------------------------------------------------------- diff --git a/form-processing/src/main/resources/struts.xml b/form-processing/src/main/resources/struts.xml new file mode 100644 index 0000000..e46b594 --- /dev/null +++ b/form-processing/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.0//EN" + "http://struts.apache.org/dtds/struts-2.0.dtd"> + +<struts> + + <constant name="struts.devMode" value="true" /> + + <package name="basicstruts2" extends="struts-default"> + + <!-- If no class attribute is specified the framework will assume success and + render the result index.jsp --> + <!-- If no name value for the result node is specified the success value is the default --> + <action name="index"> + <result>/index.jsp</result> + </action> + + <!-- If the URL is hello.action the call the execute method of class HelloWorldAction. + If the result returned by the execute method is success render the HelloWorld.jsp --> + <action name="hello" class="org.apache.struts.helloworld.action.HelloWorldAction" method="execute"> + <result name="success">/HelloWorld.jsp</result> + </action> + + <action name="register" class="org.apache.struts.register.action.Register" method="execute"> + <result name="success">/thankyou.jsp</result> + </action> + + </package> + +</struts> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/form-processing/src/main/webapp/HelloWorld.jsp ---------------------------------------------------------------------- diff --git a/form-processing/src/main/webapp/HelloWorld.jsp b/form-processing/src/main/webapp/HelloWorld.jsp new file mode 100644 index 0000000..286a6ab --- /dev/null +++ b/form-processing/src/main/webapp/HelloWorld.jsp @@ -0,0 +1,16 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@ taglib prefix="s" uri="/struts-tags" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Hello World!</title> +</head> +<body> +<h2><s:property value="messageStore.message" /></h2> +<p>I've said hello <s:property value="helloCount" /> times!</p> +<p><s:property value="messageStore" /></p> +<p><a href="<s:url action='index' />" >Return to home page</a>.</p> +</body> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/form-processing/src/main/webapp/META-INF/MANIFEST.MF ---------------------------------------------------------------------- diff --git a/form-processing/src/main/webapp/META-INF/MANIFEST.MF b/form-processing/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/form-processing/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/form-processing/src/main/webapp/WEB-INF/web.xml ---------------------------------------------------------------------- diff --git a/form-processing/src/main/webapp/WEB-INF/web.xml b/form-processing/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..84fe881 --- /dev/null +++ b/form-processing/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<web-app id="WebApp_ID" 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>Form_Processing_Struts2_Mvn</display-name> + <welcome-file-list> + <welcome-file>index.jsp</welcome-file> + </welcome-file-list> + + + <filter> + <filter-name>struts2</filter-name> + <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> + </filter> + + <filter-mapping> + <filter-name>struts2</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + +</web-app> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/form-processing/src/main/webapp/index.jsp ---------------------------------------------------------------------- diff --git a/form-processing/src/main/webapp/index.jsp b/form-processing/src/main/webapp/index.jsp new file mode 100644 index 0000000..091f505 --- /dev/null +++ b/form-processing/src/main/webapp/index.jsp @@ -0,0 +1,30 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@ taglib prefix="s" uri="/struts-tags" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Basic Struts 2 Application - Welcome</title> +</head> +<body> +<h1>Welcome To Struts 2!</h1> +<p><a href="<s:url action='hello'/>">Hello World</a></p> +<s:url action="hello" var="helloLink"> + <s:param name="userName">Bruce Phillips</s:param> +</s:url> +<p><a href="${helloLink}">Hello Bruce Phillips</a></p> + +<p>Get your own personal hello by filling out and submitting this form.</p> + +<s:form action="hello"> + + <s:textfield name="userName" label="Your name" /> + + <s:submit value="Submit" /> + +</s:form> + +<p><a href="register.jsp">Please register</a> for our prize drawing.</p> +</body> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/form-processing/src/main/webapp/register.jsp ---------------------------------------------------------------------- diff --git a/form-processing/src/main/webapp/register.jsp b/form-processing/src/main/webapp/register.jsp new file mode 100644 index 0000000..0adac76 --- /dev/null +++ b/form-processing/src/main/webapp/register.jsp @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<%@ taglib prefix="s" uri="/struts-tags" %> +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> +<title>Register</title> +</head> +<body> +<h3>Register for a prize by completing this form.</h3> + +<s:form action="register"> + + <s:textfield name="personBean.firstName" label="First name" /> + <s:textfield name="personBean.lastName" label="Last name" /> + <s:textfield name="personBean.email" label ="Email"/> + <s:textfield name="personBean.age" label="Age" /> + + <s:submit/> + +</s:form> + +</body> +</html> \ No newline at end of file
