首页 > 代码库 > 基于maven搭建的struts 1 java工程

基于maven搭建的struts 1 java工程

今天在家尝试搭建和公司一样的开发环境(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>
View Code

  另外如果想在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

  

基于maven搭建的struts 1 java工程