package org.superbiz.struts;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Properties;
public class AddUser {
private int id;
private String firstName;
private String lastName;
private String errorMessage;
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 getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String execute() {
try {
UserService service = null;
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.openejb.core.LocalInitialContextFactory");
Context ctx = new InitialContext(props);
service = (UserService) ctx.lookup("UserServiceImplLocal");
service.add(new User(id, firstName, lastName));
} catch (Exception e) {
this.errorMessage = e.getMessage();
return "failure";
}
return "success";
}
}
Struts
Help us document this example! Click the blue pencil icon in the upper right to edit this page.
AddUser
AddUserForm
package org.superbiz.struts;
import com.opensymphony.xwork2.ActionSupport;
public class AddUserForm extends ActionSupport {
}
FindUser
package org.superbiz.struts;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Properties;
public class FindUser {
private int id;
private String errorMessage;
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String execute() {
try {
UserService service = null;
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.openejb.core.LocalInitialContextFactory");
Context ctx = new InitialContext(props);
service = (UserService) ctx.lookup("UserServiceImplLocal");
this.user = service.find(id);
} catch (Exception e) {
this.errorMessage = e.getMessage();
return "failure";
}
return "success";
}
}
FindUserForm
package org.superbiz.struts;
import com.opensymphony.xwork2.ActionSupport;
public class FindUserForm extends ActionSupport {
}
ListAllUsers
package org.superbiz.struts;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.List;
import java.util.Properties;
public class ListAllUsers {
private int id;
private String errorMessage;
private List<User> users;
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String execute() {
try {
UserService service = null;
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.openejb.core.LocalInitialContextFactory");
Context ctx = new InitialContext(props);
service = (UserService) ctx.lookup("UserServiceImplLocal");
this.users = service.findAll();
} catch (Exception e) {
this.errorMessage = e.getMessage();
return "failure";
}
return "success";
}
}
User
package org.superbiz.struts;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import java.io.Serializable;
@Entity
@Table(name = "USER")
public class User implements Serializable {
private long id;
private String firstName;
private String lastName;
public User(long id, String firstName, String lastName) {
super();
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
}
public User() {
}
@Id
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
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;
}
}
UserService
package org.superbiz.struts;
import java.util.List;
public interface UserService {
public void add(User user);
public User find(int id);
public List<User> findAll();
}
UserServiceImpl
package org.superbiz.struts;
import jakarta.ejb.Stateless;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import java.util.List;
@Stateless
public class UserServiceImpl implements UserService {
@PersistenceContext(unitName = "user")
private EntityManager manager;
public void add(User user) {
manager.persist(user);
}
public User find(int id) {
return manager.find(User.class, id);
}
public List<User> findAll() {
return manager.createQuery("select u from User u").getResultList();
}
}
persistence.xml
</persistence-unit>
-->
</persistence>
struts.xml
<struts>
<constant name="struts.devMode" value="true"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="addUserForm" class="org.superbiz.struts.AddUserForm">
<result>/addUserForm.jsp</result>
</action>
<action name="addUser" class="org.superbiz.struts.AddUser">
<result name="success">/addedUser.jsp</result>
<result name='failure'>/addUserForm.jsp</result>
</action>
<action name="findUserForm" class="org.superbiz.struts.FindUserForm">
<result>/findUserForm.jsp</result>
</action>
<action name="findUser" class="org.superbiz.struts.FindUser">
<result name='success'>/displayUser.jsp</result>
<result name='failure'>/findUserForm.jsp</result>
</action>
<action name="listAllUsers" class="org.superbiz.struts.ListAllUsers">
<result>/displayUsers.jsp</result>
</action>
</package>
</struts>
decorators.xml
<decorators defaultdir="/decorators">
<decorator name="main" page="layout.jsp">
<pattern>/*</pattern>
</decorator>
</decorators>
web.xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>Learn EJB3 and Struts2</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>com.lq</param-value>
</init-param>
</filter>
<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<jsp-config>
<jsp-property-group>
<description>JSP configuration of all the JSP's</description>
<url-pattern>*.jsp</url-pattern>
<include-prelude>/prelude.jspf</include-prelude>
</jsp-property-group>
</jsp-config>
</web-app>