/** * 상기 프로그램에 대한 저작권을 포함한 지적재산권은 WiseStone에 있으며, * WiseStone이 명시적으로 허용하지 않은 사용, 복사, 변경, 제3자에의 공개, * 배포는 엄격히 금지되며, WiseStone의 지적재산권 침해에 해당됩니다. * (Copyright ⓒ 2014 WiseStone Co., Ltd. All Rights Reserved|Confidential) *----------------------------------------------------------------------------- * You are strictly prohibited to copy, disclose, distribute, modify, * or use this program in part or as a whole without the prior written * consent of WiseStone Co., Ltd. WiseStone Co., Ltd., owns the * intellectual property rights in and to this program. * (Copyright ⓒ 2014 WiseStone Co., Ltd. All Rights Reserved|Confidential) *----------------------------------------------------------------------------- */ package kr.wisestone.owl.util; import com.google.gson.Gson; import kr.wisestone.owl.common.MessageAccessor; import kr.wisestone.owl.constant.Constants; import kr.wisestone.owl.domain.User; import kr.wisestone.owl.vo.UserVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.Writer; import java.util.HashMap; import java.util.Map; public class WebAppUtil { private static final Logger LOGGER = LoggerFactory.getLogger(WebAppUtil.class); public static HttpServletRequest getHttpServletRequest() { RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); if (requestAttributes == null) { return null; } return ((ServletRequestAttributes) requestAttributes).getRequest(); } public static void sessionInvalidate() { sessionInvalidate(getHttpServletRequest()); } public static void sessionInvalidate(HttpServletRequest request) { HttpSession session = request.getSession(false); if (session != null) { session.invalidate(); } } public static ServletContext getServletContext() { return getHttpServletRequest().getSession().getServletContext(); } public static String getContextPath() { return getServletContext().getContextPath(); } /** * 파일 실제 저장할 물리 위치를 가져온다. * * @param * @param * @return realPath(String) */ public static String getContextRealPath() { return getServletContext().getRealPath("/"); } public static Long getLoginId(HttpServletRequest request) { UserVo UserVo = getLoginUser(request); if (UserVo == null) { return null; } return UserVo.getId(); } public static UserVo getLoginUser(HttpServletRequest request) { HttpSession session = request.getSession(); if (session == null) { return null; } return (UserVo) session.getAttribute(Constants.SESSION_ACCOUNT); } public static UserVo getLoginUser(HttpSession session) { return (UserVo) session.getAttribute(Constants.SESSION_ACCOUNT); } public static String getRequestUrl(HttpServletRequest request) { String[] findUrltoPerm = request.getRequestURI().split(request.getServletContext().getContextPath()); return findUrltoPerm[1]; } public static String getHost() { HttpServletRequest request = WebAppUtil.getHttpServletRequest(); if(request == null) return ""; String host = request.getServerName(); if("127.0.0.1".equals(host)) host = CommonUtil.getServerIpAddress(); return "http://"+host+":"+request.getServerPort(); } public static String getSystemUrl() { return WebAppUtil.getHost()+WebAppUtil.getContextPath(); } /** * 에러 응답 생성 * * @param response * @param errorCode MsgConstants * @throws IOException */ public static void responseException(HttpServletResponse response, String errorCode, MessageAccessor ma) throws IOException { Map resJsonData = new HashMap(); resJsonData.put(Constants.RES_KEY_MESSAGE, ma.getResMessage( errorCode, Constants.RES_KEY_MSG_FAIL)); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); Writer writer = null; try { writer = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "utf-8")); writer.write(new Gson().toJson(resJsonData)); writer.flush(); } catch (Exception e) { LOGGER.error("응답 데이터 생성 오류", e); } finally { if (writer != null) { writer.close(); } } } /** * Session 또는 Request에 입력된 값을 저장한다. * * @param name * @param value * @param scope */ public static void setAttribute(String name, Object value, int scope) { RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); if (requestAttributes == null) { return; } requestAttributes.setAttribute(name, value, scope); } /** * Session에 입력된 값을 저장한다. * * @param name * @param value */ public static void setSessionAttribute(String name, Object value) { setAttribute(name, value, RequestAttributes.SCOPE_SESSION); } /** * Session에서 입력된 속성명에 해당하는 값을 얻는다. * 속성명에 해당하는 값이 존재하지 않으면 Null을 반환한다. * * @param name * @param clazz Entity, Vo만 지원 * @return */ public T getAttribute(String name, Class clazz) { return this.getAttribute(name, RequestAttributes.SCOPE_SESSION, clazz); } /** * Session 또는 Request에서 입력된 속성명에 해당하는 값을 얻는다. * 속성명에 해당하는 값이 존재하지 않으면 Null을 반환한다. * * @param name 속성명 * @param scope RequestAttributes.SCOPE_SESSION, SCOPE_REQUEST * @return */ public Object getAttribute(String name, int scope) { RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); if (requestAttributes == null) { return null; } return requestAttributes.getAttribute(name, scope); } /** * Session 또는 Request에서 입력된 속성명에 해당하는 값을 얻는다. * 속성명에 해당하는 값이 존재하지 않으면 Null을 반환한다. * * @param name * @param scope RequestAttributes.SCOPE_SESSION, SCOPE_REQUEST * @param clazz Entity, Vo만 지원 * @return */ @SuppressWarnings("unchecked") public T getAttribute(String name, int scope, Class clazz) { Object object = this.getAttribute(name, scope); if (object == null) { return null; } return (T) object; } /** * 로그인한 사용자의 ID를 반환한다. * * @return */ public Long getLoginId() { UserVo userVo = this.getLoginUser(); if (userVo == null) { return null; } return userVo.getId(); } /** * @return */ public UserVo getLoginUser() { User user = SecurityUtils.getCurrentUser(); if(user == null) { return null; } UserVo userVo = ConvertUtil.copyProperties(user, UserVo.class); if (user.getSocialType() != null) { userVo.setSocialType(user.getSocialType().toString()); } userVo.setPassword(null); return userVo; } public T getLoginUser(Class clazz) { return this.getAttribute(Constants.SESSION_ACCOUNT, clazz); } public User getLoginUserObject() { if(SecurityUtils.getCurrentUser() == null) return null; return SecurityUtils.getCurrentUser(); } }