jeecms怎么取消提示30212306显示用户未登录录

您好,欢迎回来
您好,欢迎来到中国供应商!
安徽jeecms怎么用
共找到2678条"jeecms怎么用"报价信息
净度≥99.0
发芽率≥90.0
品种纯度&99
主营产品:
植物原材料
中药材种苗
¥90.00/千克
所在地:安徽 亳州
耐火温度℃
产品类别防火板
材质玻璃纤维
导热系数(常温)0.035
主营产品:
高密度水泥纤维板
轻质隔墙板
loft阁楼板
¥65.00/张
所在地:安徽 淮北
耐火温度℃
品牌中坤元
产品类别阁楼板
材质楼层夹板
主营产品:
水泥纤维板
水泥压力板
钢结构楼层板
所在地:安徽 淮北
加工定制是
品牌安徽昌普
型号各种规格
阻燃性加热 保温
主营产品:
CEMS伴热管
自控温电伴热带
MI加热电缆
恒功率电热带
¥120.00/米
所在地:安徽 合肥
主营产品:
林木新品种研发
槐树苗培育
泓森槐研发
泓森槐造林培育
所在地:安徽 涡阳县
品名刺五加根
用途养生膳食原料,中药制药原料,其他养生原料
产品形态原形态
品牌 冷背药材
产品属性根茎类
主营产品:
中药材种植
中药材种子
植物原材料
所在地:安徽 亳州
品名洛神花
用途中药制药原料,养生花草茶原料,保健填充材料,其他养生原料
产品形态原形态
品牌养生花草茶
产品属性花类药材
主营产品:
所在地:安徽 亳州
种类动物提取物
库存级别当年货
主营产品:
植物原材料
中药材种苗
¥260.00/克
所在地:安徽 亳州
型号JBDX-01
加工定制是
种类保鲜柜
适用范围茶餐厅设备,蛋糕房设备,咖啡店设备,面包房设备,西餐店设备,中餐店设备,饮品店设备,酒厂设备,调料加工厂设备,果蔬加工厂设备,冷冻食品厂设备,肉制品加工厂设备,休闲食品厂设备,其他
制温范围2~8
主营产品:
商用制冷设备
¥5599.00/台
所在地:安徽 太和县
加工定制是
品牌徽星机械
用途用于 蚕丝 棉花 丝绵 羊毛
规格3.2*2.6*2.4
主营产品:
大棚保温被设备
弹花梳理一体机
多针直线棉被机
电脑单针绗缝机
¥3.38万/台
所在地:安徽 萧县
品牌伊法拉电气
类型照明电源
输入电压500
输出功率2000
输出电压380
主营产品:
绝缘穿刺线夹
¥120.00/个
所在地:安徽 亳州
加工定制否
型号241642
温度范围100
测量范围15
主营产品:
盐雾试验箱
高低温试验箱
高温老化试验箱
恒温恒湿试验箱
所在地:安徽 合肥
加工定制否
品牌共惠仪器
材质162964
温度范围55
测量范围100
主营产品:
高低温试验箱
拉力试验机
恒温恒湿试验箱
所在地:安徽 合肥
型号WB-1360
主营产品:
服装绘图仪
电脑刻章机
电脑刻字机
光敏印章机
所在地:安徽 合肥
材质玻璃纤维
产品类别防火板
产品种类保温板
品牌中坤元
应用范围EPS外墙保温系统
主营产品:
玻镁板 菱镁板
水泥纤维板
轻质隔墙板
¥54.00/平方米
所在地:安徽 淮北
加工定制否
种类碳酸饮料设备
品牌酸奶分杯机
适用范围茶餐厅设备,蛋糕房设备,咖啡店设备,面包房设备,中餐店设备,饮品店设备,休闲食品厂设备,其他
主营产品:
瓶装饮料分杯机
酸奶分杯机
奶茶咖啡机
可乐现调机
¥1001.00/台
所在地:安徽 合肥
用途保温 回填
库存年限10
主营产品:
¥128.00/件
所在地:安徽 凤台县
加工定制是
材质不锈钢碳钢喷塑
尺寸可定制
主营产品:
防爆配电箱
防爆配电柜
防爆分析小屋
¥80.00/台
所在地:安徽 蚌埠
加工定制是
材质不锈钢
尺寸可定制
适用范围所有场合
主营产品:
防爆控制柜
防爆配电箱
¥100.00/台
所在地:安徽 蚌埠
品牌净之源
型号净水器
使用场合商用
供水量500--2000
处理工艺多级过滤及超滤
主营产品:
其他电热设备
其他维修及安装
电热管、发热管
所在地:安徽 合肥
品牌颗粒机厂家 颗粒机公司 木屑颗粒机 稻壳颗粒机
型号470/470C/470CC/500A型
产品别名木屑颗粒机 秸秆颗粒机 稻壳颗粒机 竹屑颗粒机 木粉刨花颗粒机 粉碎机 烘干机 生物质锅炉
用途生产生物质颗粒燃料 生物颗粒用于燃烧
适用行业生产生物质颗粒 生物质能源燃料 用于燃烧
产品用途9000
主营产品:
生物质颗粒机
生物质锅炉
生物质燃气炉
生物质颗粒机
¥11.50万/台
所在地:安徽 广德县
加工定制是
外形尺寸022239
产品用途广泛应用于塑胶、印刷、油漆油墨、纺织、印染服装等行业的颜色管理领域,根据CIE色空间的Lab,Lch原理,测量显示出样品与被测样品的色差△E以及 △Lab值。
主营产品:
环境试验箱
力学试验机
实验室仪器
所在地:安徽 合肥
加工定制是
品牌安徽鼎梁生物质颗粒机 秸秆颗粒机 稻壳颗粒机
用途生产生物质颗粒 生物质能源燃料 用于燃烧
型号9SKLJP580-590型多功能生物质颗粒机
产品别名木屑颗粒机 秸秆颗粒机 生物质颗粒机 稻壳颗粒机锯末刨花颗粒机
规格0及多种型号
主营产品:
生物质颗粒机
生物质锅炉
生物质颗粒
¥11.50万/台
所在地:安徽 广德县
成份类别硅类
功能水处理消泡剂
型号Z-8724
品牌万成集团
PH值使用范围6-8
产品等级工业级
主营产品:
纺织浆料消泡剂
造纸工业消泡剂
化工业消泡剂
所在地:安徽 合肥
加工定制是
品牌共惠仪器
规格667509
适用范围包装运输
主营产品:
影像测量仪
二次元影像测量仪
光学影像测量仪
金相显微镜
所在地:安徽 合肥
产地俄罗斯
规格thisis规格
含水率含水率9728
表观密度表观密度8565
主营产品:
科思百纳板材
科思百纳生态板
2016十大品牌
所在地:安徽 宿州
基本投资额1-5万
加盟费30000
项目区域要求全国
主营产品:
工艺礼品项目合作
工艺礼品加工设备
所在地:安徽 合肥
材质玻璃纤维
产品类别玻纤布
产品种类保温管
应用范围钢铁、汽车、造船、航天、冶金、机电、石化、化工、军工、国防、科研等其它行业的高温区域
主营产品:
耐高温套管生产
防火套管销售
电缆保护套管销售
搭扣铝箔套管生产
所在地:安徽 宁国市
品牌荣事达
工作原理反渗透
主营产品:
净水机 纯水机
开水器 节能饮水
软水机 软化设备
所在地:安徽 长丰县
产品类别整体阳台
材质铝合金
开启方式推拉
主营产品:
阳光房阳台系列
金刚网纱窗系列
防盗防护系列
隐形纱窗系列
所在地:安徽 肥东县
主营产品:
所在地:安徽 蚌埠
产品类别整体阳台
材质铝合金断桥窗纱一体窗
规格55 95 108 126 135
主营产品:
断桥铝门窗
断桥铝门窗价格
断桥铝门窗批发
断桥铝门窗半成品
所在地:安徽 合肥
加工定制是
可生产产品类型包子
品牌滨江4050
适用范围茶餐厅设备,中餐店设备,冷冻食品厂设备
型号BJB150II-1-12
主营产品:
小型包子机
包子机价格
4050包子机
¥3960.00/台
所在地:安徽 芜湖
加工定制否
类型驾驶式洗地机
电源类型电池
型号SH-Ranger660B
主营产品:
驾驶式洗地机
手推式洗地机
全自动洗地机
¥3.80万/台
所在地:安徽 合肥
主营产品:
福州橱柜家具五金
福州工程五金
所在地:安徽 枞阳县
主营产品:
合肥店面装修
合肥场所装修
合肥厂房装修
合肥工程装修
所在地:安徽 合肥
策划周期策划周期2829
广告片时长广告片时长5353
主营产品:
其他广告服务
静电棒、钥匙包
车用眼镜夹、票据夹
安全带护肩
所在地:安徽 宿州
主营产品:
防爆电磁阀
高压电磁阀
高温电磁阀
¥1.00/普通
所在地:安徽 枞阳县
种类制冷压缩机
加工定制是
类型生产用制冷设备
型号各种都有
主营产品:
所在地:安徽 合肥
共 2678 条其他专用仪器仪表记录共30页 第1页1
最新其他专用仪器仪表产品
最新其他专用仪器仪表厂家
没有找到想要的jeecms怎么用产品?发布一条采购信息,让卖家主动找到你!
jeecms怎么用产品推荐
日-11月2日
上海新国际博览中心
免责声明:
当前页为jeecms怎么用价格信息展示,该页所展示的jeecms怎么用批发价格、jeecms怎么用报价等相关信息均有企业自行提供,jeecms怎么用价格真实性、准确性、合法性由店铺所有企业完全负责。中国供应商对此不承担任何保证责任。
友情提醒:
建议您通过拨打jeecms怎么用厂家联系方式确认最终价格,并索要jeecms怎么用样品确认产品质量。如jeecms怎么用报价过低,可能为虚假信息,请确认jeecms怎么用报价真实性,谨防上当受骗。
建议您在搜索产品时,优先选择信贸通会员,信贸通会员为中国供应商VIP会员,信誉度更高。
按拼音检索:
主办单位:中国互联网新闻中心版权所有 中国互联网新闻中心一个程序员
JEECMS服务器发生了异常情况,服务器繁忙问题
用IDEA做JEECMS二次开发的朋友可能会遇到一个问题
就是在后台栏目下修改栏目名称会出现服务器繁忙的情况
查看错误信息之后发现IDEA默认的编译方式是
将其改成Eclipse编译方式
问题就解决了
没有更多推荐了,jeecms 前台拦截器的研究与改造
jeecms出发点是面向大众的,具有前台开发性,也就是说,即时是未登录(游客),也可以浏览到前台页面的内容,只是有些操作需要(增删改)注册和登录之后才可以进行。
后台当然不能随便进入了,必须登录后才可以进入后台,那么jeecms是怎么做的呢?我们看一看源码。
后台拦截器代码:
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
// 获得站点
CmsSite site = getSite(request, response);
CmsUtils.setSite(request, site);
// Site加入线程变量
CmsThreadVariable.setSite(site);
// 获得用户
CmsUser user =
if (adminId != null) {
// 指定管理员(开发状态)
user = cmsUserMng.findById(adminId);
if (user == null) {
throw new IllegalStateException("User ID=" + adminId
+ " not found!");
// 正常状态
Integer userId = authMng
.retrieveUserIdFromSession(session, request);
if (userId != null) {
user = cmsUserMng.findById(userId);
// 此时用户可以为null
CmsUtils.setUser(request, user);
// User加入线程变量
CmsThreadVariable.setUser(user);
//用户校验开始
String uri = getURI(request);
// 不在验证的范围内
if (exclude(uri)) {
// 用户为null跳转到登陆页面
if (user == null) {
response.sendRedirect(getLoginUrl(request));
//未登录用户重定向,用户校验结束
// 用户不是管理员,提示无权限。
if (!user.getAdmin()) {
request.setAttribute(MESSAGE, MessageResolver.getMessage(request,
"login.notAdmin"));
response.sendError(HttpServletResponse.SC_FORBIDDEN);
// 不属于该站点的管理员,提示无权限。
if (!user.getSites().contains(site)) {
request.setAttribute(MESSAGE, MessageResolver.getMessage(request,
"login.notInSite"));
response.sendError(HttpServletResponse.SC_FORBIDDEN);
boolean viewonly = user.getViewonlyAdmin();
// 没有访问权限,提示无权限。
if (auth && !user.isSuper()
&& !permistionPass(uri, user.getPerms(), viewonly)) {
request.setAttribute(MESSAGE, MessageResolver.getMessage(request,
"login.notPermission"));
response.sendError(HttpServletResponse.SC_FORBIDDEN);
}两行红色注释之间的代码,就是用来校验用户是否存在,用户信息是否有效的,这几句代码的功能可以分以下几个点来叙述:
1,获取请求uri并作处理,检测该uri是否符合要求,若不符合抛出异常。
2,如果当前请求的uri是例外的,放行,不做拦截,这里主要是对登录和登出的uri放行,防止死循环。
3,如果当前请求没有登录用户,则重定向到登录页。
具体的参数信息可以查看配置文件:jeecms-servlet-admin.xml
&bean id="adminContextInterceptor" class="com.jeecms.cms.web.AdminContextInterceptor"&
&property name="auth" value="true"/&
&property name="loginUrl" value="/jeeadmin/jeecms/login.do"/&
&property name="returnUrl" value="/jeeadmin/jeecms/index.do"/&
&property name="excludeUrls"&
&value&/login.do&/value&
&value&/logout.do&/value&
&/property&
整个重定向功能就是这样,那么我们前台也想要这种效果,不登陆用户不可以浏览任何页面,并定向到登陆页让其登录去,怎么办呢?
很简单了,比葫芦画瓢就是了。
首先我们找到前台url的拦截器:FrontContextInterceptor.java
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler)
throws ServletException {
CmsSite site =
List&CmsSite& list = cmsSiteMng.getListFromCache();
int size = list.size();
if (size == 0) {
throw new RuntimeException("no site record in database!");
} else if (size == 1) {
site = list.get(0);
String server = request.getServerName();
String alias,
for (CmsSite s : list) {
// 检查域名
if (s.getDomain().equals(server)) {
// 检查域名别名
alias = s.getDomainAlias();
if (!StringUtils.isBlank(alias)) {
for (String a : StringUtils.split(alias, ',')) {
if (a.equals(server)) {
// 检查重定向
redirect = s.getDomainRedirect();
if (!StringUtils.isBlank(redirect)) {
for (String r : StringUtils.split(redirect, ',')) {
if (r.equals(server)) {
response.sendRedirect(s.getUrl());
} catch (IOException e) {
throw new RuntimeException(e);
if (site == null) {
throw new SiteNotFoundException(server);
CmsUtils.setSite(request, site);
CmsUser user =
Integer userId = authMng.retrieveUserIdFromSession(session, request);
if (userId != null) {
user = cmsUserMng.findById(userId);
if (user != null) {
CmsUtils.setUser(request, user);
拦截器很简单,并没有在检测到用户无效后做任何措施,不管怎样都是放行的,那么我们就在最后一个if路面添加else,也就是说if(user==null)我们就做些事情:
其配置文件jeecms-servlet-front.xml并没有对该拦截器配置参数,那么我们就自己来配置,当然要仿照后台的拦截器来配:
&bean id="frontContextInterceptor" class="com.jeecms.cms.web.FrontContextInterceptor"&
&property name="loginUrl" value="/login.jspx"/&
&property name="returnUrl" value="/tjhq"/&
&property name="excludeUrls"&
&value&/login.jspx&/value&
&value&/logout.jspx&/value&
&/property&
loginUrl是登录页的url,returnUrl指的是登陆后进入的url,而excludeUrls是例外情况,也就是说碰到这两个url都放行。
最后一个if改为:
if (user != null) {
CmsUtils.setUser(request, user);
String uri = getURI(request);
// 不在验证的范围内
if (exclude(uri)) {
// 用户为null跳转到登陆页面
if (user == null) {
response.sendRedirect(getLoginUrl(request));
} catch (IOException e) {
e.printStackTrace();
}当然了,getURI,exclude,getLoginUrl这样的方法都是没有的,从后台拦截器文件中直接拷贝过来,简单做些修改就可以用了。
这样,我们的前台页面也跟后台一致了,都实现了登录重定向功能。
没有更多推荐了,/ jeecms_01
项目语言:None
权限:read-only(如需更高权限请先加入项目)
jeecms_01/
Index: ImageCutAct.java
===================================================================
--- ImageCutAct.java (revision 0)
+++ ImageCutAct.java (revision 3)
@@ -0,0 +1,158 @@
+package com.jeecms.cms.action.
+import static com.jeecms.cms.Constants.TPLDIR_MEMBER;
+import java.io.F
+import javax.servlet.http.HttpServletR
+import org.slf4j.L
+import org.slf4j.LoggerF
+import org.springframework.beans.factory.annotation.A
+import org.springframework.stereotype.C
+import org.springframework.ui.ModelM
+import org.springframework.web.bind.annotation.RequestM
+import com.jeecms.common.image.ImageS
+import com.jeecms.common.upload.FileR
+import com.jeecms.core.entity.CmsS
+import com.jeecms.core.entity.CmsU
+import com.jeecms.core.entity.F
+import com.jeecms.core.entity.MemberC
+import com.jeecms.core.manager.DbFileM
+import com.jeecms.core.web.util.CmsU
+import com.jeecms.core.web.util.FrontU
+@Controller
+public class ImageCutAct {
+ private static final Logger log = LoggerFactory
.getLogger(ImageCutAct.class);
* 图片选择页面
+ public static final String IMAGE_SELECT_RESULT = &tpl.image_area_select&;
* 图片裁剪完成页面
+ public static final String IMAGE_CUTED = &tpl.image_cuted&;
* 错误信息参数
+ public static final String ERROR = &error&;
+ @RequestMapping(&/member/v_image_area_select.jspx&)
+ public String imageAreaSelect(String uploadBase, String imgSrcPath,
Integer zoomWidth, Integer zoomHeight, Integer uploadNum,
HttpServletRequest request, ModelMap model) {
model.addAttribute(&uploadBase&, uploadBase);
model.addAttribute(&imgSrcPath&, imgSrcPath);
model.addAttribute(&zoomWidth&, zoomWidth);
model.addAttribute(&zoomHeight&, zoomHeight);
model.addAttribute(&uploadNum&, uploadNum);
CmsSite site = CmsUtils.getSite(request);
CmsUser user = CmsUtils.getUser(request);
FrontUtils.frontData(request, model, site);
MemberConfig mcfg = site.getConfig().getMemberConfig();
if (!mcfg.isMemberOn()) {
return FrontUtils.showMessage(request, model, &member.memberClose&);
if (user == null) {
return FrontUtils.showLogin(request, model, site);
return FrontUtils.getTplPath(request, site.getSolutionPath(),
TPLDIR_MEMBER, IMAGE_SELECT_RESULT);
+ @RequestMapping(&/member/o_image_cut.jspx&)
+ public String imageCut(String imgSrcPath, Integer imgTop, Integer imgLeft,
Integer imgWidth, Integer imgHeight, Integer reMinWidth,
Integer reMinHeight, Float imgScale, Integer uploadNum,
HttpServletRequest request, ModelMap model) {
CmsSite site = CmsUtils.getSite(request);
if (imgWidth & 0) {
if (site.getConfig().getUploadToDb()) {
String dbFilePath = site.getConfig().getDbFileUri();
imgSrcPath = imgSrcPath.substring(dbFilePath.length());
File file = dbFileMng.retrieve(imgSrcPath);
imageScale.resizeFix(file, file, reMinWidth, reMinHeight,
getLen(imgTop, imgScale),
getLen(imgLeft, imgScale), getLen(imgWidth,
imgScale), getLen(imgHeight, imgScale));
dbFileMng.restore(imgSrcPath, file);
} else if (site.getUploadFtp() != null) {
Ftp ftp = site.getUploadFtp();
String ftpUrl = ftp.getUrl();
imgSrcPath = imgSrcPath.substring(ftpUrl.length());
String fileName=imgSrcPath.substring(imgSrcPath.lastIndexOf(&/&));
File file = ftp.retrieve(imgSrcPath,fileName);
imageScale.resizeFix(file, file, reMinWidth, reMinHeight,
getLen(imgTop, imgScale),
getLen(imgLeft, imgScale), getLen(imgWidth,
imgScale), getLen(imgHeight, imgScale));
ftp.restore(imgSrcPath, file);
String ctx = request.getContextPath();
imgSrcPath = imgSrcPath.substring(ctx.length());
File file = fileRepository.retrieve(imgSrcPath);
imageScale.resizeFix(file, file, reMinWidth, reMinHeight,
getLen(imgTop, imgScale),
getLen(imgLeft, imgScale), getLen(imgWidth,
imgScale), getLen(imgHeight, imgScale));
if (site.getConfig().getUploadToDb()) {
String dbFilePath = site.getConfig().getDbFileUri();
imgSrcPath = imgSrcPath.substring(dbFilePath.length());
File file = dbFileMng.retrieve(imgSrcPath);
imageScale.resizeFix(file, file, reMinWidth, reMinHeight);
dbFileMng.restore(imgSrcPath, file);
} else if (site.getUploadFtp() != null) {
Ftp ftp = site.getUploadFtp();
String ftpUrl = ftp.getUrl();
imgSrcPath = imgSrcPath.substring(ftpUrl.length());
String fileName=imgSrcPath.substring(imgSrcPath.lastIndexOf(&/&));
File file = ftp.retrieve(imgSrcPath,fileName);
imageScale.resizeFix(file, file, reMinWidth, reMinHeight);
ftp.restore(imgSrcPath, file);
String ctx = request.getContextPath();
imgSrcPath = imgSrcPath.substring(ctx.length());
File file = fileRepository.retrieve(imgSrcPath);
imageScale.resizeFix(file, file, reMinWidth, reMinHeight);
model.addAttribute(&uploadNum&, uploadNum);
} catch (Exception e) {
log.error(&cut image error&, e);
model.addAttribute(ERROR, e.getMessage());
return FrontUtils.getTplPath(request, site.getSolutionPath(),
TPLDIR_MEMBER, IMAGE_CUTED);
+ private int getLen(int len, float imgScale) {
return Math.round(len / imgScale);
+ private ImageScale imageS
+ private FileRepository fileR
+ private DbFileMng dbFileM
+ @Autowired
+ public void setImageScale(ImageScale imageScale) {
this.imageScale = imageS
+ @Autowired
+ public void setFileRepository(FileRepository fileRepository) {
this.fileRepository = fileR
+ @Autowired
+ public void setDbFileMng(DbFileMng dbFileMng) {
this.dbFileMng = dbFileM
Index: CasLoginAct.java
===================================================================
--- CasLoginAct.java (revision 0)
+++ CasLoginAct.java (revision 3)
@@ -0,0 +1,42 @@
+package com.jeecms.cms.action.
+import static com.jeecms.cms.Constants.TPLDIR_MEMBER;
+import static org.apache.shiro.web.filter.authc.FormAuthenticationFilter.DEFAULT_ERROR_KEY_ATTRIBUTE_NAME;
+import javax.servlet.http.HttpServletR
+import org.springframework.stereotype.C
+import org.springframework.ui.ModelM
+import org.springframework.web.bind.annotation.RequestM
+import org.springframework.web.bind.annotation.RequestM
+import com.jeecms.core.entity.CmsS
+import com.jeecms.core.web.util.CmsU
+import com.jeecms.core.web.util.FrontU
+@Controller
+public class CasLoginAct {
+ public static final String COOKIE_ERROR_REMAINING = &_error_remaining&;
+ public static final String LOGIN_INPUT = &tpl.loginInput&;
+ public static final String LOGIN_STATUS = &tpl.loginStatus&;
+ public static final String TPL_INDEX = &tpl.index&;
+ @RequestMapping(value = &/login.jspx&, method = RequestMethod.GET)
+ public String input(HttpServletRequest request, ModelMap model) {
CmsSite site = CmsUtils.getSite(request);
String sol = site.getSolutionPath();
model.addAttribute(&site&,site);
FrontUtils.frontData(request, model, site);
return FrontUtils.getTplPath(request, sol, TPLDIR_MEMBER, LOGIN_INPUT);
+ @RequestMapping(value = &/login.jspx&, method = RequestMethod.POST)
+ public String submit(HttpServletRequest request,ModelMap model) {
CmsSite site = CmsUtils.getSite(request);
String sol = site.getSolutionPath();
Object error = request.getAttribute(DEFAULT_ERROR_KEY_ATTRIBUTE_NAME);
if (error != null) {
model.addAttribute(&error&,error);
FrontUtils.frontData(request, model, site);
return FrontUtils.getTplPath(request, sol, TPLDIR_MEMBER, LOGIN_INPUT);
Index: ResumeAct.java
===================================================================
--- ResumeAct.java (revision 0)
+++ ResumeAct.java (revision 3)
@@ -0,0 +1,221 @@
+package com.jeecms.cms.action.
+import static com.jeecms.cms.Constants.TPLDIR_MEMBER;
+import static com.jeecms.common.page.SimplePage.
+import java.io.IOE
+import java.util.C
+import javax.servlet.http.HttpServletR
+import javax.servlet.http.HttpServletR
+import org.apache.commons.lang.StringU
+import org.json.JSONE
+import org.json.JSONO
+import org.slf4j.L
+import org.slf4j.LoggerF
+import org.springframework.beans.factory.annotation.A
+import org.springframework.stereotype.C
+import org.springframework.ui.ModelM
+import org.springframework.web.bind.annotation.RequestM
+import org.springframework.web.bind.annotation.RequestM
+import com.jeecms.cms.entity.assist.CmsJobA
+import com.jeecms.cms.entity.main.C
+import com.jeecms.cms.manager.assist.CmsJobApplyM
+import com.jeecms.cms.manager.main.ContentM
+import com.jeecms.common.page.P
+import com.jeecms.common.web.CookieU
+import com.jeecms.common.web.ResponseU
+import com.jeecms.core.entity.CmsS
+import com.jeecms.core.entity.CmsU
+import com.jeecms.core.entity.CmsUserE
+import com.jeecms.core.entity.CmsUserR
+import com.jeecms.core.entity.MemberC
+import com.jeecms.core.manager.CmsUserExtM
+import com.jeecms.core.manager.CmsUserResumeM
+import com.jeecms.core.web.WebE
+import com.jeecms.core.web.util.CmsU
+import com.jeecms.core.web.util.FrontU
+ * 简历中心Action
+@Controller
+public class ResumeAct {
+ private static final Logger log = LoggerFactory.getLogger(ResumeAct.class);
+ //简历修改页
+ public static final String MEMBER_RESUME = &tpl.resumeEdit&;
+ //我的职位申请记录
+ public static final String MEMBER_APPLYS = &tpl.jobApplys&;
* 简历输入页
* @param request
* @param response
* @param model
+ @RequestMapping(value = &/member/resume.jspx&, method = RequestMethod.GET)
+ public String resumeInput(HttpServletRequest request,
HttpServletResponse response, ModelMap model) {
CmsSite site = CmsUtils.getSite(request);
CmsUser user = CmsUtils.getUser(request);
FrontUtils.frontData(request, model, site);
MemberConfig mcfg = site.getConfig().getMemberConfig();
// 没有开启会员功能
if (!mcfg.isMemberOn()) {
return FrontUtils.showMessage(request, model, &member.memberClose&);
if (user == null) {
return FrontUtils.showLogin(request, model, site);
return FrontUtils.getTplPath(request, site.getSolutionPath(),
TPLDIR_MEMBER, MEMBER_RESUME);
* 简历提交页
* @param request
* @param response
* @param model
* @throws IOException
+ @RequestMapping(value = &/member/resume.jspx&, method = RequestMethod.POST)
+ public String resumeSubmit(CmsUserResume resume,CmsUserExt ext, String nextUrl,
HttpServletRequest request, HttpServletResponse response,
ModelMap model) throws IOException {
CmsSite site = CmsUtils.getSite(request);
CmsUser user = CmsUtils.getUser(request);
FrontUtils.frontData(request, model, site);
MemberConfig mcfg = site.getConfig().getMemberConfig();
// 没有开启会员功能
if (!mcfg.isMemberOn()) {
return FrontUtils.showMessage(request, model, &member.memberClose&);
if (user == null) {
return FrontUtils.showLogin(request, model, site);
ext.setId(user.getId());
cmsUserExtMng.update(ext, user);
resume.setId(user.getId());
cmsUserResumeMng.update(resume, user);
log.info(&update CmsUserExt success. id={}&, user.getId());
return FrontUtils.showSuccess(request, model, nextUrl);
+ @RequestMapping(value = &/member/myapplys.jspx&, method = RequestMethod.GET)
+ public String myapplys(Integer pageNo,HttpServletRequest request,HttpServletResponse response, ModelMap model) {
CmsSite site = CmsUtils.getSite(request);
CmsUser user = CmsUtils.getUser(request);
FrontUtils.frontData(request, model, site);
FrontUtils.frontPageData(request, model);
MemberConfig mcfg = site.getConfig().getMemberConfig();
// 没有开启会员功能
if (!mcfg.isMemberOn()) {
return FrontUtils.showMessage(request, model, &member.memberClose&);
if (user == null) {
return FrontUtils.showLogin(request, model, site);
Pagination pagination=jobApplyMng.getPage(user.getId(),null,null,true,cpn(pageNo), CookieUtils.getPageSize(request));
model.addAttribute(&pagination&, pagination);
return FrontUtils.getTplPath(request, site.getSolutionPath(),
TPLDIR_MEMBER, MEMBER_APPLYS);
+ @RequestMapping(value = &/member/jobapply_delete.jspx&)
+ public String delete(Integer[] ids, HttpServletRequest request,
String nextUrl, HttpServletResponse response, ModelMap model) {
CmsSite site = CmsUtils.getSite(request);
CmsUser user = CmsUtils.getUser(request);
FrontUtils.frontData(request, model, site);
MemberConfig mcfg = site.getConfig().getMemberConfig();
// 没有开启会员功能
if (!mcfg.isMemberOn()) {
return FrontUtils.showMessage(request, model, &member.memberClose&);
if (user == null) {
return FrontUtils.showLogin(request, model, site);
WebErrors errors = validateDelete(ids, site, user, request);
if (errors.hasErrors()) {
return FrontUtils.showError(request, response, model, errors);
CmsJobApply[] arr = jobApplyMng.deleteByIds(ids);
log.info(&member contribute delete Content success. ids={}&,
StringUtils.join(arr, &,&));
return FrontUtils.showSuccess(request, model, nextUrl);
+ @RequestMapping(value = &/member/jobapply.jspx&)
+ public void jobapply(Integer cId, HttpServletRequest request, HttpServletResponse response,
ModelMap model) throws JSONException {
CmsUser user = CmsUtils.getUser(request);
JSONObject object = new JSONObject();
if (user == null) {
object.put(&result&, -1);
}else if(cId==null){
object.put(&result&, -2);
Content c=contentMng.findById(cId);
if(c==null){
object.put(&result&, -3);
}else if(user.getUserResume()==null){
object.put(&result&, -4);
}else if(user.hasApplyToday(cId)){
object.put(&result&, 0);
CmsJobApply jobApply=new CmsJobApply();
jobApply.setApplyTime(Calendar.getInstance().getTime());
jobApply.setContent(c);
jobApply.setUser(user);
jobApplyMng.save(jobApply);
object.put(&result&, 1);
ResponseUtils.renderJson(response, object.toString());
+ private WebErrors validateDelete(Integer[] ids, CmsSite site, CmsUser user,
HttpServletRequest request) {
WebErrors errors = WebErrors.create(request);
if (vldOpt(errors, site, user, ids)) {
+ private boolean vldOpt(WebErrors errors, CmsSite site, CmsUser user,
Integer[] ids) {
for (Integer id : ids) {
if (errors.ifNull(id, &id&)) {
CmsJobApply jobapply = jobApplyMng.findById(id);
// 数据不存在
if (errors.ifNotExist(jobapply, CmsJobApply.class, id)) {
// 非本用户数据
if (!jobapply.getUser().getId().equals(user.getId())) {
errors.noPermission(Content.class, id);
+ @Autowired
+ private CmsUserExtMng cmsUserExtM
+ @Autowired
+ private CmsUserResumeMng cmsUserResumeM
+ @Autowired
+ private CmsJobApplyMng jobApplyM
+ @Autowired
+ private ContentMng contentM
Index: FckAct.java
===================================================================
--- FckAct.java (revision 0)
+++ FckAct.java (revision 3)
@@ -0,0 +1,259 @@
+package com.jeecms.cms.action.
+import java.awt.C
+import java.io.F
+import java.io.FileInputS
+import java.io.IOE
+import java.io.PrintW
+import javax.servlet.http.HttpServletR
+import javax.servlet.http.HttpServletR
+import org.apache.commons.io.FilenameU
+import org.apache.commons.lang.StringU
+import org.slf4j.L
+import org.slf4j.LoggerF
+import org.springframework.beans.factory.annotation.A
+import org.springframework.stereotype.C
+import org.springframework.web.bind.annotation.RequestM
+import org.springframework.web.bind.annotation.RequestM
+import org.springframework.web.bind.annotation.RequestP
+import org.springframework.web.multipart.MultipartF
+import org.springframework.web.multipart.MultipartHttpServletR
+import com.jeecms.common.fck.C
+import com.jeecms.common.fck.ResourceT
+import com.jeecms.common.fck.UploadR
+import com.jeecms.common.fck.U
+import com.jeecms.common.image.ImageS
+import com.jeecms.common.image.ImageU
+import com.jeecms.common.upload.FileR
+import com.jeecms.common.upload.UploadU
+import com.jeecms.common.web.springmvc.RealPathR
+import com.jeecms.core.entity.CmsS
+import com.jeecms.core.entity.CmsU
+import com.jeecms.core.entity.F
+import com.jeecms.core.entity.MarkC
+import com.jeecms.core.manager.CmsUserM
+import com.jeecms.core.manager.DbFileM
+import com.jeecms.core.web.util.CmsU
+ * FCK服务器端接口
+ * 为了更好、更灵活的处理fck上传,重新实现FCK服务器端接口。
+@Controller
+public class FckAct {
+ private static final Logger log = LoggerFactory.getLogger(FckAct.class);
+ @RequestMapping(value = &/fck/upload.jspx&, method = RequestMethod.POST)
+ public void upload(
@RequestParam(value = &Command&, required = false) String commandStr,
@RequestParam(value = &Type&, required = false) String typeStr,
@RequestParam(value = &CurrentFolder&, required = false) String currentFolderStr,
@RequestParam(value = &mark&, required = false) Boolean mark,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
log.debug(&Entering Dispatcher#doPost&);
responseInit(response);
if (Utils.isEmpty(commandStr) && Utils.isEmpty(currentFolderStr)) {
commandStr = &QuickUpload&;
currentFolderStr = &/&;
if (Utils.isEmpty(typeStr)) {
typeStr = &File&;
if (currentFolderStr != null && !currentFolderStr.startsWith(&/&)) {
currentFolderStr = &/&.concat(currentFolderStr);
log.debug(&Parameter Command: {}&, commandStr);
log.debug(&Parameter Type: {}&, typeStr);
log.debug(&Parameter CurrentFolder: {}&, currentFolderStr);
UploadResponse ur = validateUpload(request, commandStr, typeStr,
currentFolderStr);
if (ur == null) {
ur = doUpload(request, typeStr, currentFolderStr, mark);
PrintWriter out = response.getWriter();
out.print(ur);
out.flush();
out.close();
+ private UploadResponse doUpload(HttpServletRequest request, String typeStr,
String currentFolderStr, Boolean mark) throws Exception {
ResourceType type = ResourceType.getDefaultResourceType(typeStr);
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)
// We upload just one file at the same time
MultipartFile uplFile = multipartRequest.getFileMap().entrySet().iterator().next().getValue();
String filename = FilenameUtils.getName(uplFile.getOriginalFilename());
CmsUser user = CmsUtils.getUser(request);
int fileSize = (int) (uplFile.getSize() / 1024);
// 文件太大,不允许上传
if (!user.isAllowMaxFile(fileSize)) {
log.warn(&member fck upload warn: not allow max file: {}&,
fileSize);
return UploadResponse.getInvalidFileTooLargeError(request, filename, user.getGroup().getAllowMaxFile());
// 文件上传今日额度已经用完
if (!user.isAllowPerDay(fileSize)) {
log.warn(&member fck upload warn: not allow per day: {}&,
fileSize);
long laveSize=user.getGroup().getAllowPerDay()-user.getUploadSize();
if(laveSize&0){
laveSize=0;
return UploadResponse.getInvalidUploadDailyLimitError(request, String.valueOf(laveSize));
// Some browsers transfer the entire source path not just the
// filename
log.debug(&Parameter NewFile: {}&, filename);
String ext = FilenameUtils.getExtension(filename);
// 不允许上传的文件后缀
if (!user.isAllowSuffix(ext)) {
log.warn(&member fck upload warn:&
+ & not allow file extension: {}&, ext);
return UploadResponse.getInvalidFileSuffixError(request);
if (type.isDeniedExtension(ext)) {
return UploadResponse.getInvalidFileTypeError(request);
if (type.equals(ResourceType.IMAGE)
&& !ImageUtils.isImage(uplFile.getInputStream())) {
return UploadResponse.getInvalidFileTypeError(request);
String fileU
CmsSite site = CmsUtils.getSite(request);
MarkConfig conf = site.getConfig().getMarkConfig();
if (mark == null) {
mark = conf.getOn();
boolean isImg = type.equals(ResourceType.IMAGE);
if (site.getConfig().getUploadToDb()) {
if (mark && isImg) {
File tempFile = mark(uplFile, conf);
fileUrl = dbFileMng.storeByExt(site.getUploadPath(), ext,
new FileInputStream(tempFile));
tempFile.delete();
fileUrl = dbFileMng.storeByExt(site.getUploadPath(), ext,
uplFile.getInputStream());
// 加上访问地址
String dbFilePath = site.getConfig().getDbFileUri();
fileUrl = request.getContextPath() + dbFilePath + fileU
} else if (site.getUploadFtp() != null) {
Ftp ftp = site.getUploadFtp();
if (mark && isImg) {
File tempFile = mark(uplFile, conf);
fileUrl = ftp.storeByExt(site.getUploadPath(), ext,
new FileInputStream(tempFile));
tempFile.delete();
fileUrl = ftp.storeByExt(site.getUploadPath(), ext, uplFile
.getInputStream());
// 加上url前缀
fileUrl = ftp.getUrl() + fileU
if (mark && isImg) {
File tempFile = mark(uplFile, conf);
fileUrl = fileRepository.storeByExt(site.getUploadPath(),
ext, tempFile);
tempFile.delete();
fileUrl = fileRepository.storeByExt(site.getUploadPath(),
ext, uplFile);
// 加上部署路径
fileUrl = request.getContextPath() + fileU
cmsUserMng.updateUploadSize(user.getId(), fileSize);
return UploadResponse.getOK(request, fileUrl);
} catch (IOException e) {
return UploadResponse.getFileUploadWriteError(request);
+ private void responseInit(HttpServletResponse response) {
response.setCharacterEncoding(&UTF-8&);
response.setContentType(&text/html&);
response.setHeader(&Cache-Control&, &no-cache&);
+ private UploadResponse validateUpload(HttpServletRequest request,
String commandStr, String typeStr, String currentFolderStr) {
// TODO 是否允许上传
if (!Command.isValidForPost(commandStr)) {
return UploadResponse.getInvalidCommandError(request);
if (!ResourceType.isValidType(typeStr)) {
return UploadResponse.getInvalidResourceTypeError(request);
if (!UploadUtils.isValidPath(currentFolderStr)) {
return UploadResponse.getInvalidCurrentFolderError(request);
CmsUser user = CmsUtils.getUser(request);
// 未登录,无权上传图片
if (user == null) {
log.warn(&member fck upload warn: not logged in.&);
return UploadResponse.getFileUploadDisabledError(request);
+ private File mark(MultipartFile file, MarkConfig conf) throws Exception {
String path = System.getProperty(&java.io.tmpdir&);
File tempFile = new File(path, String.valueOf(System
.currentTimeMillis()));
file.transferTo(tempFile);
boolean imgMark = !StringUtils.isBlank(conf.getImagePath());
if (imgMark) {
File markImg = new File(realPathResolver.get(conf.getImagePath()));
imageScale.imageMark(tempFile, tempFile, conf.getMinWidth(), conf
.getMinHeight(), conf.getPos(), conf.getOffsetX(), conf
.getOffsetY(), markImg);
imageScale.imageMark(tempFile, tempFile, conf.getMinWidth(), conf
.getMinHeight(), conf.getPos(), conf.getOffsetX(), conf
.getOffsetY(), conf.getContent(), Color.decode(conf
.getColor()), conf.getSize(), conf.getAlpha());
return tempF
+ private CmsUserMng cmsUserM
+ private FileRepository fileR
+ private DbFileMng dbFileM
+ private ImageScale imageS
+ private RealPathResolver realPathR
+ @Autowired
+ public void setCmsUserMng(CmsUserMng cmsUserMng) {
this.cmsUserMng = cmsUserM
+ @Autowired
+ public void setFileRepository(FileRepository fileRepository) {
this.fileRepository = fileR
+ @Autowired
+ public void setDbFileMng(DbFileMng dbFileMng) {
this.dbFileMng = dbFileM
+ @Autowired
+ public void setImageScale(ImageScale imageScale) {
this.imageScale = imageS
+ @Autowired
+ public void setRealPathResolver(RealPathResolver realPathResolver) {
this.realPathResolver = realPathR
Index: SwfUploadAct.java
===================================================================
--- SwfUploadAct.java (revision 0)
+++ SwfUploadAct.java (revision 3)
@@ -0,0 +1,46 @@
+package com.jeecms.cms.action.
+import javax.servlet.http.HttpServletR
+import javax.servlet.http.HttpServletR
+import org.springframework.stereotype.C
+import org.springframework.ui.ModelM
+import org.springframework.web.bind.annotation.RequestM
+import org.springframework.web.bind.annotation.RequestM
+import org.springframework.web.bind.annotation.RequestP
+import org.springframework.web.multipart.MultipartF
+import com.jeecms.cms.action.CommonU
+ * @author Tom
+ * 批量上传图片和附件
+@Controller
+public class SwfUploadAct extends CommonUpload {
* 错误信息参数
+ public static final String ERROR = &error&;
+ @RequestMapping(value = &/member/o_swfPicsUpload.jspx&, method = RequestMethod.POST)
public void swfPicsUpload(
String root,
Integer uploadNum,
@RequestParam(value = &Filedata&, required = false) MultipartFile file,
HttpServletRequest request, HttpServletResponse response,
ModelMap model) throws Exception{
super.swfPicsUpload(root, uploadNum, file, request, response, model);
+ @RequestMapping(value = &/member/o_swfAttachsUpload.jspx&, method = RequestMethod.POST)
+ public void swfAttachsUpload(
String root,
Integer uploadNum,
@RequestParam(value = &Filedata&, required = false) MultipartFile file,
HttpServletRequest request, HttpServletResponse response,
ModelMap model) throws Exception{
super.swfAttachsUpload(root, uploadNum, file, request, response, model);
Index: MemberAct.java
===================================================================
--- MemberAct.java (revision 0)
+++ MemberAct.java (revision 3)
@@ -0,0 +1,255 @@
+package com.jeecms.cms.action.
+import static com.jeecms.cms.Constants.TPLDIR_MEMBER;
+import java.io.IOE
+import javax.servlet.http.HttpServletR
+import javax.servlet.http.HttpServletR
+import org.slf4j.L
+import org.slf4j.LoggerF
+import org.springframework.beans.factory.annotation.A
+import org.springframework.stereotype.C
+import org.springframework.ui.ModelM
+import org.springframework.web.bind.annotation.RequestM
+import org.springframework.web.bind.annotation.RequestM
+import com.jeecms.common.web.ResponseU
+import com.jeecms.core.entity.CmsS
+import com.jeecms.core.entity.CmsU
+import com.jeecms.core.entity.CmsUserE
+import com.jeecms.core.entity.MemberC
+import com.jeecms.core.manager.CmsUserExtM
+import com.jeecms.core.manager.CmsUserM
+import com.jeecms.core.web.WebE
+import com.jeecms.core.web.util.CmsU
+import com.jeecms.core.web.util.FrontU
+ * 会员中心Action
+@Controller
+public class MemberAct {
+ private static final Logger log = LoggerFactory.getLogger(MemberAct.class);
+ public static final String MEMBER_CENTER = &tpl.memberCenter&;
+ public static final String MEMBER_PROFILE = &tpl.memberProfile&;
+ public static final String MEMBER_PORTRAIT = &tpl.memberPortrait&;
+ public static final String MEMBER_PASSWORD = &tpl.memberPassword&;
* 会员中心页
* 如果没有登录则跳转到登陆页
* @param request
* @param response
* @param model
+ @RequestMapping(value = &/member/index.jspx&, method = RequestMethod.GET)
+ public String index(HttpServletRequest request,
HttpServletResponse response, ModelMap model) {
CmsSite site = CmsUtils.getSite(request);
CmsUser user = CmsUtils.getUser(request);
FrontUtils.frontData(request, model, site);
MemberConfig mcfg = site.getConfig().getMemberConfig();
// 没有开启会员功能
if (!mcfg.isMemberOn()) {
return FrontUtils.showMessage(request, model, &member.memberClose&);
if (user == null) {
return FrontUtils.showLogin(request, model, site);
return FrontUtils.getTplPath(request, site.getSolutionPath(),
TPLDIR_MEMBER, MEMBER_CENTER);
* 个人资料输入页
* @param request
* @param response
* @param model
+ @RequestMapping(value = &/member/profile.jspx&, method = RequestMethod.GET)
+ public String profileInput(HttpServletRequest request,
HttpServletResponse response, ModelMap model) {
CmsSite site = CmsUtils.getSite(request);
CmsUser user = CmsUtils.getUser(request);
FrontUtils.frontData(request, model, site);
MemberConfig mcfg = site.getConfig().getMemberConfig();
// 没有开启会员功能
if (!mcfg.isMemberOn()) {
return FrontUtils.showMessage(request, model, &member.memberClose&);
if (user == null) {
return FrontUtils.showLogin(request, model, site);
return FrontUtils.getTplPath(request, site.getSolutionPath(),
TPLDIR_MEMBER, MEMBER_PROFILE);
* 更换头像
* @param request
* @param response
* @param model
+ @RequestMapping(value = &/member/portrait.jspx&, method = RequestMethod.GET)
+ public String portrait(HttpServletRequest request,
HttpServletResponse response, ModelMap model) {
CmsSite site = CmsUtils.getSite(request);
CmsUser user = CmsUtils.getUser(request);
FrontUtils.frontData(request, model, site);
MemberConfig mcfg = site.getConfig().getMemberConfig();
// 没有开启会员功能
if (!mcfg.isMemberOn()) {
return FrontUtils.showMessage(request, model, &member.memberClose&);
if (user == null) {
return FrontUtils.showLogin(request, model, site);
return FrontUtils.getTplPath(request, site.getSolutionPath(),
TPLDIR_MEMBER, MEMBER_PORTRAIT);
* 个人资料提交页
* @param request
* @param response
* @param model
* @throws IOException
+ @RequestMapping(value = &/member/profile.jspx&, method = RequestMethod.POST)
+ public String profileSubmit(CmsUserExt ext, String nextUrl,
HttpServletRequest request, HttpServletResponse response,
ModelMap model) throws IOException {
CmsSite site = CmsUtils.getSite(request);
CmsUser user = CmsUtils.getUser(request);
FrontUtils.frontData(request, model, site);
MemberConfig mcfg = site.getConfig().getMemberConfig();
// 没有开启会员功能
if (!mcfg.isMemberOn()) {
return FrontUtils.showMessage(request, model, &member.memberClose&);
if (user == null) {
return FrontUtils.showLogin(request, model, site);
ext.setId(user.getId());
cmsUserExtMng.update(ext, user);
log.info(&update CmsUserExt success. id={}&, user.getId());
return FrontUtils.showSuccess(request, model, nextUrl);
* 密码修改输入页
* @param request
* @param response
* @param model
+ @RequestMapping(value = &/member/pwd.jspx&, method = RequestMethod.GET)
+ public String passwordInput(HttpServletRequest request,
HttpServletResponse response, ModelMap model) {
CmsSite site = CmsUtils.getSite(request);
CmsUser user = CmsUtils.getUser(request);
FrontUtils.frontData(request, model, site);
MemberConfig mcfg = site.getConfig().getMemberConfig();
// 没有开启会员功能
if (!mcfg.isMemberOn()) {
return FrontUtils.showMessage(request, model, &member.memberClose&);
if (user == null) {
return FrontUtils.showLogin(request, model, site);
return FrontUtils.getTplPath(request, site.getSolutionPath(),
TPLDIR_MEMBER, MEMBER_PASSWORD);
* 密码修改提交页
* @param origPwd
* @param newPwd
* @param email
* @param nextUrl
下一个页面地址
* @param request
* @param response
* @param model
* @throws IOException
+ @RequestMapping(value = &/member/pwd.jspx&, method = RequestMethod.POST)
+ public String passwordSubmit(String origPwd, String newPwd, String email,
String nextUrl, HttpServletRequest request,
HttpServletResponse response, ModelMap model) throws IOException {
CmsSite site = CmsUtils.getSite(request);
CmsUser user = CmsUtils.getUser(request);
FrontUtils.frontData(request, model, site);
MemberConfig mcfg = site.getConfig().getMemberConfig();
// 没有开启会员功能
if (!mcfg.isMemberOn()) {
return FrontUtils.showMessage(request, model, &member.memberClose&);
if (user == null) {
return FrontUtils.showLogin(request, model, site);
WebErrors errors = validatePasswordSubmit(user.getId(), origPwd,
newPwd, email, request);
if (errors.hasErrors()) {
return FrontUtils.showError(request, response, model, errors);
cmsUserMng.updatePwdEmail(user.getId(), newPwd, email);
return FrontUtils.showSuccess(request, model, nextUrl);
* 验证密码是否正确
* @param origPwd
* @param request
* @param response
+ @RequestMapping(&/member/checkPwd.jspx&)
+ public void checkPwd(String origPwd, HttpServletRequest request,
HttpServletResponse response) {
CmsUser user = CmsUtils.getUser(request);
boolean pass = cmsUserMng.isPasswordValid(user.getId(), origPwd);
ResponseUtils.renderJson(response, pass ? &true& : &false&);
+ private WebErrors validatePasswordSubmit(Integer id, String origPwd,
String newPwd, String email, HttpServletRequest request) {
WebErrors errors = WebErrors.create(request);
if (errors.ifBlank(origPwd, &origPwd&, 100)) {
if (errors.ifMaxLength(newPwd, &newPwd&, 100)) {
if (errors.ifNotEmail(email, &email&, 100)) {
if (!cmsUserMng.isPasswordValid(id, origPwd)) {
errors.addErrorCode(&member.origPwdInvalid&);
+ @Autowired
+ private CmsUserMng cmsUserM
+ @Autowired
+ private CmsUserExtMng cmsUserExtM
Index: LoginAct.java
===================================================================
--- LoginAct.java (revision 0)
+++ LoginAct.java (revision 3)
@@ -0,0 +1,37 @@
+package com.jeecms.cms.action.
+import static com.jeecms.cms.Constants.TPLDIR_CSI;
+import javax.servlet.http.HttpServletR
+import org.springframework.stereotype.C
+import org.springframework.ui.ModelM
+import org.springframework.web.bind.annotation.RequestM
+import com.jeecms.common.web.RequestU
+import com.jeecms.core.entity.CmsS
+import com.jeecms.core.web.util.CmsU
+import com.jeecms.core.web.util.FrontU
+@Controller
+public class LoginAct {
+ public static final String LOGIN_CSI = &tpl.loginCsi&;
+ public static final String TPL_SPACE = &tpl.space&;
* 客户端包含
* @param request
* @param model
+ @RequestMapping(value = &/login_csi.jspx&)
+ public String csi(HttpServletRequest request, ModelMap model) {
CmsSite site = CmsUtils.getSite(request);
// 将request中所有参数
model.putAll(RequestUtils.getQueryParams(request));
FrontUtils.frontData(request, model, site);
return FrontUtils.getTplPath(request, site.getSolutionPath(),
TPLDIR_CSI, LOGIN_CSI);
Index: UeditorAct.java
===================================================================
--- UeditorAct.java (revision 0)
+++ UeditorAct.java (revision 3)
@@ -0,0 +1,446 @@
+package com.jeecms.cms.action.
+import java.awt.C
+import java.io.BufferedR
+import java.io.F
+import java.io.FileInputS
+import java.io.FileOutputS
+import java.io.IOE
+import java.io.InputS
+import java.io.InputStreamR
+import java.io.OutputS
+import java.net.MalformedURLE
+import java.net.URI;
+import java.net.URL;
+import java.net.URLC
+import java.net.URLE
+import java.util.ArrayL
+import java.util.L
+import java.util.L
+import javax.servlet.http.HttpServletR
+import javax.servlet.http.HttpServletR
+import org.apache.commons.io.FilenameU
+import org.apache.commons.io.IOU
+import org.apache.commons.lang.StringU
+import org.apache.http.HttpE
+import org.apache.http.HttpR
+import org.apache.http.client.HttpC
+import org.apache.http.client.methods.HttpG
+import org.apache.http.impl.client.DefaultHttpC
+import org.json.JSONE
+import org.json.JSONO
+import org.slf4j.L
+import org.slf4j.LoggerF
+import org.springframework.beans.factory.annotation.A
+import org.springframework.stereotype.C
+import org.springframework.web.bind.annotation.RequestM
+import org.springframework.web.bind.annotation.RequestM
+import org.springframework.web.bind.annotation.RequestP
+import org.springframework.web.multipart.MultipartF
+import org.springframework.web.multipart.MultipartHttpServletR
+import com.jeecms.common.file.FileNameU
+import com.jeecms.common.image.ImageS
+import com.jeecms.common.image.ImageU
+import com.jeecms.common.ueditor.LocalizedM
+import com.jeecms.common.ueditor.ResourceT
+import com.jeecms.common.ueditor.U
+import com.jeecms.common.upload.FileR
+import com.jeecms.common.upload.UploadU
+import com.jeecms.common.web.ResponseU
+import com.jeecms.common.web.springmvc.RealPathR
+import com.jeecms.core.entity.CmsS
+import com.jeecms.core.entity.CmsU
+import com.jeecms.core.entity.F
+import com.jeecms.core.entity.MarkC
+import com.jeecms.core.manager.CmsUserM
+import com.jeecms.core.manager.DbFileM
+import com.jeecms.core.web.util.CmsU
+ * ueditor服务器端接口
+ * 为了更好、更灵活的处理ueditor上传,重新实现ueditor服务器端接口。
+@Controller
+public class UeditorAct {
+ private static final Logger log = LoggerFactory.getLogger(UeditorAct.class);
+ private static final String STATE = &state&;
+ // 上传成功
+ private static final String SUCCESS = &SUCCESS&;
+ private static final String URL = &url&;
+ // 原URL
+ private static final String SRC_URL = &srcUrl&;
+ // 文件原名
+ private static final String ORIGINAL = &original&;
+ // TITLE
+ private static final String TITLE = &title&;
+ // 文件类型
+ private static final String FILETYPE = &fileType&;
+ // 在线图片管理图片分隔符
+ private static final String UE_SEPARATE_UE=&ue_separate_ue&;
+ //提示信息
+ private static final String TIP = &tip&;
+ @RequestMapping(value = &/ueditor/upload.jspx&,method = RequestMethod.POST)
+ public void upload(
@RequestParam(value = &Type&, required = false) String typeStr,
Boolean mark,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
responseInit(response);
if (Utils.isEmpty(typeStr)) {
typeStr = &File&;
if(mark==null){
JSONObject json = new JSONObject();
JSONObject ob = validateUpload(request, typeStr);
if (ob == null) {
json = doUpload(request, typeStr, mark);
ResponseUtils.renderJson(response, json.toString());
+ @RequestMapping(value = &/ueditor/getRemoteImage.jspx&)
+ public void getRemoteImage(HttpServletRequest request,
HttpServletResponse response) throws Exception {
String url = request.getParameter(&upfile&);
CmsSite site=CmsUtils.getSite(request);
JSONObject json = new JSONObject();
String[] arr = url.split(UE_SEPARATE_UE);
String[] outSrc = new String[arr.length];
for (int i = 0; i & arr. i++) {
outSrc[i]=saveRemoteImage(arr[i], site.getContextPath(), site.getUploadPath());
String outstr = &&;
for (int i = 0; i & outSrc. i++) {
outstr += outSrc[i] + UE_SEPARATE_UE;
outstr = outstr.substring(0, outstr.lastIndexOf(UE_SEPARATE_UE));
json.put(URL, outstr);
json.put(SRC_URL, url);
json.put(TIP, LocalizedMessages.getRemoteImageSuccessSpecified(request));
ResponseUtils.renderJson(response, json.toString());
* 在线图片管理(选择最近或站点图片)
* @param picNum 图片显示数量(数量不宜太大)
* @param insite 站点内图片(默认选择最近月内图片)
* @param request
* @param response
* @throws Exception
+ @RequestMapping(value = &/ueditor/imageManager.jspx&)
+ public void imageManager(Integer picNum,Boolean insite,HttpServletRequest request,
HttpServletResponse response) throws Exception {
CmsSite site=CmsUtils.getSite(request);
String uploadPath=site.getUploadPath();
if(insite==null){
if(insite){
path = uploadP
path = uploadPath+&/&+getSubFolderNameDirectory(realPathResolver.get(uploadPath));
String realpath = realPathResolver.get(path);
String imgStr =&&;
StringBuffer imgStrBuff=new StringBuffer();
List&File& files = getFiles(realpath,new ArrayList&File&());
if(picNum==null){
picNum=10;
if(picNum&files.size()){
picNum=files.size();
for(int i=0;i&picNi++){
File file=files.get(i);
imgStrBuff.append(file.getPath().replace(realPathResolver.get(&&),site.getContextPath())+UE_SEPARATE_UE);
imgStr=imgStrBuff.toString();
if(StringUtils.isNotBlank(imgStr)){
imgStr = imgStr.substring(0,imgStr.lastIndexOf(UE_SEPARATE_UE)).replace(File.separator, &/&).trim();
response.getWriter().print(imgStr);
+ //getmovie方法完全参考ueditor提供
+ @RequestMapping(value = &/ueditor/getmovie.jspx&, method = RequestMethod.POST)
+ public void getMovie(HttpServletRequest request,
HttpServletResponse response) throws Exception {
StringBuffer readOneLineBuff = new StringBuffer();
String content = &&;
String searchkey = request.getParameter(&searchKey&);
String videotype = request.getParameter(&videoType&);
searchkey = URLEncoder.encode(searchkey, &utf-8&);
URL url = new URL(
&http://api.tudou.com/v3/gw?method=item.search&appKey=myKey&format=json&kw=&
+ searchkey + &&pageNo=1&pageSize=20&channelId=&
+ videotype + &&inDays=7&media=v&sort=s&);
URLConnection conn = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(
conn.getInputStream(), &utf-8&));
String line = &&;
while ((line = reader.readLine()) != null) {
readOneLineBuff.append(line);
content = readOneLineBuff.toString();
reader.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
ResponseUtils.renderText(response, content);
+ private JSONObject doUpload(HttpServletRequest request, String typeStr,Boolean mark) throws Exception {
ResourceType type = ResourceType.getDefaultResourceType(typeStr);
JSONObject result = new JSONObject();
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)
// We upload just one file at the same time
MultipartFile uplFile = multipartRequest.getFileMap().entrySet()
.iterator().next().getValue();
// Some browsers transfer the entire source path not just the
// filename
String filename = FilenameUtils.getName(uplFile
.getOriginalFilename());
log.debug(&Parameter NewFile: {}&, filename);
String ext = FilenameUtils.getExtension(filename);
if (type.isDeniedExtension(ext)) {
result.put(STATE, LocalizedMessages
.getInvalidFileTypeSpecified(request));
if (type.equals(ResourceType.IMAGE)
&& !ImageUtils.isImage(uplFile.getInputStream())) {
result.put(STATE, LocalizedMessages
.getInvalidFileTypeSpecified(request));
String fileU
CmsSite site = CmsUtils.getSite(request);
CmsUser user = CmsUtils.getUser(request);
MarkConfig conf = site.getConfig().getMarkConfig();
if (mark == null) {
mark = conf.getOn();
boolean isImg = type.equals(ResourceType.IMAGE);
if (site.getConfig().getUploadToDb()) {
if (mark && isImg) {
File tempFile = mark(uplFile, conf);
fileUrl = dbFileMng.storeByExt(site.getUploadPath(), ext,
new FileInputStream(tempFile));
tempFile.delete();
fileUrl = dbFileMng.storeByExt(site.getUploadPath(), ext,
uplFile.getInputStream());
// 加上访问地址
String dbFilePath = site.getConfig().getDbFileUri();
fileUrl = request.getContextPath() + dbFilePath + fileU
} else if (site.getUploadFtp() != null) {
Ftp ftp = site.getUploadFtp();
if (mark && isImg) {
File tempFile = mark(uplFile, conf);
fileUrl = ftp.storeByExt(site.getUploadPath(), ext,
new FileInputStream(tempFile));
tempFile.delete();
fileUrl = ftp.storeByExt(site.getUploadPath(), ext, uplFile
.getInputStream());
// 加上url前缀
fileUrl = ftp.getUrl() + fileU
if (mark && isImg) {
File tempFile = mark(uplFile, conf);
fileUrl = fileRepository.storeByExt(site.getUploadPath(),
ext, tempFile);
tempFile.delete();
fileUrl = fileRepository.storeByExt(site.getUploadPath(),
ext, uplFile);
// 加上部署路径
fileUrl = request.getContextPath() + fileU
cmsUserMng.updateUploadSize(user.getId(), Integer.parseInt(String
.valueOf(uplFile.getSize() / 1024)));
//需要给页面参数(参考ueditor的/jsp/imageUp.jsp)
result.put(STATE, SUCCESS);
result.put(URL, fileUrl);
result.put(ORIGINAL, filename);
result.put(TITLE, filename);
result.put(FILETYPE, &.& + ext);
} catch (IOException e) {
result.put(STATE, LocalizedMessages
.getFileUploadWriteError(request));
+ private void responseInit(HttpServletResponse response) {
response.setCharacterEncoding(&UTF-8&);
response.setContentType(&text/html&);
response.setHeader(&Cache-Control&, &no-cache&);
+ private JSONObject validateUpload(HttpServletRequest request, String typeStr)
throws JSONException {
// TODO 是否允许上传
JSONObject result = new JSONObject();
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)
MultipartFile uplFile = multipartRequest.getFileMap().entrySet()
.iterator().next().getValue();
String filename = FilenameUtils.getName(uplFile.getOriginalFilename());
int fileSize = (int) (uplFile.getSize() / 1024);
String ext = FilenameUtils.getExtension(filename).toLowerCase(
Locale.ENGLISH);
CmsUser user = CmsUtils.getUser(request);
// 非允许的后缀
if (!user.isAllowSuffix(ext)) {
result.put(STATE, LocalizedMessages
.getInvalidFileSuffixSpecified(request));
// 超过附件大小限制
if (!user.isAllowMaxFile((int) (uplFile.getSize() / 1024))) {
result.put(STATE, LocalizedMessages.getInvalidFileToLargeSpecified(
request, filename, user.getGroup().getAllowMaxFile()));
// 超过每日上传限制
if (!user.isAllowPerDay(fileSize)) {
long laveSize = user.getGroup().getAllowPerDay()
- user.getUploadSize();
if (laveSize & 0) {
laveSize = 0;
result.put(STATE, LocalizedMessages
.getInvalidUploadDailyLimitSpecified(request, String
.valueOf(laveSize)));
if (!ResourceType.isValidType(typeStr)) {
result.put(STATE, LocalizedMessages
.getInvalidResouceTypeSpecified(request));
String getSubFolderNameDirectory(String directory) {
File realFile = new File(directory);
if(realFile.isDirectory()){
File[] subfiles = realFile.listFiles();
if(subfiles!=null&&subfiles.length&0){
return subfiles[subfiles.length-1].getName();
+ private List&File& getFiles(String realpath, List&File& files) {
File realFile = new File(realpath);
if (realFile.isDirectory()) {
File[] subfiles = realFile.listFiles();
for(File file :subfiles ){
if(file.isDirectory()){
getFiles(file.getAbsolutePath(),files);
if(ImageUtils.isValidImageExt( FilenameUtils.getExtension(file.getName()))){
files.add(file);
String saveRemoteImage(String imgUrl,String contextPath,String uploadPath) {
HttpClient client = new DefaultHttpClient();
String outFileName=&&;
HttpGet httpget = new HttpGet(new URI(imgUrl));
HttpResponse response = client.execute(httpget);
InputStream is =
OutputStream os =
HttpEntity entity =
entity = response.getEntity();
is = entity.getContent();
outFileName=UploadUtils.generateFilename(uploadPath, FileNameUtils.getFileSufix(imgUrl));
os = new FileOutputStream(realPathResolver.get(outFileName));
IOUtils.copy(is, os);
}catch (Exception e) {
return contextPath+outFileN
+ private File mark(MultipartFile file, MarkConfig conf) throws Exception {
String path = System.getProperty(&java.io.tmpdir&);
File tempFile = new File(path, String.valueOf(System
.currentTimeMillis()));
file.transferTo(tempFile);
boolean imgMark = !StringUtils.isBlank(conf.getImagePath());
if (imgMark) {
File markImg = new File(realPathResolver.get(conf.getImagePath()));
imageScale.imageMark(tempFile, tempFile, conf.getMinWidth(), conf
.getMinHeight(), conf.getPos(), conf.getOffsetX(), conf
.getOffsetY(), markImg);
imageScale.imageMark(tempFile, tempFile, conf.getMinWidth(), conf
.getMinHeight(), conf.getPos(), conf.getOffsetX(), conf
.getOffsetY(), conf.getContent(), Color.decode(conf
.getColor()), conf.getSize(), conf.getAlpha());
return tempF
+ private FileRepository fileR
+ private DbFileMng dbFileM
+ private ImageScale imageS
+ private RealPathResolver realPathR
+ @Autowired
+ private CmsUserMng cmsUserM
+ @Autowired
+ public void setFileRepository(FileRepository fileRepository) {
this.fileRepository = fileR
+ @Autowired
+ public void setDbFileMng(DbFileMng dbFileMng) {
this.dbFileMng = dbFileM
+ @Autowired
+ public void setImageScale(ImageScale imageScale) {
this.imageScale = imageS
+ @Autowired
+ public void setRealPathResolver(RealPathResolver realPathResolver) {
this.realPathResolver = realPathR
Index: ContributeAct.java
===================================================================
--- ContributeAct.java (revision 0)
+++ ContributeAct.java (revision 3)
@@ -0,0 +1,348 @@
+package com.jeecms.cms.action.
+import static com.jeecms.cms.Constants.TPLDIR_MEMBER;
+import java.io.IOE
+import java.util.L
+import javax.servlet.http.HttpServletR
+import javax.servlet.http.HttpServletR
+import org.apache.commons.io.FilenameU
+import org.apache.commons.lang.StringU
+import org.springframework.beans.factory.annotation.A
+import org.springframework.stereotype.C
+import org.springframework.ui.ModelM
+import org.springframework.web.bind.annotation.RequestM
+import org.springframework.web.bind.annotation.RequestP
+import org.springframework.web.multipart.MultipartF
+import com.jeecms.cms.manager.assist.CmsFileM
+import com.jeecms.core.entity.CmsS
+import com.jeecms.core.entity.CmsU
+import com.jeecms.core.entity.F
+import com.jeecms.core.manager.CmsUserM
+import com.jeecms.core.manager.DbFileM
+import com.jeecms.core.web.WebE
+import com.jeecms.core.web.util.CmsU
+import com.jeecms.core.web.util.FrontU
+ * 会员投稿Action
+@Controller
+public class ContributeAct extends AbstractContentMemberAct {
+ public static final String CONTRIBUTE_LIST = &tpl.contributeList&;
+ public static final String CONTRIBUTE_ADD = &tpl.contributeAdd&;
+ public static final String CONTRIBUTE_EDIT = &tpl.contributeEdit&;
+ public static final String CONTRIBUTE_UPLOADMIDIA = &tpl.uploadMedia&;
+ public static final String CONTRIBUTE_UPLOADATTACHMENT = &tpl.uploadAttachment&;
* 会员投稿列表
* @param title
* @param channelId
* @param pageNo
* @param request
* @param model
+ @RequestMapping(value = &/member/contribute_list.jspx&)
+ public String list(String queryTitle, Integer modelId,
Integer queryChannelId, Integer pageNo, HttpServletRequest request,
ModelMap model) {
return super.list(queryTitle, modelId, queryChannelId, CONTRIBUTE_LIST,
pageNo, request, model);
* 会员投稿添加
* @param request
* @param model
+ @RequestMapping(value = &/member/contribute_add.jspx&)
+ public String add(HttpServletRequest request, HttpServletResponse response,
ModelMap model) {
return super.add( CONTRIBUTE_ADD, request, response, model);
* 会员投稿保存
* @param id
* @param title
* @param author
* @param description
* @param txt
* @param tagStr
* @param channelId
* @param nextUrl
下一个页面地址
* @param request
* @param response
* @param model
+ @RequestMapping(value = &/member/contribute_save.jspx&)
+ public String save(String title, String author, String description,
String txt, String tagStr, Integer channelId,Integer modelId, String captcha,
String mediaPath,String mediaType,
String[] attachmentPaths, String[] attachmentNames,
String[] attachmentFilenames, String[] picPaths, String[] picDescs,
String nextUrl, HttpServletRequest request,
HttpServletResponse response, ModelMap model) {
return super.save(title, author, description, txt, tagStr, channelId,modelId,
captcha,mediaPath,mediaType,attachmentPaths,attachmentNames, attachmentFilenames
,picPaths,picDescs,nextUrl, request, response, model);
* 会员投稿修改
* @param id
* @param request
* @param response
* @param model
+ @RequestMapping(value = &/member/contribute_edit.jspx&)
+ public String edit(Integer id, HttpServletRequest request,
HttpServletResponse response, ModelMap model) {
return super.edit(id, CONTRIBUTE_EDIT, request, response, model);
* 会有投稿更新
* @param id
* @param title
* @param author
* @param description
* @param txt
* @param tagStr
* @param channelId
* @param nextUrl
下一个页面地址
* @param request
* @param response
* @param model
+ @RequestMapping(value = &/member/contribute_update.jspx&)
+ public String update(Integer id, String title, String author,
String description, String txt, String tagStr, Integer channelId,
String mediaPath,String mediaType,
String[] attachmentPaths, String[] attachmentNames,
String[] attachmentFilenames, String[] picPaths, String[] picDescs,
String nextUrl, HttpServletRequest request,
HttpServletResponse response, ModelMap model) {
return super.update(id, title, author, description, txt, tagStr,
channelId, mediaPath,mediaType,attachmentPaths,attachmentNames, attachmentFilenames
,picPaths,picDescs, nextUrl, request, response, model);
* 会员投稿删除
* @param ids
待删除的文章ID数组
* @param nextUrl
下一个页面地址
* @param request
* @param response
* @param model
+ @RequestMapping(value = &/member/contribute_delete.jspx&)
+ public String delete(Integer[] ids, HttpServletRequest request,
String nextUrl, HttpServletResponse response, ModelMap model) {
return super.delete(ids, request, nextUrl, response, model);
+ @RequestMapping(&/member/o_upload_media.jspx&)
+ public String uploadMedia(
@RequestParam(value = &mediaFile&, required = false) MultipartFile file,
String filename, HttpServletRequest request, ModelMap model) {
CmsSite site = CmsUtils.getSite(request);
CmsUser user = CmsUtils.getUser(request);
String origName = file.getOriginalFilename();
String ext = FilenameUtils.getExtension(origName).toLowerCase(
Locale.ENGLISH);
WebErrors errors = validateUpload(file, request);
if (errors.hasErrors()) {
model.addAttribute(&error&, errors.getErrors().get(0));
return FrontUtils.getTplPath(request, site.getSolutionPath(),
TPLDIR_MEMBER, CONTRIBUTE_UPLOADMIDIA);
// TODO 检查允许上传的后缀
String fileU
if (site.getConfig().getUploadToDb()) {
String dbFilePath = site.getConfig().getDbFileUri();
if (!StringUtils.isBlank(filename)
&& FilenameUtils.getExtension(filename).equals(ext)) {
filename = filename.substring(dbFilePath.length());
fileUrl = dbFileMng.storeByFilename(filename, file
.getInputStream());
fileUrl = dbFileMng.storeByExt(site.getUploadPath(), ext,
file.getInputStream());
// 加上访问地址
fileUrl = request.getContextPath() + dbFilePath + fileU
} else if (site.getUploadFtp() != null) {
Ftp ftp = site.getUploadFtp();
String ftpUrl = ftp.getUrl();
if (!StringUtils.isBlank(filename)
&& FilenameUtils.getExtension(filename).equals(ext)) {
filename = filename.substring(ftpUrl.length());
fileUrl = ftp.storeByFilename(filename, file
.getInputStream());
fileUrl = ftp.storeByExt(site.getUploadPath(), ext, file
.getInputStream());
// 加上url前缀
fileUrl = ftpUrl + fileU
String ctx = request.getContextPath();
if (!StringUtils.isBlank(filename)
&& FilenameUtils.getExtension(filename).equals(ext)) {
filename = filename.substring(ctx.length());
fileUrl = fileRepository.storeByFilename(filename, file);
fileUrl = fileRepository.storeByExt(site.getUploadPath(),
ext, file);
// 加上部署路径
fileUrl = ctx + fileU
cmsUserMng.updateUploadSize(user.getId(), Integer.parseInt(String.valueOf(file.getSize()/1024)));
if(fileMng.findByPath(fileUrl)!=null){
fileMng.saveFileByPath(fileUrl, origName, false);
model.addAttribute(&mediaPath&, fileUrl);
model.addAttribute(&mediaExt&, ext);
} catch (IllegalStateException e) {
model.addAttribute(&error&, e.getMessage());
} catch (IOException e) {
model.addAttribute(&error&, e.getMessage());
return FrontUtils.getTplPath(request, site.getSolutionPath(),
TPLDIR_MEMBER, CONTRIBUTE_UPLOADMIDIA);
+ @RequestMapping(&/member/o_upload_attachment.jspx&)
+ public String uploadAttachment(
@RequestParam(value = &attachmentFile&, required = false) MultipartFile file,
String attachmentNum, HttpServletRequest request, ModelMap model) {
CmsSite site = CmsUtils.getSite(request);
CmsUser user= CmsUtils.getUser(request);
String origName = file.getOriginalFilename();
String ext = FilenameUtils.getExtension(origName).toLowerCase(
Locale.ENGLISH);
WebErrors errors = validateUpload(file,request);
if (errors.hasErrors()) {
model.addAttribute(&error&, errors.getErrors().get(0));
return FrontUtils.getTplPath(request, site.getSolutionPath(),
TPLDIR_MEMBER, CONTRIBUTE_UPLOADATTACHMENT);
// TODO 检查允许上传的后缀
String fileU
if (site.getConfig().getUploadToDb()) {
String dbFilePath = site.getConfig().getDbFileUri();
fileUrl = dbFileMng.storeByExt(site.getUploadPath(), ext, file
.getInputStream());
// 加上访问地址
fileUrl = request.getContextPath() + dbFilePath + fileU
} else if (site.getUploadFtp() != null) {
Ftp ftp = site.getUploadFtp();
String ftpUrl = ftp.getUrl();
fileUrl = ftp.storeByExt(site.getUploadPath(), ext, file
.getInputStream());
// 加上url前缀
fileUrl = ftpUrl + fileU
String ctx = request.getContextPath();
fileUrl = fileRepository.storeByExt(site.getUploadPath(), ext,
// 加上部署路径
fileUrl = ctx + fileU
cmsUserMng.updateUploadSize(user.getId(), Integer.parseInt(String.valueOf(file.g}

我要回帖

更多关于 12306用户未登录 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信