Maven搭建Struts2框架
1:新建Maven Project。
Artifact Id选择web app。
Group Id:项目包名 Artifact Id:模块名 0.0.1-SNAPSHOT:快照 package:包名
创建出来的项目应该是这个样子的。现在报错的意思的,没有添加servelt依赖,我用的是eclipse 4.5,创建的maven项目 默认会报错,等下再解决。先把maven的目录骨架搭建好。
maven的目录结构:
src
-main
-java
-package:自定义的包
-resources
-test
-java
-package
-resources
现在需要做的是新建文件夹,补全上面的目录结构
现在我们来处理index.jsp报错的问题,打开pom.xml。
添加了一个依赖,javax.servlet。报错解决。然后右键 pox.xml-> run as -> Maven build ->输入命令clean compile
可以看到build success。至此 maven web搭建成功。接下来搭建Struts2框架。
http://mvnrepository.com/ maven仓库的网址,我们在这里搜索struts2
把依赖信息(坐标)粘贴到pox.xml中,保存后会自动下载相应jar包
接下来在src/java/resources下创建struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 所有匹配*.action的请求都由struts2处理 --> <constant name="struts.action.extension" value="action" /> <!-- 是否启用开发模式 --> <constant name="struts.devMode" value="true" /> <!-- struts配置文件改动后,是否重新加载 --> <constant name="struts.configuration.xml.reload" value="true" /> <!-- 设置浏览器是否缓存静态内容 --> <constant name="struts.serve.static.browserCache" value="false" /> <!-- 请求参数的编码方式 --> <constant name="struts.i18n.encoding" value="utf-8" /> <!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 --> <constant name="struts.i18n.reload" value="true" /> <!-- 文件上传最大值 --> <constant name="struts.multipart.maxSize" value="104857600" /> <!-- 让struts2支持动态方法调用 --> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <!-- Action名称中是否还是用斜线 --> <constant name="struts.enable.SlashesInActionNames" value="false" /> <!-- 允许标签中使用表达式语法 --> <constant name="struts.tag.altSyntax" value="true" /> <!-- 对于WebLogic,Orion,OC4J此属性应该设置成true --> <constant name="struts.dispatcher.parametersWorkaround" value="false" /> <package name="default" extends="struts-default"> </package> </struts>
在web.xml中添加struts2的核心过滤器
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <!-- Struts2 --> <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>*.action</url-pattern> </filter-mapping> </web-app>
我们可以在struts.xml中配置action,也可以采用convention-plugin的方式,通过注解配置,现在我们用convention-plugin来完成项目的搭建,也需要去maven仓库搜索相应坐标,现在我们的pom.xml的整体如下
<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>MavenProject</groupId> <artifactId>Struts2_Maven</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>Struts2_Maven 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> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <!-- 只在编译时和测试时运行 --> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.16</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-convention-plugin</artifactId> <version>2.3.20</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-config-browser-plugin</artifactId> <version>2.3.20</version> </dependency> </dependencies> <build> <finalName>Struts2_Maven</finalName> </build> </project>
接下来在src/main/java中创建我们的action
package com.zhao.action; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import com.opensymphony.xwork2.ActionSupport; /** * @ParentPackage:用来指定struts.xml中的package * @Action注解将一个普通Java类标识为可以处理用户请求的Action类 * @Namespace是命名空间 * @author zhao * */ @ParentPackage("default") @Action @Namespace("/") public class LoginAction extends ActionSupport { /** * 重写父类的execute()方法 */ @Override public String execute() throws Exception { System.out.println("Struts2_Maven搭建成功"); return SUCCESS; } }
在这里就不具体说明返回的逻辑视图怎么找了,我们直接在web-inf下创建content文件夹,然后创建login.jsp
现在 可以运行了