一、 Memcached的安装
1. linux下memchached的安装,请参考网络
2. windows下memcahced的安装:
在命令行中进入memcached目录,执行以下命令
memcached.exe –d install
memcached.exe –d start
二、 将lib目录中所有Jar复制到tomcat/lib目录
三、 配置虚拟目录:
<Context path=”/”
docBase=”Z:/workspace/runtime/v4/wtpwebapps/javamall” debug=”0″>
<Manager className=”de.javakaffee.web.msm.MemcachedBackupSessionManager”
memcachedNodes=”n1:localhost:11211″
sticky=”false”
sessionBackupAsync=”false”
lockingMode=”auto”
requestUriIgnorePattern=”.*\.(ico|png|gif|jpg|css|js)$”
transcoderFactoryClass=”de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory” />
</Context>
其中红色部分是需要改为你本地相应的javashop应用所在路径和memcached服务器地址,如果是本地则为localhost,如果是其它服务器请写ip
本配置是用的kryo做为序列化,其它配置可参考
https://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration
文档所需jar及memcached 的windows版本请至这里下载:
http://pan.baidu.com/s/1qWzAl8w
——————————————————————————————————–
javashop-迄今为止国内最好的Java网店系统
基于Spring3 + Struts2 +Freemarker框架
丰富的API、插件式架构极容易的二次开发
丰富的API、组件式架构、丰富的标签库,快速打造精美模板
有单用户商城和多用户商城两个版本,欢迎试用:
—————单店系统—————–
前台:
http://www.javamall.com.cn/version4/
后台:
http://www.javamall.com.cn/version4/admin
用户名和密码都是admin
—————————————
—————多用户商城系统———————
前台:
http://www.javamall.com.cn/b2b2c/index.html
后台:
http://www.javamall.com.cn/b2b2c/admin
用户名和密码都是admin
—————————————————
发表在 javashop相关、帮助、技术
|
插件
首先插件方法需继承 AbstractGoodsPlugin 实现IGoodsTabShowEvent
例: public class GoodsPicturelistPlgin extends AbstractGoodsPlugin implements IGoodsTabShowEvent
插件HTML模板需写在插件方法的同一目录下,并且名字需跟插件命相同
插件使用HTML模板:
FreeMarkerPaser freeMarkerPaser = FreeMarkerPaser.getInstance();
freeMarkerPaser.proessPageContent();
例子:
public String getAddHtml(HttpServletRequest request) {
FreeMarkerPaser freeMarkerPaser = FreeMarkerPaser.getInstance();
return freeMarkerPaser.proessPageContent();
}
插件向HTML模板传值:
freeMarkerPaser.putData("值名称",值参数);
HTML中使用插件传入的值:
${值名称!”}
例子:
freeMarkerPaser.putData("filepic",goods.get("thumbnail"));
HTML模板:
<#assign pic = filepic />
${pic!”}
HTML
<!–前端使用ajax一步提交就好,参考例子:–>
例子:
var options = {
url : "/wine/admin/goods-savepic!savepicture.do?ajax=yes",
type : "POST",
dataType : "json",
success : function(result) { $("#picturelist").val(result.data.fsImgPath);
$("#imgfile").html("<img width='240' height='220' border='0'/>" src='"+result.data.imgPath+"'>");
},
error : function(e) {
alert("出现错误 ,请重试");
}
};
$('#theForm').ajaxSubmit(options);
Action
上传首先需要两个属性:
File file; //上传流
String fileFileName;//上传地址
String subFolder = "goodslist"; //上传文件夹Name
//需判断上传文件类型
例:
String allowTYpe = "gif,jpg,bmp,png";
if (!fileFileName.trim().equals("") && fileFileName.length() > 0) {
String ex = fileFileName.substring(fileFileName.lastIndexOf(".")+1, fileFileName.length());
if(allowTYpe.toString().indexOf(ex.toLowerCase()) < 0){
this.showErrorJson("对不起,只能上传gif,jpg,bmp,png格式的图片!");
return this.JSON_MESSAGE;
}
}
//判断文件大小
例:
if(pic.length() > 900 * 1024){
this.showErrorJson("'对不起,图片不能大于900K!");
return this.JSON_MESSAGE;
//上传文件:
例:
String fsImgPath= UploadUtil.upload(pic, picFileName, subFolder);
因为存入数据库图片地址是fs:**** ,所以使用图片时需调用UploadUtil方法获得图片正常地址:
String imgPath = UploadUtil.replacePath(图片路径);
发表在 未分类
|
Javashop邮箱发送的方法
//发送邮箱
EopSite site = EopContext.getContext().getCurrentSite();
定义用户在邮箱中点击回到本站的连接
String loginurl = “http://vip.365vin.com”;
以下是为,当给用户发送邮箱的内容时,为模板发送所需要的一些值。
EmailModel emailModel = new EmailModel();
emailModel.getData().put(“username”, newMember.getUname());
emailModel.getData().put(“loginurl”, loginurl);
emailModel.getData().put(“sitename”, site.getSitename());
emailModel.getData().put(“logo”, site.getLogofile());
emailModel.getData().put(“password”, pwd);
emailModel.getData().put(“parentname”, member.getName());
设置邮箱的标题
emailModel.setTitle(“尊敬的”+newMember.getUname()+”您好,”+member.getName()+”邀请您加入”+site.getSitename()+”会员”);
设置收件人的邮箱
emailModel.setEmail(newMember.getEmail());
设置邮箱内容模板的路径
emailModel.setTemplate(“email_invitation.html”);
emailModel.setEmail_type(“注册成功提示”);
发送邮件
mailMessageProducer.send(emailModel);
发表在 javashop相关、帮助、技术
|
Log4j
功能:
log4j 为记录项目日常日志的记录功能,可以把项目的所有级别的日志信息都放在本地来进行管理。方便查找记录各种错误信息。
A) Log4j 路径
在本项目的resource包下可以找到log4j的配置文件,log4j.properties
B) Log4j的日志输出路径
log4j.appender.CBB.File=d:/redwine/logs/eop/enation.log 日志输出的本地路径
C) 使用方法:
级别顺序(低到高): DEBUG < INFO < WARN < ERROR < FATAL
设置输出的级别以及日志输出的目的地 log4j.rootLogger=ERROR,CZZ
设置com.enation包下的所有类日志输出级别 log4j.category.com.enation=ERROR ,CBB,
还有其他的是为spring,struts2,xwork,配置输出的级别和目的地、
Log4j.appender 设置日志输出的目的地位置,
log4j.appender.CAA=org.apache.log4j.ConsoleAppender 为CAA设置日志输出的类型可以是以下几种
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
log4j.appender.CAA.layout=org.apache.log4j.PatternLayout 为CAA的输出端的layout是哪种类型,可以是以下几种
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
6. log4j.appender.CAA.layout.ConversionPattern=[%p] %-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c.%M:%L] %m%n 如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:
l [QC]是log信息的开头,可以为任意字符,例如项目简称。
l %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
l %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
l %r: 输出自应用启动到输出该log信息耗费的毫秒数
l %c: 输出日志信息所属的类目,通常就是所在类的全名
l %t: 输出产生该日志事件的线程名
l %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)……….不一 一列举了
D) 代码中调用
在完成某个功能后调用,例如:
if (logger.isDebugEnabled()) {
logger.debug(“保存商品数据完成”);
}
发表在 javashop相关、帮助、技术
|
有的时候再登陆后台的时候无法看到验证码图片,而且火狐的firebug下也看不到img的src=”" 如下图:
这是因为什么引起的?让我看查找一下。
在firebug下看,ReferenceError: $ is not defined —–$(function(){、 有点jqurey基础的人都会明白,这是因为没有引用jq文件而引起的,因为当我们使用”$”的 时候是要引用标准的jq文件。 为什么会这样,让我们找到javamall\resource下的eop.properties文件,打开后。 找到问题,修改配置错误的地方。如下图:
发表在 javashop相关、帮助
|
nginx的配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
location /bookres/ {
internal; #禁止浏览器直接访问
limit_rate 200k;
alias d:/test/bookres/;
error_page 404 =200 @backend; #转由后台处理(tomcat等web容器)
}
location @backend {
rewrite ^/bookres/(.*)/(.*)/(.*)/(.*)$ /bookres/?isbn=$1&restype=$2&resid=$3&type=$4 break;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
break;
}
|
上面的正则配置可匹配如下url/bookres/123/1/down
java中控制的代码:
1
2
3
4
5
|
httpResponse.setHeader(
"Content-Disposition"
,
"attachment; filename=\""
+filename+
"\""
);
httpResponse.setHeader(
"Content-Type"
,
"application/octet-stream"
);
httpResponse.setHeader(
"X-Accel-Redirect"
,
"/bookres/"
+resource.get(
"res_url"
));
|
发表在 企业级应用
|
1
2
3
4
|
filename=
new
String(filename.getBytes(
"gbk"
),
"iso-8859-1"
);
httpResponse.setHeader(
"Content-Disposition"
,
"attachment; filename=\""
+filename+
"\""
);
httpResponse.setCharacterEncoding(
"UTF-8"
);
httpResponse.setHeader(
"Content-Type"
,
"application/octet-stream"
);
|
注意 filename=\”"+filename+”\”" 要带有” ,以处理文件名是中文,且有空格的情况。
发表在 Java技术
|
一、介绍
异步编辑器用于直接在页面中编辑某个值,并可将新值传递到服务器端。
操作界面如下图所示:
继续阅读 →
发表在 Jquery插件
|
1 简介
Javashop在后设置->站点设置中可以开启在线客服:
设置格式为:”QQ号”+ : + ”提示文字”+ , + “其它客服信息”
如设置为:“25106942:客户服务,52560956:技术支持”则显示效果为:
继续阅读 →
发表在 帮助、技术
|
1 涉及到表
1.1 商品表(es_goods)
用于存储商品基本信息,其中字段P1至P21用于存储商品自定义属性。
直接将自定义属性存储于商品表中的目的是为了提高查询效率
确实存在更好的搜索方案,如Lucene,这将是javashop进步将要改进的
商品的自定义参数信息存储于es_goods_type表,在后面会有详细的介绍
参考网址:http://www.javamall.com.cn/blog/