Java web项目
前言
本文目标:使用eclipse为IDE环境搭建一个基于maven的web项目,讲解搭建过程,项目结构,程序运行、调试和测试过程,并使用maven作为持续集成工具。
面向对象:转型java的.net开发人员
知识点:eclipse,maven,jfinal,jetty,tomcat,junit
环境准备
Maven
- 安装maven-3.3.9, 建议3.0+版本
- 检查安装版本,命令行输入: mvn -version
Tomcat
- 下载tomcat-v7,解压到本地。
Eclipse
- 安装eclipse-neon版本。请确保安装了图示中的插件。
- 配置maven
- 配置server
创建项目
使用eclipse创建基于maven的web项目
略
使用maven在命令行创建web项目
- 创建web项目:
- 执行命令: mvn archetype:generate,控制台显示如下消息后将无反应(原因:mvn尝试列出服务器所有的项目模板,类型太多且访问maven仓库太慢导致,为什么太慢?你懂的,防火长城)
- 添加参数使mvn只列出本机的模板:-DarchetypeCatalog=internal
- 模板还是很多,建议增加参数,例如要创建web项目,可用参数 -Dfilter=web
- 确定了模板类型后,可直接在参数指定模板:-DarchetypeArtifactId=maven-archetype-webapp
- mvn默认使用交互模式,可参数指定为非交互模式:-DinteractiveMode=false
- 创建网站项目(包名com.demo,项目名websample)的完整命令:mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=com.demo -DartifactId=websample -DinteractiveMode=false -DarchetypeCatalog=internal
- 查看编译、测试、打包效果,命令: mvn compile test package
- 生成eclipse项目的相关文件(.project,.classpath),
- 进入项目目录,命令:cd websample
- 执行命令:mvn eclipse:eclipse
- 其他
- 网上案例大多没有没有设置参数 -DarcheypeCatalog,由于国情原因,基本都卡在了 a)。
- 即使指定了模板也要设置 -DarchetypeCatalog参数,否则还是卡在a)。
eclipse中打开项目
eclipse中导入maven项目
maven生成项目文件后导入
- 生成eclipse项目的相关文件(.project,.classpath),
- 进入项目目录,命令:cd websample
- 执行命令:mvn eclipse:eclipse
- eclipse中导入
- 编译错误处理, Makers窗口提示错误
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
解决方法:
- Right Click on Project
- Select Properties
- Select Project Facets
- Select Apache Tomcat as Runtime server
- Click OK
注意事项
- 导入项目(java世界叫构件)名称不能和工作区中已有构件同名。(pom.xml中的artifactId节点值)
源码开发
参考JFinal手册添加MVC结构的源码。
- 修改项目编译输出目录到src/main/webapp/WEB-INF/classes(maven默认是target/classes)
- 修改pom.xml文件,添加依赖。
- 修改web.xml文件,指定过滤器。
- 添加java文件
- 创建java文件夹(maven结构中源码位置为src/main/java)。
- 添加配置文件,DemoConfig.java文件,继承JFinalConfig。
- 添加控制器文件,HelloController.java文件。
运行调试
JFinal手册中有2种运行方式
- App运行【Java Application】
- 该方式依赖jetty,一种轻量级、嵌入式的servle容器。
- 部署到server运行【Run on Server】
- 建议直接使用tomcat目录配置,注意修改端口不要被占用导致无法启动
JFinal测试扩展jfinal-ext
- 该扩展不支持jfinal-2.1+,该版本重构中修改了logger类,其他不兼容未知。
- 开源软件的升级兼容性很差
使用junit编写单元测试
Junit3 vs Junit4
- maven模板创建项目中默认依赖junit3
- eclipse默认的单元测试插件使用junit4
- Junit3.8对测试代码的要求
- public的。
- void的。
- 无方法参数。
- 方法名称必须以test开头
- 两者使用上区别很大,v4采用了更简洁Annotation特性(java5)简化测试代码
添加测试代码
Junit3测试代码
import junit.framework.TestCase;
import static org.junit.Assert.*;
public class AddOperationTest extends TestCase{
public void setUp() throws Exception {
}
public void tearDown() throws Exception {
}
public void testAdd() {assertEquals(expResult, result);}
}
Junit4测试代码
import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class AddOperationTest extends TestCase{
@before
public void setUp() throws Exception {}
@after
public void tearDown() throws Exception {}
@test
public void testAdd() {assertEquals(expResult, result);}
}
maven中的单元测试,
- 命令: mvn test
eclipse中的单元测试
- 上述步骤中修改了Java Build Path的默认输出文件夹为src/main/webapp/WEB-INF/classes,此处需要对test源码目录做修改,使其输出到target/test-classes,保持和maven中一致
- 新建配置文件
- 修改classpath,否则运行单元测试时会提示:Eclipse - java.lang.ClassNotFoundException
- Open your run configurations
- Click on the jUnit-Test you want to start
- go to the classpath tab
- Try to add a folder (click on user entries, click on advanced, click on add folders, click on ok and search the outputfolder for your test classes(those you find under projektproperties java build path, source))
web程序打包
- 命令:
mvn package - 上述命令将target/目录下输出websample.war及websample文件夹。
- websample.war包含了项目所需的所有文件
持续集成
持续集成实践
- 只维护一个源码仓库
- 自动化构建
- 让构建自行测试
- 每人每天向主干提交代码
- 每次提交都应在持续集成机器上构建主干
- 保持快速的构建
- 在模拟生产环境中测试
- 让每个人都能轻易获得最新的可执行文件
- 每个人都能看到进度
- 自动化部署
扩展阅读
maven与eclipse的关系
参考资料
- Creating Simple Web Application Using Apache Maven
- 如何用Maven创建web项目(具体步骤)
- 将 Maven生成的java项目转化为支持 Eclipse IDE的项目
- 在 Eclipse 中利用 Maven
- 基于Maven的持续集成实践
- JUnit4 详解
Java web项目的更多相关文章
- JAVA WEB项目中各种路径的获取
JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报 分类: JAVA开发(41) 1.可以在s ...
- 怎么将java web 项目导入idea 中
1.将 java web 项目导 入idea 中, 显示 然后进行 Configure 配置. 2. 点击 open module settings. 3. 4. 选择jar包. 5. 6. 配置to ...
- 在cmd命令行使用Maven Archetype插件 generate命令创建简单的java web项目
前提: 1.下载apache-maven:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache ...
- Java Web项目报错java.lang.NullPointerException at org.apache.jsp.front.index_jsp._jspInit(index_jsp.java:30)
环境:myeclipse+tomcat6+jdk6 今天搭建了一个Java Web项目,访问index.jsp时报如下错误: 严重: Servlet.service() for servlet jsp ...
- 使用Spring Boot来加速Java web项目的开发
我想,现在企业级的Java web项目应该或多或少都会使用到Spring框架的. 回首我们以前使用Spring框架的时候,我们需要首先在(如果你使用Maven的话)pom文件中增加对相关的的依赖(使用 ...
- Linux(Centos)之安装tomcat并且部署Java Web项目
1.准备工作 a.下载tomcat linux的包,地址:http://tomcat.apache.org/download-80.cgi,我们下载的版本是8.0,下载方式如图: b ...
- 阿里云部署Java web项目初体验(转)
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在 ...
- 【转】Java Web 项目获取运行时路径 classpath
Java Web 项目获取运行时路径 classpath 假设资源文件放在maven工程的 src/main/resources 资源文件夹下,源码文件放在 src/main/java/下, 那么ja ...
- 使用Maven构建Java Web项目时,关于jsp中引入js、css文件路径问题。
今天有点闲,自己动手搭建一个Java Web项目,遇到jsp中引入js.css文件时路径不正确的问题,于是在网上查阅了很多资料,最终都无法解决问题,于是,上stackoverflow找到了解决方法,这 ...
- idea 中利用maven创建java web 项目
转自:http://www.linuxidc.com/Linux/2014-04/99687.htm 本文主要使用图解介绍了使用IntelliJ IDEA 12创建Maven管理的Java Web项目 ...
随机推荐
- 解决使用Touch ID API在回调时界面“长时间卡住”的问题
Touch ID是iOS8上新公开的API,关于详细介绍和用法可以看CocoaChina的这两篇文章:上 和 下,在此篇文章中不再赘述. 我在app中需要的效果是如果touch id验证通过,则页面p ...
- Tomcat 官网知识总结篇
Tomcat 官网知识总结一.Tomcat 基本介绍 1.关键目录 a) bin 该目录包含了启动.停止和启动其他的脚本,如startup.sh.shutdown.sh等; b) conf 配置文件和 ...
- TransactionScrope
测这个东西其实是由生产环境数据库报错,ORA-14450错误. 测试结果是: 1)使用transactionscrope时,数据库连接打开需在scrope内打开: 2)TransactionScope ...
- oracle 语句汇总
Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象 一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1 ...
- 解决iOS9苹果将原http协议改成了https协议问题
解决方法: 在info.plist 加入key <key>NSAppTransportSecurity</key> <dict> <key>NSAllo ...
- 如何循序渐进有效学习 JavaScript?
著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:宋学彦链接:http://www.zhihu.com/question/19713563/answer/23068003来源: ...
- C# 加密可逆
现在一直在做一个小软件,公司的通讯录系统,也没什么功能增删改查,这算是我来这个公司实习的第一件事吧. 在修改个人信息的时候一直对于密码显示这个存在矛盾,不知道应该是要哪种形式去做,后来自己就先用md5 ...
- 秒(s) 毫秒(ms) 微秒(μs) 纳秒(ns) 皮秒(ps)及Java获得 .
Date date=new Date(); long hm=date.getTime(); //获取毫秒 或者 毫秒级:System.currentTimeMillis() 纳秒级: System.n ...
- MySQL行级锁、表级锁、页级锁详细介绍
原文链接:http://www.jb51.net/article/50047.htm 页级:引擎 BDB.表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行行级:引擎 INNODB , ...
- python 连接操作数据库(二)
一.我们接着上期的博客继续对ORM框架进行补充,顺便把paramiko模块也给大家讲解一下: 1.ORM框架: 在连接操作数据库的第一个博客中也已经说了,sqlalchemy是一个ORM框架,总结就是 ...