eclipse中使用maven多模块开发struts2入门项目小案例

项目环境:

  • 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),如下图:
service子模块
在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文件。看下图:
service层架添加对dao层的依赖
在上图的搜索框中只需要搜索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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值