shopxx研究

1、启动后,在tomcat/temp 下,生成cache和index文件夹。cache里面是类路径下ehcache.xml定义的缓存  index里面是 article 和 product的索引

[SHOP++] 2015-12-29 20:01:07 [ WARN] (DirectoryProviderHelper.java:258) - Index directory not found, creating: 'C:JavaTomcat7 emplocalhost_shopxxindex'
[SHOP++] 2015-12-29 20:01:07 [ WARN] (DirectoryProviderHelper.java:258) - Index directory not found, creating: 'C:JavaTomcat7 emplocalhost_shopxxindex et.shopxx.entity.Article'
[SHOP++] 2015-12-29 20:01:07 [ WARN] (DirectoryProviderHelper.java:258) - Index directory not found, creating: 'C:JavaTomcat7 emplocalhost_shopxxindex et.shopxx.entity.Product'

2 注册

前台 :register.jhtml -> controller.shop -> RegisterController.java  

相关实体:Member  MemberAttribute

自定义指令 member_attribute_list -> memberAttributeListDirective

boolean useCache = useCache(env, params);
String cacheRegion = getCacheRegion(env, params);

if (useCache) {
memberAttributes = memberAttributeService.findList(cacheRegion);
} else {
memberAttributes = memberAttributeService.findList();
}

返回注册项列表 List<MemberAttribute> memberAttributes; 供 register.jhtml展示注册项

model.addAttribute("genders", Gender.values());

后台:member_attribute/list.jhtml 可以自定义 添加 修改会员注册项 类型包括文本 单选项 多选项

 关于枚举

java中 memberAttribute.getType() == Type.select

ftl 中 memberAttribute.type == "name"

select  name 都是枚举Type中的值, 同时还定义了属性 private Type type;

3、未登录拦截 public class MemberInterceptor extends HandlerInterceptorAdapter

Principal principal = (Principal) session.getAttribute(Member.PRINCIPAL_ATTRIBUTE_NAME);

String requestType = request.getHeader("X-Requested-With");  // 判断请求是否是来自ajax请求,若是ajax请求 requestType不为空。

// 在没有登陆的情况下,来源的请求是 ajax 请求 ,设置禁止访问 SC_FORBIDDEN 即403错误。也即ajax请求不到数据。
if (requestType != null && requestType.equalsIgnoreCase("XMLHttpRequest")) {
  response.addHeader("loginStatus", "accessDenied");
  response.sendError(HttpServletResponse.SC_FORBIDDEN);
  return false;
} else {  // 在没有登陆的情况下,来源的请求不是ajax请求,是正常请求,就执行跳转到登陆页面。

  if (request.getMethod().equalsIgnoreCase("GET")) {
  String redirectUrl = request.getQueryString() != null ? request.getRequestURI() + "?" + request.getQueryString() : request.getRequestURI();
  response.sendRedirect(request.getContextPath() + loginUrl + "?" + REDIRECT_URL_PARAMETER_NAME + "=" + URLEncoder.encode(redirectUrl, urlEscapingCharset));
  } else {
  response.sendRedirect(request.getContextPath() + loginUrl);
  }
  return false;
}

原文地址:https://www.cnblogs.com/appzhang/p/5037096.html