初学者在maven与struts2上遇到的小坑。

来源:互联网 发布:win10如何安装mysql 编辑:程序博客网 时间:2024/05/21 16:01

初学struts2,于是写了个最简单的demo。我用maven建立struts2项目时遇到了两个小坑(其实是知识漏点)。

先上目录结构

然后详细代码

1.HelloWorldAction

package com.eshore.action;import com.opensymphony.xwork2.ActionSupport;public class HelloWorldAction extends ActionSupport {    @Override    public String execute() throws Exception {        System.out.println("执行Action");        return SUCCESS;    }}

2.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>    <package name="default" namespace="/" extends="struts-default">        <action name="helloworld" class="com.eshore.action.HelloWorldAction">            <result>views/result.jsp</result>        </action>    </package></struts>

3.web.xml

<!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>    <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>index.jsp</welcome-file>    </welcome-file-list></web-app>
4.pom.xml的依赖

<dependencies>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.12</version>            <scope>test</scope>        </dependency>        <!-- 文件上传 -->        <dependency>            <groupId>commons-io</groupId>            <artifactId>commons-io</artifactId>            <version>2.4</version>        </dependency>        <dependency>            <groupId>commons-fileupload</groupId>            <artifactId>commons-fileupload</artifactId>            <version>1.2.2</version>        </dependency>        <!--工具包-->        <dependency>            <groupId>org.apache.commons</groupId>            <artifactId>commons-lang3</artifactId>            <version>3.4</version>        </dependency>        <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->        <dependency>            <groupId>commons-logging</groupId>            <artifactId>commons-logging</artifactId>            <version>1.1.1</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->        <dependency>            <groupId>org.freemarker</groupId>            <artifactId>freemarker</artifactId>            <version>2.3.23</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core -->        <dependency>            <groupId>org.apache.struts</groupId>            <artifactId>struts2-core</artifactId>            <version>2.3.24</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.apache.struts.xwork/xwork-core -->        <dependency>            <groupId>org.apache.struts.xwork</groupId>            <artifactId>xwork-core</artifactId>            <version>2.3.24</version>        </dependency>        <!-- https://mvnrepository.com/artifact/ognl/ognl -->        <dependency>            <groupId>ognl</groupId>            <artifactId>ognl</artifactId>            <version>3.0.6</version>        </dependency>    </dependencies>

下面说说我遇到的问题

1.struts.xml里 struts-default编译器报错(我用的是IntelliJ IDEA)。

解决方法:

左上角FIle --> Project Structure

要同时选中struts.xml和struts-default.xml



2.result路径报错

解决方法:之前我的xml文件在src目录下导致无法识别路径,把它放到resources目录下就可以了。

理解maven的目录结构就不会发生这种问题


3.再来说说package的namespace(命名空间)。

启动Tomcat运行项目,在地址栏输入 http://localhost:8080/struts0910/helloworld.action,正常的话会自动跳转到result.jsp页面

那么命名空间是什么:http://localhost:8080/项目名/命名空间/*.action  

struts2.xml所配置的namespace为"/"就把webapp当作根目录,路径忽略掉就可以,

所以我要输入的地址应该是http://localhost:8080/struts0910/helloworld.action。