```java
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
public class MyServlet extends HttpServlet {
private Cache cache;
public void init() {
CacheManager cacheManager = CacheManager.getInstance();
cache = cacheManager.getCache("myCache");
}
public void doGet(HttpServletRequest request, HttpServletResponse response) {
String key = request.getParameter("key");
Element element = cache.get(key);
if (element != null) {
String value = (String) element.getObjectValue();
response.getWriter().write(value);
} else {
String value = computeValue(key);
cache.put(new Element(key, value));
response.getWriter().write(value);
}
}
private String computeValue(String key) {
return "computed value";
}
}
```
```xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="200" />
```
```java
public void doGet(HttpServletRequest request, HttpServletResponse response) {
String ifNoneMatch = request.getHeader("If-None-Match");
if (ifNoneMatch != null && ifNoneMatch.equals(getETag())) {
response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
return;
}
response.setHeader("ETag", getETag());
response.setHeader("Cache-Control", "public, max-age=3600");
response.getWriter().write("Hello, World!");
}
private String getETag() {
return "12345";
}
```