X-Git-Url: https://juplo.de/gitweb/?p=percentcodec;a=blobdiff_plain;f=examples%2Fspring%2Fsrc%2Fmain%2Fjava%2Fde%2Fhalbekunst%2Fjuplo%2Fexamples%2Fspring%2FSpringController.java;fp=examples%2Fspring%2Fsrc%2Fmain%2Fjava%2Fde%2Fhalbekunst%2Fjuplo%2Fexamples%2Fspring%2FSpringController.java;h=2ce8f4e349266b492e61057b2a3d15696f9c6207;hp=0000000000000000000000000000000000000000;hb=50ced775c8833024f6afe9139e6299e985279e17;hpb=cfe8da54ba487edcfe4d5cbb61dc6587a96d4114 diff --git a/examples/spring/src/main/java/de/halbekunst/juplo/examples/spring/SpringController.java b/examples/spring/src/main/java/de/halbekunst/juplo/examples/spring/SpringController.java new file mode 100644 index 00000000..2ce8f4e3 --- /dev/null +++ b/examples/spring/src/main/java/de/halbekunst/juplo/examples/spring/SpringController.java @@ -0,0 +1,65 @@ +package de.halbekunst.juplo.examples.spring; + +import de.halbekunst.juplo.cachecontrol.annotations.CacheSeconds; +import de.halbekunst.juplo.cachecontrol.annotations.Cacheable; +import de.halbekunst.juplo.cachecontrol.annotations.LastModified; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.TreeMap; +import javax.servlet.http.HttpServletRequest; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + + +/** + * Simple Spring-MVC Controller + * @author kai + */ +@Controller +@Cacheable(eager=true) +public class SpringController +{ + public static final String ACCESS_TIME = SpringController.class.getCanonicalName() + ".ACCESS_TIME"; + public static final Integer DEFAULT_MAX_AGE = 60; + + private Date lastModified = new Date(); + private Map requests = new TreeMap(); + private Map accessTimes = new HashMap(); + + + @CacheSeconds + public int cacheSeconds(HttpServletRequest request) { + String maxAge = request.getParameter("max-age"); + if (maxAge != null && maxAge.matches("^\\s*\\d+\\s*$")) + return Integer.parseInt(maxAge); + else + return DEFAULT_MAX_AGE; + } + + @LastModified + public long lastModified(HttpServletRequest request) { + String query = request.getQueryString(); + query = query == null ? "" : query; + Date accessTime = accessTimes.get(query); + if (accessTime == null || !accessTime.equals(lastModified)) + /** Neuer Zugriff! */ + accessTime = new Date(); + request.setAttribute(ACCESS_TIME, accessTime); + return accessTime.getTime(); + } + + @RequestMapping("/spring-controller.html") + public ModelAndView process(HttpServletRequest request) + { + lastModified = (Date)request.getAttribute(ACCESS_TIME); + String query = request.getQueryString(); + query = query == null ? "" : query; + requests.put(lastModified, query); + accessTimes.put(query, lastModified); + ModelAndView mav = new ModelAndView("controller-view"); + mav.addObject("requests", requests); + return mav; + } +} \ No newline at end of file