SessionContext.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. package com.udapsoft.waf.system.context;
  2. import java.util.Enumeration;
  3. import java.util.Locale;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import kr.co.hsnc.common.util.ValueObject;
  7. import kr.co.hsnc.j2ee.waf.controller.web.context.AbstractSessionContext;
  8. import kr.co.hsnc.j2ee.waf.controller.web.util.WebKeys;
  9. import com.udapsoft.waf.system.HandlerStorage;
  10. import com.udapsoft.waf.system.ParameterParser;
  11. public class SessionContext extends AbstractSessionContext {
  12. private static final long serialVersionUID = 2397955132580073793L;
  13. private HttpServletRequest request;
  14. /**
  15. * 초기화
  16. */
  17. public void init(HttpServletRequest request, HttpServletResponse response) {
  18. super.init(request, response);
  19. this.request = request;
  20. /**
  21. * 브라우저 Cache Expire 시키기
  22. */
  23. if (request.getProtocol().compareTo("HTTP/1.0") == 0) {
  24. response.setHeader("Pragma", "no-cache");
  25. } else if (request.getProtocol().compareTo("HTTP/1.1") == 0) {
  26. response.setHeader("Cache-Control", "no-cache");
  27. }
  28. response.setDateHeader("Expires", 0);
  29. }
  30. /**
  31. * 요청에 대한 처리를 한다.
  32. */
  33. public void processRequest(HttpServletRequest request,
  34. HttpServletResponse response) {
  35. }
  36. /**
  37. * 사용자의 로그인 여부를 리턴한다.
  38. *
  39. * @return 로그인 여부
  40. */
  41. public boolean isSignedOn() {
  42. ValueObject user = getUser();
  43. if (user != null && user.size() < 1) {
  44. return false;
  45. } else {
  46. return true;
  47. }
  48. }
  49. /**
  50. * 세션에 로그인 사용자의 정보를 저장한다.
  51. */
  52. public void setUser(ValueObject user) {
  53. bind("USER", user);
  54. }
  55. /**
  56. * 세션에 저장해둔 로그인 사용자의 정보를 얻어온다.
  57. */
  58. public ValueObject getUser() {
  59. ValueObject user = (ValueObject) lookup(WebKeys.SIGNED_ON_USER);
  60. if (user == null) {
  61. user = new ValueObject();
  62. }
  63. return user;
  64. }
  65. /**
  66. * request에 담겨온 파라메터를 얻는다.
  67. *
  68. * @return ValueObject
  69. */
  70. public ValueObject getParams() {
  71. return getParams(false);
  72. }
  73. /**
  74. * request에 담겨온 파라메터를 얻는다.
  75. *
  76. * @return ValueObject
  77. */
  78. public ValueObject getParams(boolean isCaseSensitive) {
  79. ParameterParser parameterParser = new ParameterParser(this.request);
  80. return parameterParser.getParams();
  81. }
  82. /**
  83. * request URL에 담겨온 파라메터 문자열을 리턴한다. URL에 파라메터가 없다면 ""을 리턴한다.
  84. *
  85. * @return 파라메터 문자열
  86. */
  87. public String getQueryString() {
  88. StringBuffer query = new StringBuffer();
  89. Enumeration<String> enu = getRequest().getParameterNames();
  90. String key = null;
  91. while (enu.hasMoreElements()) {
  92. key = (String) enu.nextElement();
  93. query.append(key).append("=")
  94. .append(getRequest().getParameter(key)).append("&");
  95. }
  96. if (query.length() > 0) {
  97. query.setLength(query.length() - 1);
  98. return "?" + query.toString();
  99. } else {
  100. return "";
  101. }
  102. }
  103. /**
  104. * Store a message in this Session
  105. */
  106. public void setMessage(String message) {
  107. bind(WebKeys.MESSAGE, message);
  108. }
  109. /**
  110. * Returns the value of the named attribute(MESSAGE) as a String
  111. */
  112. public String getMessage() {
  113. String message = (String) lookup(WebKeys.MESSAGE);
  114. if (message == null) {
  115. message = "";
  116. } else {
  117. unbind(WebKeys.MESSAGE);
  118. }
  119. return message;
  120. }
  121. /**
  122. * Store a message in this Session
  123. */
  124. public void setMessageCode(String code) {
  125. bind(WebKeys.MESSAGE_CODE, code);
  126. }
  127. /**
  128. * Returns the value of the named attribute(MESSAGE) as a String
  129. */
  130. public String getMessageCode() {
  131. String code = (String) lookup(WebKeys.MESSAGE_CODE);
  132. if (code == null) {
  133. code = "";
  134. } else {
  135. unbind(WebKeys.MESSAGE_CODE);
  136. }
  137. return code;
  138. }
  139. /**
  140. * Biz단에서 처리한 HandlerStorage를 리턴한다.
  141. *
  142. * @return
  143. */
  144. public HandlerStorage getHandlerStorage() {
  145. String storageKey = (String) this.request.getAttribute(HandlerStorage.KEY);
  146. HandlerStorage storage = (HandlerStorage) getAttribute(storageKey);
  147. return storage;
  148. // return (HandlerStorage)getAttribute(HandlerStorage.KEY);
  149. }
  150. /**
  151. * Screen Name을 리턴한다.
  152. *
  153. * @return
  154. */
  155. public String getScreenName() {
  156. String screenName = this.getRequestURI();
  157. if (screenName.lastIndexOf("/") > 0) {
  158. screenName = screenName.substring(screenName.lastIndexOf("/") + 1, screenName.length());
  159. }
  160. return screenName;
  161. }
  162. /**
  163. * @return
  164. */
  165. public String getEvent() {
  166. return getParams().get("fevent");
  167. }
  168. /**
  169. * @return
  170. */
  171. public String getResultType() {
  172. return getParams().get("result_type", "SUCCESS");
  173. }
  174. /**
  175. * Server에 도메인을 리턴한다. ex> http://www.sample.co.kr:80/ ex>
  176. * http://www.sample.co.kr:80/contextName/
  177. *
  178. * @return
  179. */
  180. public String getServerDomain() {
  181. String str = "";
  182. str += super.getRequest().getScheme() + "://"
  183. + super.getRequest().getServerName() + ":"
  184. + super.getRequest().getServerPort();
  185. if (!super.getRequest().getContextPath().equals("")) {
  186. str += "/" + super.getRequest().getContextPath();
  187. }
  188. return str;
  189. }
  190. /**
  191. * 시스템에서 사용하는 로케일을 리턴
  192. *
  193. * @return
  194. */
  195. public Locale getLocale() {
  196. return (Locale) (super.getRequest().getSession().getAttribute(WebKeys.LOCALE));
  197. }
  198. /**
  199. * 요청한 URI를 리턴
  200. *
  201. * @return
  202. */
  203. public String getRequestURI() {
  204. return (String) this.request.getSession().getAttribute(WebKeys.CURRENT_URI);
  205. }
  206. }