I wrote this simple application to demostrate how to use webwork in a login/logout.
/Login.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head><body> <form action="login.action" method="post"> User id<input type="text" name="userId" /> <br/> Password <input type="password" name="passwd" /> <br /> <input type="submit" value="Login"/> </form> </body> </html>
/pages/welcome.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" Â Â Â pageEncoding="ISO-8859-1"%> <%@ taglib prefix="ww" uri="/webwork" %> <jsp:include page="WEB-INF/inc/loginCheck.jsp" /> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Welcome</title> </head> <body>Welcome, you have logined. <br /> The attribute of 'context' in session is <ww:property value="#session.context" /> <br /><br /><br /> <a xhref="<%= request.getContextPath() %>/logout.action">Logout</a> <br /> <a xhref="<%= request.getContextPath() %>/logout2.action">Logout2</a> </body> </html>
/WEB-INF/inc/loginCheck.jsp
<%@ taglib="/webwork" prefix="ww" %>
<ww:if test="#session.login != 'true'">
<jsp:forward page="<%= request.getContextPath() %>/login.jsp" />
</ww:if>
simple.LoginAction.java
 package simple; import java.util.Date; import javax.servlet.http.HttpSession; import com.opensymphony.webwork.ServletActionContext; import com.opensymphony.xwork.ActionSupport; public class LoginAction extends ActionSupport {    private String userId;    private String passwd;    public String execute() throws Exception {       if ("admin".equals(userId) && "password".equals(passwd)) {          HttpSession session = ServletActionContext.getRequest().getSession();          session.setAttribute("logined","true");          session.setAttribute("context", new Date());          return SUCCESS;       }       return ERROR;    }       public String logout() throws Exception {       HttpSession session = ServletActionContext.getRequest().getSession();       session.removeAttribute("logined");       session.removeAttribute("context");       return SUCCESS;    }    public String getPasswd() {       return passwd;    }       public void setPasswd(String passwd) {       this.passwd = passwd;    }       public String getUserId() {       return userId;    }       public void setUserId(String userId) {       this.userId = userId;    } }
simple.LogoutAction.java
package simple; import javax.servlet.http.HttpSession; import com.opensymphony.webwork.ServletActionContext; import com.opensymphony.xwork.ActionSupport; public class LogoutAction extends ActionSupport { Â Â Â public String execute() throws Exception { Â Â Â Â Â Â HttpSession session = ServletActionContext.getRequest().getSession(); Â Â Â Â Â Â session.removeAttribute("logined"); Â Â Â Â Â Â session.removeAttribute("context"); Â Â Â Â Â Â return SUCCESS; Â Â Â } }
/WEB-INF/classes/xwork.xml
 <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd"> <xwork>    <include file="webwork-default.xml"/>    <package name="default" extends="webwork-default">        <!-- Add your actions here -->        <action name="login" class="simple.LoginAction" >           <result name="success" type="dispatcher">/pages/welcome.jsp</result>           <result name="error" type="redirect">/login.jsp</result>        </action>               <action name="logout2" class="simple.LoginAction" method="logout" >           <result name="success" type="redirect">/login.jsp</result>        </action>               <action name="logout" class="simple.LogoutAction" >           <result name="success" type="redirect">/login.jsp</result>        </action>    </package> </xwork>