/**
|
* 상기 프로그램에 대한 저작권을 포함한 지적재산권은 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<String, Object> resJsonData = new HashMap<String, Object>();
|
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> T getAttribute(String name, Class<T> 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> T getAttribute(String name, int scope, Class<T> 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> T getLoginUser(Class<T> clazz) {
|
return this.getAttribute(Constants.SESSION_ACCOUNT, clazz);
|
}
|
|
public User getLoginUserObject() {
|
|
if(SecurityUtils.getCurrentUser() == null)
|
return null;
|
|
return SecurityUtils.getCurrentUser();
|
}
|
}
|