一次项目部署所引发的思考

服务器部署项目问题总结

一.问题

  在本机运行正常的项目,部署到远程服务器上之后部分功能运行出错,错误信息是“ No Result Defined For  Action  And Result Input ”,由于在本机运行正常,所以初步认为是远程服务器上的java环境导致的运 行出错,但是在将服务器上的JDK、Tomcat等环境重装成和本地一致之后项 目仍然报相同的错误,在网上搜查的方法也都没有解决问题,后来使用 struts2的debug标签查找到了问题所在,问题是上传文件的临时路径无法找到导致带有文件上传的表单提交无法通过struts2的拦截器验证,返回“INPUT”,但是在action中没有关于“INPUT”的配置,所以导致出现上述错误。

  在出错的表单中,文件上传功能是使用struts2的fileUpload方式实现的,在实现文件上传时,需要获取到上传文件的绝对路径和相对路径,但是这两个只是在文件的上传和持久化路径时需要,除了这两个路径之外还需要一个虚拟路径,这个虚拟路径用来保存上传文件所形成的临时文件,也就是一个临时路径,如果文件上传失败,临时文件也是存储在该路径之中。如果不配置的话将使用默认的 javax.servlet.context.tempdir 来保存文件,但是在struts2的配置文件中设置<constant name="struts.multipart.saveDir" value="c:/test"/>那么上传文件的临时路径就变成了c盘的test文件夹,但是之前设置的临时文件的保存路径是在E盘,但是远程服务器上只存在C盘,并不存在E盘,导致了找不到指定路径进而报错。解决办法就是将临时文件改为远程服务器上存在的系统盘即可。

二.反思

  1.第一点不得不说的就是对于struts2的fileUpLoad组件的使用的熟练程度不够,每次使用的时候都是拿到以前写好的或者是在网上查找到的例子直接Copy、修改,看到代码也能理解是什么意思,也能实现需要的功能,虽然这样做可以提高效率,但是某些配置或者细节就容易遗忘,出错了也不知道是哪里的问题,一个小小的错误可能会纠结很久,但是当你找到出错的问题所在时又感觉十分简单,所以以后的开发学习中不管是什么东西,都尽量的去弄懂,看详细看深入,这样可能刚开始的时候很费时间,但是在以后的使用中可以很快的写出代码,并且出现问题了也能很快的定位,对于这个方面我还需要很多的努力。

  2.曾经在博客园看到这样一篇文章,说一个饭店老板让店里的员工去调查市场上鸡的价格,A员工直接跑了几家市场,调查了鸡的价格,B员工去详细询问了老板为什么要调查鸡的价格,然后不仅去市场调查了鸡的价格,而且去别的饭店调查了鸡的价格,C员工不仅调查了鸡的价格,而且调查了鸭、鱼等其他同类产品的价格,D员工在调查鸡的价格的同时还想到是不是需要一个好的厨师,刚好有一个朋友就是厨师,然后就介绍给了老板,给饭店储备人才,然后上述的四个员工分别得到了60/70/80/90分,因为A员工仅仅完成了任务,B员工在完成任务的同时还知道了为什么要完成这个任务,C、D员工虽然得到80/90分的详细原因我不太记得了,但是总结起来就是超前意识,因为在完成任务的时候不仅知道了为什么要完成这个任务,还要想到与之相关的东西。对于我来说,缺乏的就是这样的一种超前的意识,可能有时候完成一个功能,仅仅是完成了一个功能,或者说有时候知道为什么完成这个功能,但是对于这些功能中的一些内容的封装、复用   以及与之相关功能的扩展做的很不够,可能上面的例子不够恰当,其实主要想说的是对于代码的重构,以后再这方面可能要做的更  多一些,我怎么感觉上面的例子就是废话呢?

  3.第三个方面可能跟第一个有点类似,就是每次研究一些东西基本都是浅尝辄止,例如fancybox、ajaxForm这些,但是也不全是我不愿意去深入研究,我的JQUERY能力还是太弱了一些,很多JS代码根本看不懂,这个东西不是一时半会儿可以补起来的,接下来会找时间来继续学习,另外在研究一些东西的时候也将研究成果形成文字记录下来。

暂时能想到的就这些了,以后再有其他问题再进行总结记录。

时间: 2024-08-29 13:42:07

一次项目部署所引发的思考的相关文章

某项目权限管理系统引发的思考

以下是设计图 (?´?`?) 功能权限和角色功能都有权限信息(以字符形式存储,eg: '123' 或 '2') 权限共有: Add, Delete, Edit, List 等 权限类化(权限项以bool形式存储)后以属性形式存储在页面基类中 然后呢,在实例化页面的时候采用碰撞检测功能权限(即循环功能权限使用角色功能权限去碰撞,最后得出一个共有的,再送去“权限”属性) 接下来的疑问是: 功能以网页形式代表,比如:用户管理 那么,用户编辑,添加,删除怎么控制呢? ~~~~(>_<)~~~~ PS:

【实战】某项目SQL注入引发的思考

数据包: 测试参数:username,测试payload: ' ' or '1'='1 ' or '1'='2 响应结果都未发生任何变化,借助sqlmap测试,结果一样: 尝试在or前面进行简单的fuzz,结果为: 发现' or 1=1 or '1'='1可以直接登录系统,也就是说此处是存在sql注入的,构造payload,借助sqlmap检测 进一步分析,or 1=1 为true,说明后边or '1'='1语句在数据库中执行结果为false,猜测也许在or '1'='1后边还有其它未知的字符,

一次部署HTTPS的相关事件引发的思考

前言: 上周五快要下班的时候,突然收到通知客户希望了解一下部署HTTPS的流程,这种事情谁听了都会有几分诧异的.因为这件事虽然和工作有一定的相关度,但平时不会走这个方向,实际上也较少接触.此外,客户手下应该不缺人,做运维和开发的肯定比我更懂这个,但情况却和我想的不一样. 正文: 客户有需求,就应该尽量满足!因此,尽管之前对Apache.Tomcat的一些配置不熟,也未有过自己部署HTTPS的经验[当然失败的尝试还是有的],便趁着周末了解了一下相关的东西,在本地搭建了环境.实践表明,当你对一个东西

《技术、沟通、协作,引发的思考》

<技术.沟通.协作,引发的思考> 01. 有些朋友私信问我,最近又在忙什么,很少看到我活跃了.其实,我在憋大招!我花了很多心思在项目上, 可以说,这是我工作以来,最重要的时刻,成败在此一举! 02. 我按着倒序来表述,也能谈谈我对于文章主题的思考.接下来的两周时间,我会与我的项目小团队,完美的与"理财运营中心"(我在互联网金融行业)实现功能联调测试.上线以后,整个公司理财营销业务的20%~50%的用户流量将正式走我们所开发的"智能营销体系(这是一个大数据挖掘应用的

由&lt;a href = &quot;#&quot; &gt; 引发的思考

原文:由<a href = "#" > 引发的思考 前阵子在一个移动项目中,通过 <a href = "#" >  的方式 绑定click 事件来提交一个表单,由于表单信息比较敏感,于是采用的post 同步提交的方式,原本到也没有什么.后来万恶的PM说 “你这个按钮呀,要固定在底部比较好” ,于是乎就通过 position:fixed 固定到底部了.那么,问题来了 , 在ios 下,虚拟键盘是浮在页面上层的,导致的结果是当键盘收起后,浮在最底

class_copyIvarList方法获取实例变量问题引发的思考

在runtime.h中,你可以通过其中的class_copyIvarList方法来获取实例变量.具体的实现如下(记得导入头文件<objc/runtime.h>): - (NSArray *)ivarArray:(Class)cls { unsigned int stuIvarCount = 0; Ivar *ivars = class_copyIvarList(cls, &stuIvarCount); if (stuIvarCount == 0) { return nil; } NSM

JDK版本会影响项目部署

最近在公司里面部署javaweb项目的时候,项目启动的时候报错,我使用了各种方法来寻找答案,将近花了很长的时间.就在今天我终于找到了问题的根源,我开始用的是JDK1.8的版本,换了一个1.7版本的JDK,问题迎刃而解了. 用JDK1.8版本的时候启动tomcat会报下面的错误: (1)java.lang.RuntimeException: java.io.IOException: invalid constant type: 15 我也在网上查询了解决的方案(见这篇博客详细介绍:http://b

Linux安装Eclipse及项目部署

安装Eclipse 1. 首先解压Eclipse tar -zxvf eclipse-standard-kepler-SR1-linux-gtk.tar.gz -C user/local/src 2. 重新启动 加载JDK 3. 桌面创建快捷方式 Create Launcher 选择启动文件 切换图标 项目部署 1. 首先打开压缩文件 $ unzip text.zip 2. 然后修改 .sql文件的编码 查看文件编码 file bank.sql 修改文件编码 iconv -f GBK -t UT

Thinkphp5笔记一:项目部署

系统:window 7 64位 Thinkphp版本:5.0.5 环境:wampserver集成 笔记分为两大部分,配置篇与数据库篇 一.虚拟主机部署/本地部署 在网站根目录下建立文件index.php,内容如下 <?php // 定义应用目录 define('APP_PATH', __DIR__ . '/apps/'); // 加载框架引导文件 require './thinkphp/start.php'; 这样基本上就可以了,这是最简单的配置. 二.服务器部署 服务器部署项目文件入口publ