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:\Java\Tomcat7\temp\localhost_shopxx\index'
[SHOP++] 2015-12-29 20:01:07 [ WARN] (DirectoryProviderHelper.java:258) - Index directory not found, creating: 'C:\Java\Tomcat7\temp\localhost_shopxx\index\net.shopxx.entity.Article'
[SHOP++] 2015-12-29 20:01:07 [ WARN] (DirectoryProviderHelper.java:258) - Index directory not found, creating: 'C:\Java\Tomcat7\temp\localhost_shopxx\index\net.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;
}