struts2+maven+tomcat配置

如果是原有web工程,右键转换成maven支持就行,然后在pom.xml中添加相应的依赖。

如果新建的话选择maven project,在Filter中输入org.apache.maven.archetypes--选择Artifact Id为maven-archetype-webapp的那条--下一步

在web.xml文件中配置Struts 2的核心Filter

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<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>


	<welcome-file-list>
		<welcome-file>/*.jsp</welcome-file>
	</welcome-file-list>
</web-app>

struts.properties 文件:

这个文件提供了一种更改框架默认行为方式的机制。在一般情况下,如果不是打算让调试更加方便的话,你根本无须更改这个文件。在“struts.properties ”文件中定义的属性都可以在“web.xml”文件的“init-param”标签中进行配置,或者通过“struts.xml ”文件中的“constant”  标签来修改。我们可以更改其中的一些属性来改变Freemarker 的选项——改变Action 映射类,判断是否要重新载入XML配置文件,以及默认的UI主题等等。在Struts2 的wiki 上有这些属性的最新信息,地址为http://struts.apache.org/2.x/docs/strutsproperties.html. 

在Struts2-Core的jar发行版中,有一个默认的属性文件,名为“default.properties”。如果要对属性进行修改的话,只需要在项目的源代码目录下,创建一个叫做“struts.properties ”的文件,然后把想要修改的属性添加到文件中,新的属性就会把默认的覆盖掉了。

在开发环境中,以下几个属性是可能会被修改的:  
»  struts.i18n.reload = true——激活重新载入国际化文件的功能 
»  struts.devMode = true   ——激活开发模式,以提供更全面的调试功能。  
»  struts.configuration .xml.reload = true ——激活重新载入XML配置文件的功能(这是为Action 准备的),当文件被修改以后,就不需要重新载入Servlet 容器中的整个Web 应
用了。 
»  struts.url.http.port = 8080——配置服务器运行的端口号(所有生成的URL 都会被正确创建)  

struts.xml文件一般放于WEB-INF的classes下

<?xml version="1.0" encoding="GBK"?>
<!-- 指定Struts 2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<!-- struts是Struts 2配置文件的根元素 -->
<struts>
	<!-- Struts 2的Action必须放在指定的包空间下定义 -->
	<package name="Struts2Demo" extends="struts-default">
		<!-- 定义login的Action,该Action的实现类为com.traysine.ssstep.Action类 -->
		<action name="Login" class="com.traysine.ssstep.LoginAction">
			<!-- 定义处理结果和资源之间映射关系。 -->
			<result name="error">/error.jsp</result>
			<result name="success">/welcome.jsp</result>
			<result name="input">/login.jsp</result>
		</action>
	</package>
</struts>

如果struts.xml需要放在其他路径,如WEB-INF/conf/下这个时候在web.xml中配置如下

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    <init-param> 
     <param-name>config</param-name> 
     <param-value>struts-default.xml,struts-plugin.xml,/WEB-INF/conf/struts.xml</param-value> <!-- 或是 ../conf/struts.xml -->
    </init-param> 
</filter>

有时候struts.xml文件会随着项目的变大格外的臃肿,这时候可以将它分解成多个文件

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 指定Struts 2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<!-- 下面是Struts 2配置文件的根元素 -->
<struts>
<!-- 通过include元素导入其他配置文件 -->
<include file="struts-part1.xml" />
...
</struts> 


pom.xml文件会自动生成在项目的根目录,在pom里面可以添加依赖包和插件,还可以配置相应路径下面的代码是整合jetty的,仅供参考

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.traysine.ssstep</groupId>
  <artifactId>Struts2Demo</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>Struts2Demo Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
    	<artifactId>struts2-core</artifactId>
    	<groupId>org.apache.struts</groupId>
    	<version>2.3.8</version>
    </dependency>
    <dependency>
    	<artifactId>xwork</artifactId>
    	<groupId>com.opensymphony</groupId>
    	<version>2.1.3</version>
    </dependency>
    <dependency>
    	<artifactId>ognl</artifactId>
    	<groupId>ognl</groupId>
    	<version>3.0.6</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>Struts2Demo</finalName> 
	<directory>target</directory>  
	<sourceDirectory>src/main/java</sourceDirectory>  
	<outputDirectory>src/main/webapp/WEB-INF/classes</outputDirectory>  
	<resources>  
		<resource>  
			<directory>src/main/resources</directory>  
		</resource>  
	</resources>  
    
    
	<defaultGoal>install</defaultGoal>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<version>2.1.1</version>
			<artifactId>maven-war-plugin</artifactId>
		</plugin>
		<plugin>
			<groupId>org.mortbay.jetty</groupId>
			<version>6.1.22</version>
			<artifactId>maven-jetty-plugin</artifactId>
			<configuration>
				<contextPath>/</contextPath>
				<scanIntervalSeconds>3</scanIntervalSeconds>
				<connectors>
					<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
						<port>7002</port>
						<maxIdleTime>60000</maxIdleTime>
					</connector>
				</connectors>
				<scanTargetPatterns>
					<scanTargetPattern>
						<directory>src/main/webapp/WEB-INF</directory>
						<excludes>
							<exclude>**/*.jsp</exclude>
						</excludes>
						<includes>
							<include>**/*.properties</include>
							<include>**/*.xml</include>
						</includes>
					</scanTargetPattern>
				</scanTargetPatterns>
				<stopPort>4000</stopPort><!-- 停止jetty -->
				<stopKey>foo</stopKey>
			</configuration>
		</plugin>
	</plugins>
  </build>
</project>



今天从svn检出了几个同事的工程,就是一个工程依赖很多工程的那种,结果就始终报错

Exception in thread "main" java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.

网上找了半天,说是什么包冲突,网上有说这样的

因为cglib 包和asm包冲突
 
开始用的cglib包是cglib-2.1.3.jar  ,后来换了一个cglib-nodep-2.2.jar才测试通过,不容易,一上午了!!!

但是我用maven管理也没法改这个jar包,后来又试试看看,怎么都是不行

然后删掉本地的repo库,重新从服务器更新maven的依赖库,后来就好了


还有个要点就是在pom.xml中依赖了servletapi的话就不应该在工程中添加依赖tomcat的jar库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值