欢迎大家来到IT世界,在知识的湖畔探索吧!
1 依赖管理-添加依赖
1.1 需求
实现web工程整合struts2框架。
1.2 添加依赖
1.2.1 dependency
在pom.xml中添加dependency标签,如下:
<dependency> <groupId><groupId> <artifactId></artifactId> <version></version> </dependency>
欢迎大家来到IT世界,在知识的湖畔探索吧!
参考入门工程的Junit4.9的依赖在web工程的pom.xml中添加dependency
欢迎大家来到IT世界,在知识的湖畔探索吧!<dependencies> <!-- 添加junit4.9依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> </dependency> </dependencies>
1.2.2 查找坐标
添加依赖需要指定依赖jar包的坐标,但是很多情况我们是不知道jar包的的坐标,可以通过如下方式查询:
方法一:从互联网搜索
http://search.maven.org/
http://mvnrepository.com/
网站搜索示例:
方法二:使用maven插件的索引功能
如果在本地仓库有我们要的jar包,可以在pom.xml中邮件添加依赖
1.3 构建web工程
1.3.1 添加struts2依赖
编写web工程的pom.xml文件,添加依赖,如下:
<!-- 依赖struts2 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.24</version> </dependency>
1.4 依赖范围
1.4.1 基本概念
A依赖B,需要在A的pom.xml文件中添加B的坐标,添加坐标时需要指定依赖范围,依赖范围包括:
compile:编译范围,指A在编译时依赖B,此范围为默认依赖范围。编译范围的依赖会用在编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。
provided:provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用, provided依赖在编译和测试时需要,在运行时不需要,比如:servlet api被tomcat容器提供。
runtime:runtime依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如:jdbc的驱动包。由于运行时需要所以runtime范围的依赖会被打包。
test:test范围依赖 在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用,比如:junit。由于运行时不需要所以test范围依赖不会被打包。
system:system范围依赖与provided类似,但是你必须显式的提供一个对于本地系统中JAR文件的路径,需要指定systemPath磁盘路径,system依赖不推荐使用。
在maven-web工程中测试各各scop。
测试总结:
默认引入 的jar包 ——- compile 【默认范围 可以不写】(编译、测试、运行 都有效 )
servlet-api 、jsp-api ——- provided (编译、测试 有效, 运行时无效 防止和tomcat下jar冲突)
jdbc驱动jar包 —- runtime (测试、运行 有效 )
junit —– test (测试有效)
依赖范围由强到弱的顺序是:compile>provided>runtime>test
1.4.2测试
1、向web工程 添加jsp/servlet依赖
欢迎大家来到IT世界,在知识的湖畔探索吧!<!-- servlet jsp --> <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>
package打war观察jsp-api和servlet-api是否在war中存在?
2、向dao工程 添加jdbc依赖
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> <scope>runtime</scope> </dependency>
package打war观察mysql-connctor-java是否在war中存在?
1.5 完整的pom.xml
根据需求web工程要实现整合struts2,完整的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>cn.itcast.maven</groupId> <artifactId>maven-web-0120</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>web工程,包括jsp、action等</name> <description>web工程,包括jsp、action等</description> <dependencies> <!-- 添加junit4.9依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> <scope>runtime</scope> </dependency> <!-- servlet jsp --> <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> <!-- 依赖struts2 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.24</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> </project>
1.6 action类
编写action,实现查询客户信息:
public class CustomerAction extends ActionSupport { private Long custId; /** * @return the custId */ public Long getCustId() { return custId; } /** * @param custId * the custId to set */ public void setCustId(Long custId) { this.custId = custId; } // 查询客户信息 public String querycustomer() { System.out.println("客户请求客户Id:"+custId); return "success"; } }
1.7 struts.xml
在src/main/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> <!-- 配置常量 --> <!-- 字符集 --> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <!-- 开发模式 --> <constant name="struts.devMode" value="true"></constant> <!-- 主题 --> <constant name="struts.ui.theme" value="simple"></constant> <!-- 扩展名 --> <constant name="struts.action.extension" value="action"></constant> <!-- 通用package --> <package name="customer" namespace="/" extends="struts-default"> <action name="querycustomer" class="cn.itcast.crm.action.CustomerAction" method="querycustomer"> <result name="success">/jsp/querycustomer.jsp</result> </action> </package> </struts>
1.8 web.xml
在web.xml中配置struts2的前端控制器
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <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.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
2 maven工程运行调试
2.1 tomcat插件
maven内置tomcat的插件(org.codehaus.mojo. tomcat-maven-plugin),执行tomcat:run命令即可启动tomcat
访问:http://localhost:8080/工程名/…
可以通过配置plugin修改tomcat的访问路径及端口:
<build> <plugins> <!-- maven内置 的tomcat6插件 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <version>1.1</version> <configuration> <!-- 可以灵活配置工程路径 --> <path>/ssh</path> <!-- 可以灵活配置端口号 --> <port>8080</port> </configuration> </plugin> </plugins> </build>
2.2 端口占用处理
重新执行tomcat:run命令重启工程,重启之前需手动停止 tomcat,否则报下边的错误:
Caused by: java.net.BindException: Address already in use: JVM_Bind
2.3 断点调试
maven工程断点调试必须采用”Debug As”方式启动,并且需要引入源码才可源码跟踪:
引入源码:
添加,选择本工程:
以debug方式运行:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/18418.html