今天在家尝试搭建和公司一样的开发环境(struts1+maven+resin),结果遇到很多的问题,记录下来,如果遇到相似问题,可参考;
我的工程下载地址:http://files.cnblogs.com/files/focusahaha/struts1.rar
maven
maven值得注意的地方其实只有conf文件夹的setting.xml文件,其实不用任何设置就可以使用了。但是也可以通过修改这个文件,手动设置本地maven库的位置,使用镜像(如果使用的是本公司自主搭建的maven库),使用代理(如果用代理上网的话,也要设置下)。
另外如果使用eclipse集成maven,首先需要下载maven安装包(例如:apache-maven-3.2.5-bin.zip),然后下载离线插件eclipse-maven3-plugin.7z,解压后放在eclipse对应位置就可以了。具体可参考网址:http://jingyan.baidu.com/article/60ccbceb01de4d64cbb19756.html,讲解的非常详细。
最后需要在eclipse中对maven进行设置,首先需要指定使用的maven,因为eclipse安装maven插件会产生一个内置的maven,如果在maven->installations选项中进行修改,会导致eclipse中使用maven命令和命令行中使用maven命令结果不一致,第二点需要设定使用的setting.xml文件的路径,最好把setting.xml拷贝到.m2文件夹内,不要使用maven conf文件夹中的setting.xml,因为不这么干,如果要对maven进行更新,还需要再修改一次setting.xml. 具体参考网址:http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033805.html#3120676。
最后提供下maven 中央仓库的网址,因为你很有可能要查找对应jar包的位置 :http://search.maven.org/#search
要搭建maven环境,学习maven
可参考:
1.maven安装以及maven与eclipse集成:http://jingyan.baidu.com/article/60ccbceb01de4d64cbb19756.html
2.maven 配置讲解(其实是maven in action一书的摘抄):http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033805.html#3120676
3.maven jar包位置查找:http://search.maven.org/#search
resin
resin需要修改的文件只有一个.conf文件,不同版本的resin conf文件夹内容不同,我使用的是resin-3.1.12.zip,因为这个版本conf文件夹内有.conf文件的例子。
使用eclipse集成resin,其实只需要修改一个位置<web-app></web-app>,修改后的<web-app>标签内容为:
<web-app id="/" root-directory="D:\workspace\workspace_web\struts1\src\main\webapp"/> 其实也就是要指定对应web应用的根目录。
同时你需要确保,能找到app-default.xml,需要将他的位置改为绝对路径,修改后为:<resin:import path="D:/App/resin-3.1.12/conf/app-default.xml"/>
完整的conf文件如下
<!-- - Alternative to resin.conf, minimal configuration for starting server. - - unix> java -jar lib/resin.conf -server-root /var/www -conf conf/minimal.conf - - Server root is /var/www, documents are in /var/www/docs. --> <resin xmlns="http://caucho.com/ns/resin" xmlns:resin="http://caucho.com/ns/resin/core"> <log name="" level="info" path="stdout:"/> <cluster id=""> <server id=""> <http port="8080"/> </server> <resin:import path="D:/App/resin-3.1.12/conf/app-default.xml"/> <host id="" root-directory="."> <web-app id="/" root-directory="D:\workspace\workspace_web\struts1\src\main\webapp"/> </host> </cluster> </resin>
另外如果想在eclispe中使用resin进行调试,可以在debug configuration中新建一个java application
1.工程一定要选择你的maven工程,main class为com.caucho.server.resin.Resin;
2.program arguments 内写-conf "D:\app\resin-3.1.12\conf\minimal.conf" 指向你修改后的.conf文件;
vm arguments 填 -Djava.util.logging.manager=com.caucho.log.LogManagerImpl
3.classpath内选择add external jars 添加resin lib下的全部jar 以及jdk lib下的tools.jar;user entries内一定要添加你的maven工程;
主要就这些了,可参考http://blog.csdn.net/sz_bdqn/article/details/7488221,我一开始参考这个做的,死活跑不了,只好自己不断尝试。
struts1
struts1其实没啥好讲的,找个例子对着做,不理解的地方自己再琢磨下就行。
我遇到了两个问题
1. Caused by: java.lang.NullPointerException
at org.apache.struts.config.FormBeanConfig.createActionForm(FormBeanConfig.java:289)
我实现的ActionForm类找不到,网上说是form-bean标签中的type写错了,导致找不到,我的不是。我的是因为在debug configuration-》classpath-》user entries中没有把工程添加进去,导致找不到类。另外我发现如果你不编译maven工程直接运行maven程序的话,也会出现这种问题。
2. 我复写的Action进不去,出现空白页面。我明明是继承的org.apache.struts.action.Action类啊,配置也没问题。
后来才发现我复写的方法是
public ActionForward execute(ActionMapping mapping, ActionForm form,ServletRequest request, ServletResponse response) throws Exception
应该复写
public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception
struts1技术可参考(技术点很全,但是代码只有一部分):http://www.ibm.com/developerworks/cn/java/l-struts1-1/
struts入门实例可参考:http://blog.csdn.net/lanpiao_87/article/details/7451784