项目环境:
- tomcat8.5
- jdk1.8
- maven3.6
- eclipse4.9
- struts2 2.5
本文默认你已经修改了创建maven项目后的jdk版本,如果不知道如何修改可以看修改maven项目的默认jdk版本这篇文章。
创建父项目
file->new -> other -> maven project,在第一个页面我们把create a simple project勾上(去除骨架,避免创建的目录不全),然后来到下面的页面,至于group id和artifact id你可以自己写,只是packaging那里需要选择pom。
创建了父maven项目后。剩下的就是创建子模块,这里是将service层、dao层、web层分别当做一个模块来进行开发。先来创建service层。
创建service子模块
选中之前创建的parent项目,然后new->other->maven module(这里要注意的是创建父项目的时候我们用的是maven project),如下图:
在parent project这里已经帮我们选中了之前创建的parent,如果没有那么就需要自己通过右侧的browse来选择我们创建的父项目,填写好module name之后点击next,在下一个页面没有需要改变的,可以直接finish。
此时在父项目的pom.xml中可以看到多了以下的代码:这里的sonservice是我们创建service模块时取得模块名。
<modules>
<module>sonservice</module>
</modules>
而我们创建的sonservice子模块的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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>top.twolovelypig</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>sonservice</artifactId>
</project>
可以看到有一个parent标签。
可以使用同样的方式将dao子模块(本案例中取得模块名是sondao)与web子模块(sonweb)都创建出来。
依赖的配置
首先在父项目中加上struts2的jar包的配置,可以看父项目的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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>top.twolovelypig</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>sondao</module>
<module>sonservice</module>
<module>sonweb</module>
</modules>
<dependencies>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
</project>
只有最后那个依赖是我们需要配置的。
编写service层内容
这里只是一个简单的案例,所以service层只是写了一个方法,先看一下项目的目录结构:
可以看到dao层和service层都是写了一个接口和实现类。
dao层接口代码
package top.twolovelypig;
public interface IQueryNameDao {
public String queryName();
}
dao层实现类代码
package top.twolovelypig.impl;
import top.twolovelypig.IQueryNameDao;
public class QueryNameDao implements IQueryNameDao {
@Override
public String queryName() {
return "张三";
}
}
service层接口代码:
package top.twolovelypig;
public interface IQueryNameService {
public String queryName();
}
service层实现类代码:
package top.twolovelypig.impl;
import top.twolovelypig.IQueryNameService;
public class QueryNameService implements IQueryNameService {
//写到这里会报错,先往后看
private QueryNameDao queryNameDao = new QueryNameDao();
@Override
public String queryName() {
return queryNameDao.queryName();
}
}
当你写到service层因为要用到dao层的对象并调用其方法,但是他们不是在同一个模块中,所有会报错,此时在service层需要添加对dao层的依赖,配置方法是打开sonservice模块的pom.xml文件。看下图:
在上图的搜索框中只需要搜索sondao就可以看到下方出现的jar包,我们将其选中添加进来即可。
web层代码
package top.twolovelypig;
import com.opensymphony.xwork2.ActionSupport;
import top.twolovelypig.impl.QueryNameService;
public class QueryNameAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private QueryNameService objQueryNameService = new QueryNameService();
public String execute() throws Exception{
String strName = objQueryNameService.queryName();
System.out.println(strName);
return SUCCESS;
}
}
同样的web层也是依赖了service层,我们用同样的方法将对service层的依赖添加进来即可。
还有就是在sonweb的src/main/resource目录下建立struts.xml配置文件。
所有代码
sonwen模块中的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>sonweb</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
sonwen模块中的struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.action.extension" value="do" />
<package name="hello" extends="struts-default">
<action name="queryName" class="top.twolovelypig.QueryNameAction" method="execute">
<result name="success">index.jsp</result>
</action>
</package>
</struts>
sonwen模块中的pomxml
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>top.twolovelypig</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>sonweb</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>top.twolovelypig</groupId>
<artifactId>sonservice</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
parent父项目的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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>top.twolovelypig</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>sondao</module>
<module>sonservice</module>
<module>sonweb</module>
</modules>
<dependencies>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
</project>
sonservice模块的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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>top.twolovelypig</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>sonservice</artifactId>
<dependencies>
<dependency>
<groupId>top.twolovelypig</groupId>
<artifactId>sondao</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
sondao模块的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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>top.twolovelypig</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>sondao</artifactId>
</project>
最后就是将项目部署到tomcat环境中启动项目访问如下地址即可:
http://localhost:8080/sonweb/queryName.do