集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > Java >

成都java软件开发:从零开发一个Java Web项目你需要知道这些

发布者: 成都达内     浏览次数:     发布时间:2018-10-12 10:14:54

成都java软件开发:今天成都达内小编详细的给大家列出了开发一个传统 JavaWeb 项目需要注意的要点,从环境准备开始到三层架构搭建,需要注意的地方全部罗列出来。...

  成都java软件开发:从零开发一个Java Web项目你需要知道这些

  今天成都达内小编详细的给大家列出了开发一个传统 JavaWeb 项目需要注意的要点,从环境准备开始到三层架构搭建,需要注意的地方全部罗列出来。

  第一部分:环境准备

  1.Maven命令创建web骨架

  代码如下

  mvn archetype:create

  -DgroupId=net.rocketa

  -DartifactId=mywebapp

  -DarchetypeArtifactId=maven-archetype-webapp

  注意:web servlet版本(web.xml,3.1),Junit版本指定为4.X(这样Spring好通过注解的方式来运行单元测试)

  2. 注意在IDEA中需要设置好MAVEN工程的Sources/Tests/Resources/Test Resources属性。

  3. 日志依赖

  slf4j:规范和接口

  具体的日志实现有:

  log4j、logback、common-logging

  因此我们一般是使用 slf4j 接口+一种具体的日志实现+slf4j 和这个具体日志实现的依赖整合。

  4. 数据库依赖

  有2个依赖需要注意,一个是驱动,一个是数据库连接池(C3P0,DBCP...)。

  驱动JAR包是运行期需要包含,编译期不需要的。

  5. 持久层框架依赖

  说白了,DAO层的框架依赖:MyBatis or Hibernate or ....

  比如除 MyBatis 本身的依赖需要引入之外,还需要引入 MyBatis 和 Spring 的整合依赖。

  6. Web层依赖

  比如,JSP中使用到的一些JSTL、标签、Ajax访问JSON等,还有需要注意的是,在编译期需要引入servlet-api。

  7. Spring核心依赖

  spring-core、spring-beans、spring-context

  8. Spring和DB之间的整合依赖

  Spring是需要介入DB的管理的,比如它的声明式事务。

  spring-jdbc、spring-tx

  9. Spring对Web的一些整合依赖

  spring-web、spring-webmvc

  10. Spring对Junit的支持依赖

  spring-test

  NOSQL对事务的支持不是很好,它主要追求的是性能、高可用、分布式。

  MySQL等关系型数据库对事务的支持是很成熟的,也是很可靠的落地方案。

  第二部分:DAO层

  NOSQL对事务的支持不是很好,它主要追求的是性能、高可用、分布式。

  MySQL等关系型数据库对事务的支持是很成熟的,也是很可靠的落地方案。

  1. 表

  可以在项目中建立一个SQL文件,便于SQL的管理。

  注意,表的存储引擎(事务的支持:innodb)、自动增长的特性、编码、主键和索引。

  一个良好的习惯是:为所有的表都添加一个创建时间字段,用于记录,方便排查。应该为表名、列名添加注释,方便其他工程师查阅。

  应该注意SQL技巧,比如插入存在唯一约束的表中,如果出现冲突不想报错的话,可以:insert ignore into ....(可以通过返回的影响行数来进行判断)

  2. Dao层实体

  成都java软件开发

  一些业务对象的建立,setter/getter/toString等就不说了,需要特别注意的是,除了表的字段之外,还需要什么属性?这里涉及到一个一对一、一对多,多对多的概念!

  3. Dao层接口和mapper sql

  MyBatis的特点:从SQL(参数+sql)映射到Entity/List(定制 SQL、自由传递参数、结果集自动赋值)

  使用MyBatis的方式:SQL写在XML中,或者注解提供SQL。更加推荐的是XML,因为更加灵活,XML提供的动态拼接功能也是比注解简单的多。

  一个全局的mybatis配置文件+具体的SQL文件+DAO接口:让我们只需要设计接口,关注业务逻辑,解放出来。

  在全局mybatis配置文件中重点注意:是否开启驼峰转换,获取数据库自增主键,列别名替换列名等。

  注意DAO接口和具体的SQL文件之间的对应关系。

  具体SQL写法中,比如#{},等需要引起注意。

  输入参数类型 parameterType,如果是多个基本类型,那么不用给出来。

  即便返回的是 List 对象,我们的 resultType 依然指定的是集合中的对象类型。

  在 Mybatis 的 SQL 文件中是可以通过 OGNL 表达式来对对象中的一些对象类型的属性进行赋值的!

  表名.xxx 或者表名.xxx as yyy 对于 Mybatis而言,会忽略表名.前缀,也会忽略as。

  另外,注意在Dao接口中,如果方法有多个基本类型参数,别忘了通过@Param来进行运行期参数标记!

  总结:Dao层的工作逐渐演变成接口设计和 SQL编写了,这种代码和 SQL 的分离方式,便于我们进行 review,而 Dao 的拼接将在 Service 层完成。

  4. 一些优化配置

  比如,对带包路径的类型进行简化,通过配置扫描包。

  比如,批量扫描SQL文件,通过自动扫描配置文件。

  5. mybatis和spring需要整合

  spring需要接管数据库

  JDBC的一些连接信息,数据库连接池的一些配置信息,就是配置 DataSource 的过程。

  spring和mybatis整合的核心

  SqlSessionFactory 是 MyBatis 的配置核心,把 DataSource 注入,并指明 MyBatis 的全局配置文件位置,typeAliasesPackage 扫描,mapper 文件位置扫描等。

  spring 通过动态代理帮助生成Dao的代理实现类(MapperScannerConfigurer)

  注入SqlSessionFactory

  (通过sqlSessionFactoryBeanName)

  指明 Dao 接口的包路径 basePackage

  总之,配置的一项原则是:约定优于配置!!!

  第三部分:进行Spring Junit单元测试

  当我们进行了一些配置,写了一些 SQL,Dao 接口后,应该要进行 Spring Junit 单元测试,可以通过 IDEA 快速的生成测试用例。(很好用的一个功能,因为 IDEA 可以帮助我们快速在 test 下建立与 dao/service 接口的同级目录下生成用例)

  在用例中,我们只需要在类上打上注解:

  @RunWith(SpringJUnit4ClassRunner.class)

  @ContextConfiguration({"classpath:spring配置文件"})

  加载 Spring 容器后,我们就可以在用例中注入对象,开始测试了!!!

  第四部分:Service层

  Service层需要关注几个要点:

  业务对象的封装

  web和service之间进行数据传递的DTO

  异常的处理(业务异常)

  注意Spring事务回退的默认机制是:运行时异常。

  因此,我们在service层默认定义的业务异常一般 extends RuntimeException。

  一般而言,通过如下代码就能实现

  成都java软件开发:从零开发一个Java Web项目你需要知道这些

  要知道,service 层可能会发生业务异常,也可能发生一些其他异常,为了 Spring 都可以感知到,这里会把 Exception 异常转化成运行时异常。

  第五部分:Controller层

  1. Restful

  一种优雅的URI表述方式;

  资源的状态;

  状态的转移

  Restful示例:

  GET /product/list 查询操作

  GET /product/{productId}/detail

  GET /product/time/now

  POST /product/{productId}/execution 添加、修改操作【非幂等性】

  POST /product/{productId}/{userId}/order

  DELETE /product/{productId}/delete 删除操作

  PUT 修改操作【幂等性】

  URL设计:

  /模块/资源/{标示}/集合1/...

  2.Controller中请求方法的细节处理

  考虑几个方面:请求参数绑定、请求方式限制、转发与重定向、数据模型赋值、JSON数据返回、Cookie访问

  3.整合配置Spring MVC

  在web.xml中配置 DispatcherServlet 拦截请求,并指出 Spring 相关的配置文件。

  开启Spring MVC的注解模式:

  静态资源请求采用默认的servlet配置

  配置JSP、ViewResolver的prefix「如/WEB-INF/jsp」suffix「如.jsp」

  扫描web相关的Controller:

  base-package="">

  成都达内小编今天就教到这里了,内容较多,建议小伙伴先收藏哦。

  如果你也想学Java开发,那么在学习之前,不妨先确定一下自己的职业定位吧。看看自己想进入什么样的企业工作,毕竟有了目标,才有前进的动力,达妹永远是你坚强的后盾。

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:绵阳市涪城区临园路东段68号富临大都会7栋3单元9层12号

联系电话:15023458194

公交路线:富乐路口凯德广场(10路;29路;3路;15路;11路;15a路;71路)

校区地址:成都市锦江区东大街紫东楼段35号明宇金融广场19楼1903室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街紫东段35号明宇广场2306

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市成华区建设路10号万科钻石广场B座5楼

联系电话:15023458194

公交路线:建设路中(6路;14路;42路;72路;76路;1010路;)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56