ClassCastExceptionに嫌気が差した。
ぬるぽにも嫌気が差した。
使う側でキャストせず、リターン型の決まったメソッドを使って取得。
Pythonみたいに、nullだった場合のデフォルト値も指定出来る。
型は今回必要なものだけ作った。
Pythonは最初から便利なメソッドが用意されてるから困らない。
Rubyは自分でメソッド追加出来るから困らない。
Javaは継承するかラップするかしか出来なくて困る。
Javaを極めた人なら、もっといいやり方が思いつくのかも知れないけど。
最近Struts(というかTerasoluna)を初めて使って、構造を理解するまでに時間がかかった。
Rubyだったらattr_accessorで簡単に書けるような単純なsetter/getterをひたすらFormに定義したりして、なかなか面倒。
HttpServletRequestWrap
package jp.eth0.http; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.*; import java.text.SimpleDateFormat; public class HttpServletRequestWrap { protected HttpServletRequest request; protected HttpSession session; public HttpServletRequestWrap(HttpServletRequest request) { this.request = request; this.session = request.getSession(); } public HttpServletRequest getRequest() { return request; } public HttpSession getSession() { return session; } /* Parameter */ // Object public Object getParameter(String key) { return request.getParameter(key); } public Object getParameter(String key, Object defaultValue) { Object value = getParameter(key); if (value==null) { value = defaultValue; } return value; } // String public String getStringParameter(String key) { String value = null; try { value = getParameter(key).toString(); } catch (Exception e) { } return value; } public String getStringParameter(String key, String defaultValue) { String value = getStringParameter(key); if (value==null) { value = defaultValue; } return value; } // Integer public Integer getIntegerParameter(String key) { Integer value = null; try { value = Integer.parseInt(getStringParameter(key)); } catch (Exception e) { } return value; } public Integer getIntegerParameter(String key, Integer defaultValue) { Integer value = getIntegerParameter(key); if (value==null) { value = defaultValue; } return value; } // Date public Date getDateParameter(String key, String format) { Date value = null; try { SimpleDateFormat dateFormat = new SimpleDateFormat(format); value = dateFormat.parse(getParameter(key).toString()); } catch (Exception e) { } return value; } public Date getDateParameter(String key, String format, Date defaultValue) { Date value = getDateParameter(key, format); if (value==null) { value = defaultValue; } return value; } public Date getDateParameter(String key, String format, String defaultValue) { Date value = getDateParameter(key, format); if (value==null && defaultValue!=null) { try { SimpleDateFormat dateFormat = new SimpleDateFormat(format); value = dateFormat.parse(defaultValue); } catch (Exception e) { } } return value; } /* Session */ // Object public void setSession(String key, Object value) { session.setAttribute(key, value); } public Object getSession(String key) { return session.getAttribute(key); } public Object getSession(String key, Object defaultValue) { Object value = getSession(key); if (value==null) { value = defaultValue; } return value; } // String public String getStringSession(String key) { String value = null; try { value = getSession(key).toString(); } catch (Exception e) { } return value; } public String getStringSession(String key, String defaultValue) { String value = getStringSession(key); if (value==null) { value = defaultValue; } return value; } // Integer public Integer getIntegerSession(String key) { Integer value = null; try { value = Integer.parseInt(getStringSession(key)); } catch (Exception e) { } return value; } public Integer getIntegerSession(String key, Integer defaultValue) { Integer value = getIntegerSession(key); if (value==null) { value = defaultValue; } return value; } // Boolean public Boolean getBooleanSession(String key) { Boolean value = null; try { Object valueObj = getSession(key); if (valueObj!=null) { value = Boolean.parseBoolean(valueObj.toString()); } } catch (Exception e) { } return value; } public Boolean getBooleanSession(String key, Boolean defaultValue) { Boolean value = getBooleanSession(key); if (value==null) { value = defaultValue; } return value; } // HashMap public HashMap getHashSession(String sessionKey) { HashMap hash = null; try { hash = (HashMap)getSession(sessionKey); } catch (Exception e) { } if (hash==null) { hash = new HashMap(); setSession(sessionKey, hash); } return hash; } @SuppressWarnings("unchecked") public void addHashSession(String sessionKey, Object hashKey, Object hashValue) { getHashSession(sessionKey).put(hashKey, hashValue); } public void removeHashSession(String sessionKey, Object hashKey) { getHashSession(sessionKey).remove(hashKey); } }