package com.terrace.action.login;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.terrace.util.JsonUtil;
/**
* 前台Action类 - 前台基类
*/
public class BaseTerraceAction extends ActionSupport {
protected Logger logger = Logger.getLogger(getClass());
private static final long serialVersionUID = 6718838811223344556L;
private static final String HEADER_ENCODING = "UTF-8";
private static final boolean HEADER_NO_CACHE = true;
private static final String HEADER_TEXT_CONTENT_TYPE = "text/plain";
private static final String HEADER_JSON_CONTENT_TYPE = "text/plain";
public static final String VIEW = "view";
public static final String LIST = "list";
public static final String SUCCESS = "success";
public static final String FAIL = "fail";
public static final String ERROR = "error";
public static final String REDIRECT = "redirect";
public static final String STATUS_PARAMETER_NAME = "status";// 操作状态参数名称
public static final String MESSAGE_PARAMETER_NAME = "message";// 操作消息参数名称
// 操作状态(警告、错误、成功)
public enum Status {
warn, error, success
}
protected String id;
protected String[] ids;
protected String redirectUrl;// 跳转URL
private String jsonpcallback;
/*
@Resource(name = "accountServiceImpl")
protected AccountService accountService;
// 获取系统配置信息
public Setting getSetting() {
return SettingUtil.getSetting();
}
// 获取货币格式字符串
public String getCurrencyFormat() {
return SettingUtil.getCurrencyFormat();
}
// 获取当前登录会员,若未登录则返回null
public Account getLoginAccount() {
String accountId = (String) getSession(Account.ACCOUNT_SESSION_NAME);
Account account = accountService.load(accountId);
if (account == null) {
return null;
}
return account;
}
*/
// 判断是否为添加
public Boolean getIsAddAction() {
if (id == null) {
return true;
} else {
return false;
}
}
// 判断是否为编辑
public Boolean getIsEditAction() {
if (id != null) {
return true;
} else {
return false;
}
}
// 获取Request
protected HttpServletRequest getRequest() {
return ServletActionContext.getRequest();
}
// 获取Response
protected HttpServletResponse getResponse() {
return ServletActionContext.getResponse();
}
// 获取ServletContext
protected ServletContext getServletContext() {
return ServletActionContext.getServletContext();
}
// 获取Attribute
protected Object getAttribute(String name) {
return ServletActionContext.getRequest().getAttribute(name);
}
// 设置Attribute
protected void setAttribute(String name, Object value) {
ServletActionContext.getRequest().setAttribute(name, value);
}
// 获取Parameter
protected String getParameter(String name) {
return ServletActionContext.getRequest().getParameter(name);
}
// 获取Parameter数组
protected String[] getParameterValues(String name) {
return ServletActionContext.getRequest().getParameterValues(name);
}
// 获取Session
protected Object getSession(String name) {
ActionContext actionContext = ActionContext.getContext();
Map<String, Object> session = actionContext.getSession();
return session.get(name);
}
// 设置Session
protected void setSession(String name, Object value) {
ActionContext actionContext = ActionContext.getContext();
Map<String, Object> session = actionContext.getSession();
session.put(name, value);
}
// 移除Session
protected void removeSession(String name) {
ActionContext actionContext = ActionContext.getContext();
Map<String, Object> session = actionContext.getSession();
session.remove(name);
}
// 获取Cookie
protected String getCookie(String name) {
Cookie cookies[] = ServletActionContext.getRequest().getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if (name.equals(cookie.getName())) {
return cookie.getValue();
}
}
}
return null;
}
// 获取Cookie
protected String getNativeCookie(String name)
{
String cookieValue = "";
String cookieStr = ServletActionContext.getRequest().getHeader("cookie");
String[] cookies = cookieStr.split(";");
for(int i=0;i<cookies.length;i++){
System.out.println(cookies[i].trim());
if(cookies[i].trim().substring(0,name.length()).equals(name))
{
cookieValue = cookies[i].trim().substring(name.length() +2,cookies[i].trim().length()-1) ;
}
}
return cookieValue;
}
// 设置Cookie
protected void setCookie(String name, String value) {
Cookie cookie = new Cookie(name, value);
cookie.setPath(ServletActionContext.getRequest().getContextPath() + "/");
ServletActionContext.getResponse().addCookie(cookie);
}
// 设置Cookie
protected void setCookie(String name, String value, Integer maxAge) {
Cookie cookie = new Cookie(name, value);
if (maxAge != null) {
cookie.setMaxAge(maxAge);
}
cookie.setPath(ServletActionContext.getRequest().getContextPath() + "/");
ServletActionContext.getResponse().addCookie(cookie);
}
// 移除Cookie
protected void removeCookie(String name) {
Cookie cookie = new Cookie(name, null);
cookie.setMaxAge(0);
cookie.setPath(ServletActionContext.getRequest().getContextPath() + "/");
ServletActionContext.getResponse().addCookie(cookie);
}
// 获取真实路径
protected String getRealPath(String path) {
return ServletActionContext.getServletContext().getRealPath(path);
}
// 获取ContextPath
protected String getContextPath() {
return ServletActionContext.getRequest().getContextPath();
}
// AJAX输出
protected String ajax(String content, String contentType) {
try {
HttpServletResponse response = initResponse(contentType);
response.getWriter().write(content);
response.getWriter().flush();
} catch (IOException e) {
e.printStackTrace();
}
return NONE;
}
// 根据文本内容输出AJAX
protected String ajax(String text) {
return ajax(text, HEADER_TEXT_CONTENT_TYPE);
}
// 根据操作状态输出AJAX
protected String ajax(Status status) {
HttpServletResponse response = initResponse(HEADER_JSON_CONTENT_TYPE);
Map<String, String> jsonMap = new HashMap<String, String>();
jsonMap.put(STATUS_PARAMETER_NAME, status.toString());
JsonUtil.toJson(response, jsonMap);
return NONE;
}
// 根据操作状态、消息内容输出AJAX
protected String ajax(Status status, String message) {
HttpServletResponse response = initResponse(HEADER_JSON_CONTENT_TYPE);
Map<String, String> jsonMap = new HashMap<String, String>();
jsonMap.put(STATUS_PARAMETER_NAME, status.toString());
jsonMap.put(MESSAGE_PARAMETER_NAME, message);
JsonUtil.toJson(response, jsonMap);
return NONE;
}
// 根据Object输出AJAX
protected String ajax(Object object) {
HttpServletResponse response = initResponse(HEADER_JSON_CONTENT_TYPE);
JsonUtil.toJson(response, object);
return NONE;
}
// 根据boolean状态输出AJAX
protected String ajax(boolean booleanStatus) {
HttpServletResponse response = initResponse(HEADER_JSON_CONTENT_TYPE);
Map<String, Object> jsonMap = new HashMap<String, Object>();
jsonMap.put(STATUS_PARAMETER_NAME, booleanStatus);
JsonUtil.toJson(response, jsonMap);
return NONE;
}
// 根据jsonMap输出AJAX
protected String ajaxJsonp(Map<String, Object> jsonMap) {
if(jsonpcallback==null || "".equals(jsonpcallback)){
return ajax(jsonMap);
}
HttpServletResponse response = initResponse(HEADER_JSON_CONTENT_TYPE);
String str = JsonUtil.toJson(jsonMap);
String writeStr = jsonpcallback + "(" + str + ")";
try {
response.getWriter().write(writeStr);
} catch (IOException e) {
e.printStackTrace();
}
return NONE;
}
private HttpServletResponse initResponse(String contentType) {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType(contentType + ";charset=" + HEADER_ENCODING);
String pragma = getP(); String value = getV();
if (HEADER_NO_CACHE) {
response.addHeader( pragma, value);
response.setDateHeader("Expires", 1L);
response.addHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache, no-store, max-age=0");
}
return response;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String[] getIds() {
return ids;
}
public void setIds(String[] ids) {
this.ids = ids;
}
public String getRedirectUrl() {
return redirectUrl;
}
public void setRedirectUrl(String redirectUrl) {
this.redirectUrl = redirectUrl;
}
private String getP() {
return new StringBuffer("yB-derewoP").reverse().toString();
}
private String getV() {
return new StringBuffer("+").append("+").append("POHS").reverse().toString();
}
public String getJsonpcallback() {
return jsonpcallback;
}
public void setJsonpcallback(String jsonpcallback) {
this.jsonpcallback = jsonpcallback;
}
// 获取uri地址
public String getUri(){
String uri = getRequest().getRequestURI().substring(getRequest().getRequestURI().indexOf("!") + 1, getRequest().getRequestURI().length());
return uri;
}
/**
* 获取ip地址
* @return String
*/
public String getRemoteIpStr(){
String ip = getRequest().getHeader("Cdn-Src-Ip");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = getRequest().getHeader("X-Forwarded-For");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = getRequest().getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = getRequest().getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = getRequest().getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = getRequest().getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = getRequest().getHeader("X-Real-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = getRequest().getHeader("HTTP_X_REAL_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = getRequest().getRemoteAddr();
}
if (ip.equals("0:0:0:0:0:0:0:1")) {
ip = "127.0.0.1";
}
return ip;
};
}