123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- package com.udapsoft.waf.system.context;
- import java.util.Enumeration;
- import java.util.Locale;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import kr.co.hsnc.common.util.ValueObject;
- import kr.co.hsnc.j2ee.waf.controller.web.context.AbstractSessionContext;
- import kr.co.hsnc.j2ee.waf.controller.web.util.WebKeys;
- import com.udapsoft.waf.system.HandlerStorage;
- import com.udapsoft.waf.system.ParameterParser;
- public class SessionContext extends AbstractSessionContext {
- private static final long serialVersionUID = 2397955132580073793L;
- private HttpServletRequest request;
- /**
- * 초기화
- */
- public void init(HttpServletRequest request, HttpServletResponse response) {
- super.init(request, response);
- this.request = request;
- /**
- * 브라우저 Cache Expire 시키기
- */
- if (request.getProtocol().compareTo("HTTP/1.0") == 0) {
- response.setHeader("Pragma", "no-cache");
- } else if (request.getProtocol().compareTo("HTTP/1.1") == 0) {
- response.setHeader("Cache-Control", "no-cache");
- }
- response.setDateHeader("Expires", 0);
- }
- /**
- * 요청에 대한 처리를 한다.
- */
- public void processRequest(HttpServletRequest request,
- HttpServletResponse response) {
- }
- /**
- * 사용자의 로그인 여부를 리턴한다.
- *
- * @return 로그인 여부
- */
- public boolean isSignedOn() {
- ValueObject user = getUser();
- if (user != null && user.size() < 1) {
- return false;
- } else {
- return true;
- }
- }
- /**
- * 세션에 로그인 사용자의 정보를 저장한다.
- */
- public void setUser(ValueObject user) {
- bind("USER", user);
- }
- /**
- * 세션에 저장해둔 로그인 사용자의 정보를 얻어온다.
- */
- public ValueObject getUser() {
- ValueObject user = (ValueObject) lookup(WebKeys.SIGNED_ON_USER);
- if (user == null) {
- user = new ValueObject();
- }
- return user;
- }
- /**
- * request에 담겨온 파라메터를 얻는다.
- *
- * @return ValueObject
- */
- public ValueObject getParams() {
- return getParams(false);
- }
- /**
- * request에 담겨온 파라메터를 얻는다.
- *
- * @return ValueObject
- */
- public ValueObject getParams(boolean isCaseSensitive) {
- ParameterParser parameterParser = new ParameterParser(this.request);
- return parameterParser.getParams();
- }
- /**
- * request URL에 담겨온 파라메터 문자열을 리턴한다. URL에 파라메터가 없다면 ""을 리턴한다.
- *
- * @return 파라메터 문자열
- */
- public String getQueryString() {
- StringBuffer query = new StringBuffer();
- Enumeration<String> enu = getRequest().getParameterNames();
- String key = null;
- while (enu.hasMoreElements()) {
- key = (String) enu.nextElement();
- query.append(key).append("=")
- .append(getRequest().getParameter(key)).append("&");
- }
- if (query.length() > 0) {
- query.setLength(query.length() - 1);
- return "?" + query.toString();
- } else {
- return "";
- }
- }
- /**
- * Store a message in this Session
- */
- public void setMessage(String message) {
- bind(WebKeys.MESSAGE, message);
- }
- /**
- * Returns the value of the named attribute(MESSAGE) as a String
- */
- public String getMessage() {
- String message = (String) lookup(WebKeys.MESSAGE);
- if (message == null) {
- message = "";
- } else {
- unbind(WebKeys.MESSAGE);
- }
- return message;
- }
- /**
- * Store a message in this Session
- */
- public void setMessageCode(String code) {
- bind(WebKeys.MESSAGE_CODE, code);
- }
- /**
- * Returns the value of the named attribute(MESSAGE) as a String
- */
- public String getMessageCode() {
- String code = (String) lookup(WebKeys.MESSAGE_CODE);
- if (code == null) {
- code = "";
- } else {
- unbind(WebKeys.MESSAGE_CODE);
- }
- return code;
- }
- /**
- * Biz단에서 처리한 HandlerStorage를 리턴한다.
- *
- * @return
- */
- public HandlerStorage getHandlerStorage() {
- String storageKey = (String) this.request.getAttribute(HandlerStorage.KEY);
- HandlerStorage storage = (HandlerStorage) getAttribute(storageKey);
- return storage;
- // return (HandlerStorage)getAttribute(HandlerStorage.KEY);
- }
- /**
- * Screen Name을 리턴한다.
- *
- * @return
- */
- public String getScreenName() {
- String screenName = this.getRequestURI();
- if (screenName.lastIndexOf("/") > 0) {
- screenName = screenName.substring(screenName.lastIndexOf("/") + 1, screenName.length());
- }
- return screenName;
- }
- /**
- * @return
- */
- public String getEvent() {
- return getParams().get("fevent");
- }
- /**
- * @return
- */
- public String getResultType() {
- return getParams().get("result_type", "SUCCESS");
- }
- /**
- * Server에 도메인을 리턴한다. ex> http://www.sample.co.kr:80/ ex>
- * http://www.sample.co.kr:80/contextName/
- *
- * @return
- */
- public String getServerDomain() {
- String str = "";
- str += super.getRequest().getScheme() + "://"
- + super.getRequest().getServerName() + ":"
- + super.getRequest().getServerPort();
- if (!super.getRequest().getContextPath().equals("")) {
- str += "/" + super.getRequest().getContextPath();
- }
- return str;
- }
- /**
- * 시스템에서 사용하는 로케일을 리턴
- *
- * @return
- */
- public Locale getLocale() {
- return (Locale) (super.getRequest().getSession().getAttribute(WebKeys.LOCALE));
- }
- /**
- * 요청한 URI를 리턴
- *
- * @return
- */
- public String getRequestURI() {
- return (String) this.request.getSession().getAttribute(WebKeys.CURRENT_URI);
- }
- }
|