@UndertowExample("Session Handling")
public class SessionServer {
public static void main(String[] args) {
PathHandler pathHandler = new PathHandler();
pathHandler.addPrefixPath("/", new HttpHandler() {
public void handleRequest(HttpServerExchange exchange)
throws Exception {
StringBuilder sb = new StringBuilder();
sb.append("<form action='addToSession' >");
sb.append("<label>Attribute Name</label>");
sb.append("<input name='attrName' />");
sb.append("<label>Attribute Value</label>");
sb.append("<input name='value' />");
sb.append("<button>Save to Session</button>");
// To retrive the SessionManager use the attachmentKey
SessionManager sm = exchange
.getAttachment(SessionManager.ATTACHMENT_KEY);
// same goes to SessionConfig
SessionConfig sessionConfig = exchange
.getAttachment(SessionConfig.ATTACHMENT_KEY);
sb.append("</form>");
sb.append("<a href='/destroySession'>Destroy Session</a>");
sb.append("<br/>");
Session session = sm.getSession(exchange, sessionConfig);
if (session == null)
session = sm.createSession(exchange, sessionConfig);
sb.append("<ul>");
for (String string : session.getAttributeNames()) {
sb.append("<li>" + string + " : "
+ session.getAttribute(string) + "</li>");
}
sb.append("</ul>");
exchange.getResponseHeaders().add(Headers.CONTENT_TYPE,
"text/html;");
exchange.getResponseSender().send(sb.toString());
}
});
pathHandler.addPrefixPath("/addToSession", new HttpHandler() {
@Override
public void handleRequest(HttpServerExchange exchange)
throws Exception {
SessionManager sm = exchange
.getAttachment(SessionManager.ATTACHMENT_KEY);
SessionConfig sessionConfig = exchange
.getAttachment(SessionConfig.ATTACHMENT_KEY);
Map<String, Deque<String>> reqParams = exchange
.getQueryParameters();
Session session = sm.getSession(exchange, sessionConfig);
if (session == null)
session = sm.createSession(exchange, sessionConfig);
Deque<String> deque = reqParams.get("attrName");
Deque<String> dequeVal = reqParams.get("value");
session.setAttribute(deque.getLast(), dequeVal.getLast());
exchange.setResponseCode(StatusCodes.TEMPORARY_REDIRECT);
exchange.getResponseHeaders().put(Headers.LOCATION, "/");
exchange.getResponseSender().close();
}
});
pathHandler.addPrefixPath("/destroySession", new HttpHandler() {
public void handleRequest(HttpServerExchange exchange)
throws Exception {
SessionManager sm = exchange
.getAttachment(SessionManager.ATTACHMENT_KEY);
SessionConfig sessionConfig = exchange