最近打算在入职前把Struts好好的看一看,虽然在最近这一年多里,对基于SSH这种开发模式有了一些实战经验,但由于之前没有系统学习过,所以对这些框架也是用到哪儿了解到哪儿。尤其是Struts,因为我们采用的的SpringMVC,所以对Struts的了解仅限于看过马士兵和传智播客的教程,没有实际的项目经验,这样最大的问题就在于,你看了之后一段时间不用,就又忘记了,相当于白看。但简历上你又必须得写熟悉SSH,因为不写的话,面试机会就会少很多,没办法,很现实的问题。
说正事,计划先是结合例子把《深入Struts内幕》这本书看看,在了解struts的同时,也学习一下人家是怎么读框架的源码的,掌握这种方式,可以省去很多在网上找现成答案的麻烦。工欲善其事,必先利其器。搭建一个简单的学习环境,这是前提,根据工作中的一些习惯和趋势,我决定使用Maven来构建项目,并使用Jetty作Web服务器,理由是部署和启动方便,而且能和Maven无缝结合。虽然一直在用,但对Maven和Jetty都不太了解,折腾了一个晚上,总算是搭好了一个简单的例子,能够运行,我觉得不错。以后就可以专注于理解struts了,下面把搭建过程总结下来,这样下次忘记了的话,也不用在网上一顿乱找了。
1)使用Maven构建一个WebApp项目
Eclipse中如果装有Maven插件的话,建个Maven项目是很方便的事,但是我想借这个机会了解一下Maven的基本操作,所以决定在命令界面来完成创建的操作。作为开源项目来说,官网上的介绍肯定是最全的,所以我直接上在其官网上找到了相关的使用说明,其地址如下:http://maven.apache.org/index.html ,在那上面我很快找到一篇入门介绍:http://maven.apache.org/guides/getting-started/index.html,基本上这篇内容看完了,即使之前从没用过,也至少可以使用了。
我关注的是如何创建一个WEB应用,通过上面的介绍,命令如下:
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-webapp -DgroupId=com.oupeng.app \
-DartifactId=my-webapp
上面的命令中,archetype:generate 表示创建命令 -D后面接key=value的形式,表示对某个参数进行设置,一般情况下,我们只需要指定groupId和artifactId即可,前者表示项目惟一的组织名,后者表示项目的ID,对于WebApp,需要指定 -DarchetypeArtifactId=maven-archetype-webapp,当然还可以指定一些其它参数,比如version之类的。
执行完上述命令之后,maven会帮我们建立好一个结构完整的项目,主要包括src/main/resources/目录,src/main/webapp/WEB-INF目录等,以及生成一个pom文件,描述了项目的结构,并引入junit依赖,说明Maven认为测试很重要。就这样一个命令,项目帮我们建立好了,这还是比较方便的。
简单解释一下Maven的几个常用的命令,compile:编译项目,package:打包,将项目打成一个war包或者jar包,install:将打包好的文件安装到本地的Maven仓库,clean:删除之前创建的jar包,test:编译并运行测试用例。一般情况下,直接使用install即可,我常用的是mvn install -T 8
2)添加Jetty
因为Jetty可以以插件的形式在maven的Pom文件中配置,非常方便,所以它是不二的Web容器选择,当然生产环境下还是使用Tomcat或者Resin比较好,毕竟功能强大。配置Jetty也很简单,但我配置的时候走了点弯路,最后发现原因是Jetty的新版本和原版本在很多方面有一些差别,所以这个要注意,弄清楚使用的是什么版本,个人建议是显示指定版本号。这样便于控制,代码如下:
<plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.26</version> <!--configuration --> <configuration> <connectors> <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> <port>9090</port> <maxIdleTime>60000</maxIdleTime> </connector> </connectors> <contextPath>/strutsDemo</contextPath> </configuration> </plugin> </plugins>
上面的代码给出了一个比较简单的配置,不过需要注意的是,新版本的Jetty(>=7),artifactId的值是jetty-maven-plugin,而且好像也去掉了org.mortbay.jetty.nio.SelectChannelConnector,用什么代替了,由于我只是想跑通,所以没做进一步的查询,而是指定了7以下的版本。另外还有一个需要注意的地方,就是上面这段代码应该放在<build>节点下,要不然会有问题。
以上两步部署完成后,再使用mvn jetty:run来启动,浏览器中输入localhost:9090/strutsDemo,能看到Hello World!表示配置成功。另外,上面这段代码参考了jetty的官网中的一些说明,http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html。
3)改造为Struts项目
参考struts官网上的一篇文章,http://struts.apache.org/release/2.3.x/docs/create-struts-2-web-application-using-maven-to-manage-artifacts-and-to-build-the-application.html,按上面的说明,很方便的就建立了一个简单的struts Web应用。简单的说需要以下三步:
1. 修改pom.xml文件,加入对struts2.xml的依赖,以及对log4j.xml的依赖,如下:
<!--struts--> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.8</version> </dependency> <!-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
2)修改web.xml文件,添加struts2过滤器,并添加log4j.xml文件到resources目录。如下:
<!-- filter to start the struts --> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3)添加struts.xml文件,配置action,示例如下:
<struts> <constant name="struts.devMode" value="true" /> <package name="basicstruts2" namespace="/firstdemo" extends="struts-default"> <action name="index"> <result>/WEB-INF/index.jsp</result> </action> </package> </struts>
以上,配置完成后,重启服务,浏览器中输入:http://localhost:9090/strutsDemo/firstdemo/index,如果能正常出现Hello World,则配置成功。
总结:这是一次很简单的配置过程,其中一些(struts项目构建)之前已做过好几次,但再次做的时候,还是不知道,又在网上查,我相信这次总结之后,以后不用再查了,除非struts的配置方式有很大的更新。所以虽然花了一个晚上,还是值得的,从明天起,就可以专注于学习struts了。
相关推荐
总的来说,这个"struts2Demo"项目展示了如何利用Struts2处理请求、Maven管理依赖和Jetty快速运行Web应用。这种组合为Java Web开发提供了便捷的工具链,便于开发者快速搭建、测试和部署应用程序。
在现代Java开发中,构建工具、应用服务器、热部署工具以及IDE的集成是提升开发效率的关键因素。...这个环境不仅适用于Struts2框架,也适用于其他基于Maven构建的Java Web项目,是一个通用的开发环境搭建方案。
标题 "maven3 + jetty 新建webapp" 涉及到的是使用Apache Maven 3构建工具和Jetty轻量级应用服务器来创建一个新的Web应用程序的过程。在Java开发领域,Maven是广泛使用的项目管理和集成工具,它帮助管理项目的构建、...
### 使用Maven和Jetty开发调试WEB应用程序 #### 前言 在现代软件开发过程中,集成工具如Maven和Jetty极大地提高了开发效率。Maven作为自动化构建工具,能够帮助开发者快速创建、管理和构建项目;而Jetty则是一款轻...
【使用Maven搭建S2SH工程详解一:...这个过程涵盖了Maven的项目管理、Struts2的请求处理、Jetty的本地开发服务器使用,以及Web应用的基础配置。通过这种方式,我们可以快速地启动一个S2SH项目,并进行后续的开发工作。
项目的安装部署"中,我们将深入探讨如何在Java环境下使用SSH(Struts2、Spring、Hibernate)框架、Maven构建工具以及Bootstrap前端框架来搭建并部署一个完整的Web项目。这个教程面向的是有一定Java基础,希望进一步...
在Eclipse JEE环境下,创建一个Maven项目并将其转换为Dynamic Web Project是开发Java Web应用程序的常见步骤。Maven是一种强大的项目管理工具,而Dynamic Web Project则是Eclipse中的一个特殊项目类型,专用于Web...
标题 "Felix+Struts2做的web示例" 暗示了这是一个使用Apache Felix作为OSGi容器,并结合Struts2框架构建的Web应用程序。Apache Felix是一个开源的OSGi实现,它允许开发者将应用程序分解为模块化组件,使得代码更易于...
Maven是一个项目管理和综合工具,它帮助开发者管理项目的构建、报告和文档,而Struts2则是一个基于MVC设计模式的Java Web框架,用于简化开发过程。下面将详细讨论如何在Maven项目中整合Struts2框架,并实现正常的JSP...
通过以上步骤,开发者可以构建出一个完整的、基于J2EE的Web应用程序,它集成了强大的开发工具、高效的MVC框架、强大的ORM解决方案以及全面的企业级服务。这样的实践案例对于提升开发者在J2EE领域的专业技能至关重要...
【基于Struts2+Hibernate+Spring的公司员工管理系统】是一个典型的Java企业级应用程序,它利用了Struts2、Hibernate和Spring这三大主流框架构建。这个系统设计的主要目标是为了有效地管理和组织公司的员工信息,提高...
【基于Struts的网上审批系统】是一个典型的Java Web应用程序,主要使用了Struts框架来实现。Struts是Apache软件基金会的Jakarta项目中的一个核心框架,它为构建基于J2EE平台的、易于维护的、模块化的Web应用程序提供...
Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它允许开发者将Web服务器功能直接集成到他们的Java应用程序中。这种内嵌式部署模式在开发和调试阶段尤其有用,因为它提供了灵活的控制和快速的反馈循环。...
本项目“Struts2应用的BBS项目”是一个基于Struts2框架的基础论坛(BBS)实现,非常适合初学者了解和学习Struts2的基本概念和用法。 在Struts2中,核心组件包括Action、Result和Interceptor(拦截器)。Action是...
Java论坛系统源码是基于三大...综上所述,这个Java论坛系统源码是一份宝贵的教育资源,它不仅展现了Struts 2、Hibernate和Spring的集成使用,还提供了实践这些技术的实例,有助于加深对Java Web开发的理解和技能提升。
Struts是一个开源的Java web框架,它遵循MVC设计模式,用于简化企业级应用的开发。在本项目中,Struts负责控制应用程序的流程,处理HTTP请求,调度到相应的业务逻辑,然后将结果返回给用户。它的核心组件包括Action...
在深入理解这三个技术的基础上,你还需要掌握Web服务器的配置、Maven或Gradle构建工具的使用、以及可能涉及的前端技术如JSP、HTML、CSS和JavaScript。通过实践这个项目,你可以提升在企业级应用开发中的技能,包括...
【标题】:“Hibernate+Struts2 项目源码”是一个基于流行Java开发框架的实践项目,旨在教授如何结合使用Hibernate对象关系映射框架与Struts2 MVC(模型-视图-控制器)框架来构建Web应用程序。 【描述】:这个项目...