1、利用Cookie统计UV数据(邮件群发,然后统计打开该邮件的点击量)
2、在邮件中植入这个InsureToolAction的访问地址
3、在BaseAction中封装了getRequest()和getResponse()方法
public class InsureToolAction extends BaseAction {
// 客户标识
private final String CUSTOMER_IDENTIFICATION = "CusID";
private String uvFlag;
/**
* cookie中获取用户唯一标识 采用uuid记录 存在获取不存在重新设置
*/
private void autoSetCookie() {
Cookie[] cookies = getRequest().getCookies();
int count = 0;
if (cookies != null) {
for (Cookie cookie : cookies) {
if (org.apache.commons.lang3.StringUtils.equals(cookie.getName(), CUSTOMER_IDENTIFICATION)) {
uvFlag = cookie.getValue();
break;
}
count++;
// 该cookie在cookie列表中不存在
if (count == cookies.length) {
autoSetCid();
}
}
} else {
autoSetCid();
}
}
/**
* 自动设置客户端唯一标识
*/
private void autoSetCid() {
uvFlag = UUID.randomUUID().toString().replaceAll("[-]", "");
Cookie cidCookie = new Cookie(CUSTOMER_IDENTIFICATION, uvFlag);
cidCookie.setDomain(PropertyFileUtil.get("domain"));
cidCookie.setMaxAge(365*24*60*60);
cidCookie.setPath("/");
getResponse().addCookie(cidCookie);
}
}
@Scope("prototype")
public class BaseAction extends ActionSupport {
private HttpServletRequest request;
private HttpServletResponse response;
public void setRequest(HttpServletRequest request) {
this.request = request;
this.session=request.getSession();
this.application=request.getSession().getServletContext();
}
public void setResponse(HttpServletResponse response) {
this.response = response;
}
// 获取Request
public HttpServletRequest getRequest() {
return ServletActionContext.getRequest();
}
// 获取Response
public HttpServletResponse getResponse() {
return ServletActionContext.getResponse();
}
}