1 依赖管理-添加依赖
1.1 需求
实现web工程整合struts2框架。
1.2 添加依赖
1.2.1 dependency
在pom.xml中添加dependency标签,如下:
参考入门工程的Junit4.9的依赖在web工程的pom.xml中添加dependency
junitjunit4.9
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文件,添加依赖,如下:
org.apache.strutsstruts2-core2.3.24
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依赖
javax.servletservlet-api2.5providedjavax.servletjsp-api2.0provided
package打war观察jsp-api和servlet-api是否在war中存在?
2、向dao工程 添加jdbc依赖
mysqlmysql-connector-java5.1.6runtime
package打war观察mysql-connctor-java是否在war中存在?
1.5 完整的pom.xml
根据需求web工程要实现整合struts2,完整的pom.xml如下:
4.0.0cn.itcast.mavenmaven-web-01200.0.1-SNAPSHOTwarweb工程,包括jsp、action等web工程,包括jsp、action等junitjunit4.9mysqlmysql-connector-java5.1.6runtimejavax.servletservlet-api2.5providedjavax.servletjsp-api2.0providedorg.apache.strutsstruts2-core2.3.24org.apache.maven.pluginsmaven-compiler-plugin1.71.7UTF-8
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"?>/jsp/querycustomer.jsp
1.8 web.xml
在web.xml中配置struts2的前端控制器
<?xml version="1.0" encoding="UTF-8"?>struts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2/*index.htmlindex.htmindex.jspdefault.htmldefault.htmdefault.jsp
2 maven工程运行调试
2.1 tomcat插件
maven内置tomcat的插件(org.codehaus.mojo. tomcat-maven-plugin),执行tomcat:run命令即可启动tomcat
访问:http://localhost:8080/工程名/...
可以通过配置plugin修改tomcat的访问路径及端口:
org.codehaus.mojotomcat-maven-plugin1.1/ssh8080
2.2 端口占用处理
重新执行tomcat:run命令重启工程,重启之前需手动停止 tomcat,否则报下边的错误:
Caused by: java.net.BindException: Address already in use: JVM_Bind
2.3 断点调试
maven工程断点调试必须采用"Debug As"方式启动,并且需要引入源码才可源码跟踪:
引入源码:
添加,选择本工程:
以debug方式运行: