2022年Recruitment项目搭建与开发指南_V_ .pdf

上传人:Che****ry 文档编号:34883802 上传时间:2022-08-19 格式:PDF 页数:20 大小:1.14MB
返回 下载 相关 举报
2022年Recruitment项目搭建与开发指南_V_ .pdf_第1页
第1页 / 共20页
2022年Recruitment项目搭建与开发指南_V_ .pdf_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《2022年Recruitment项目搭建与开发指南_V_ .pdf》由会员分享,可在线阅读,更多相关《2022年Recruitment项目搭建与开发指南_V_ .pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Recruitment项目搭建与开发指南名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 20 页 - - - - - - - - - HP Restricted Page 2 of 20 ? Copyright 2009 Hewlett-Packard Development Company, L.P Valid agreement required. Document Revision History Ver. No. Ver. Date Prepared By Aff

2、ected Section & Summary of Change 1.0 2011-07-08 EricLiu() Draft of new document structure & content. 2.0 2011-08-30 Eric/Amy/Rita Revise/add 4th chapter content Note: Template revision history is available below as hidden text. Template Revision Historyh Ver. No. Ver. Date Prepared By Reviewed By A

3、pproved By Affected Section & Summary of Change 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 20 页 - - - - - - - - - HP Restricted Page 3 of 20 ? Copyright 2009 Hewlett-Packard Development Company, L.P Valid agreement required. Table of Contents 1总述 . 41.1介绍 .

4、 41.2结构 . 41.3参考文档 . 41.4软件包 . 42搭建开发环境. 52.1Recruitment项目 . 52.2Windows环境下工具安装. 52.2.1开发工具 . 52.2.2数据库工具. 52.2.3部署工具 . 63开发调试 . 63.1.1导入 Eclipse 项目 . 63.1.2Tomcat 调试设置 . 73.1.3项目部署 . 74初探 SpringSide Framework . 74.1Architect Convention . 74.2CRUD . 74.3API doc . 84.4核心类图 . 84.5数据库分页开发. 124.6Struts

5、convention插件实践 . 134.7单元测试实践. 174.8Checkstyle查检代码 . 184.9Sonar 平台使用 . 19名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 20 页 - - - - - - - - - HP Restricted Page 4 of 20 ? Copyright 2009 Hewlett-Packard Development Company, L.P Valid agreement required. 1总述这个 Pr

6、oject 完全基于开源软体springside3.3.4(http:/)的环境搭建。开发涉及到的技术有 Spring 3 + Hibernate 3 + Struts 2.1 + JSP 2.0 + JQuery + JAX-WS2 (by Apache CXF) + JAX-RS(by Jersey)+ SpringSecurity 3.0。“SpringSide是以Spring Framework为核心,用主流的技术选型、Pragmatic的编程实践来开发JavaEE企业级应用的总结与演示。”摘自springside首页。Recruitment系统是一个Maven2 风格的 Projec

7、t。1.1 介绍本文档为Recruitment(暂定 )系统 开发人员搭建开发环境与开发参考所用。1.2 结构本文档章节结构如下。2th chapter 开发环境搭建3th chapter 开发调试4th chapter Framework介绍1.3 参考文档SpringSide官方网站: http:/在 Eclipse 中调试 Maven 项目: http:/ 简介:http:/ SpringSide3 开发 Web 项目的全过程:http:/ 软件包第三方软件地址Eclipse3.5+(junit4.0) 无Eclipse svn plugin 无Ant1.8.1 $recuritment

8、toolsantapache-ant-1.8.1 Maven3.0.3 $recuritmenttoolsmavenapache-maven-3.0.3 Mysql jdbc:mysql:/ 16.173.244.228/interview_system?useUnicode=true&characterEncoding=utf-8 项目 Recruitment SVN svn:/16.173.244.228/svndata/interview_system/03.Code Sonar( 代码质量管理平台) http:/16.173.244.228:9000 单元测试报告http:/16.17

9、3.244.228:8080/recruitment/report/html/index.html Redmine( 项目管理工具*论坛 *)http:/16.173.244.228:3000/projects/recruitment Nexus( 管理 maven 仓库的 server) http:/16.173.244.228:8080/nexus 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 20 页 - - - - - - - - - HP Restricted

10、 Page 5 of 20 ? Copyright 2009 Hewlett-Packard Development Company, L.P Valid agreement required. Psp/tsp 无Recuritment系统 (Our project) http:/16.173.244.228:8080/recruitment2搭建开发环境2.1 Recruitment项目项目的 SVN 地址: svn:/16.173.244.228/svndata/interview_system/03.Code Run recruitment_start.bat脚本:脚本会通过maven

11、从 nexus server 上http:/16.173.244.228:8080/nexus/content/groups/public下载第三方依赖到本机,目录在用户名 .m22.2 Windows环境下工具安装2.2.1 开发工具JDK1.6( 设置 JAVA_HOME) Eclipse3.5及以上版本,需要安装SVN 插件。Recruitment项目 tools 目录自带了Ant 以及 Maven(2.2/3.0) oAnt( 设置 Path) 一些 bat 档利用 Ant 做些 Task :初始化数据库、项目部署tomcat7.0 oMaven( 设置 Path) 利用此工具做lib

12、rary 管理、项目生命周期管理。2.2.2 数据库工具开发环境及正式环境均选用mysql 数据库。jdbc.driver=com.mysql.jdbc.Driver jdbc.url= jdbc :mysql:/localhost/interview_system?useUnicode=true&characterEncoding=utf-8 jdbc.username=root jdbc.password=root 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 20

13、 页 - - - - - - - - - HP Restricted Page 6 of 20 ? Copyright 2009 Hewlett-Packard Development Company, L.P Valid agreement required. hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect Mysql 脚本位置:2.2.3 部署工具recuritment开发环境选用的部署工具是tomcat7或 tomcat6 。3开发调试3.1.1 导入 Eclipse项目从 SVN server checkout 代

14、码到 eclipse 的 workspace :1) 设置 classpath variables 为了保证recruitment项目编译成功,需要设置classpath variables:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 20 页 - - - - - - - - - HP Restricted Page 7 of 20 ? Copyright 2009 Hewlett-Packard Development Company, L.P Valid agre

15、ement required. Set M2_REPO Classpath var,它的值是Maven 默认仓库目录(vista 系统用户名.m2repository)。2) Mysql驱动设置将 C:Userstaliu.m2repositorymysqlmysql-connector-java5.1.15 mysql-connector-java-5.1.15放到 tomcat的 lib 目录下。3.1.2 Tomcat调试设置请参考 http:/m2eclipse.sonatype.org/3.1.3 项目部署正式环境部署:请参照build.xml与 linux.deploy.readm

16、e.txt 文件。4初探 SpringSide Framework 4.1 Architect Convention 请参考 http:/ CRUD 请参考http:/ - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 20 页 - - - - - - - - - HP Restricted Page 8 of 20 ? Copyright 2009 Hewlett-Packard Development Company, L.P Valid agreement required. 4.

17、3 API doc 官网未提供,可以参考源码。1) 在 springside-3.3.4modulescoresrc 下2) maven 仓库有打包好的如下图 springside3-core-3.3.4-sources.jar 透过 javadoc.exe生成了 SpringSide3.3.4_API_DOC.zip 文档,可以参考。4.4 核心类图1.public class SimpleHibernateDao extends java.lang.Object 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理

18、- - - - - - - 第 8 页,共 20 页 - - - - - - - - - HP Restricted Page 9 of 20 ? Copyright 2009 Hewlett-Packard Development Company, L.P Valid agreement required. 封装 Hibernate 原生 API 的 DAO 泛型基类 . 可在 Service层直接使用 , 也可以扩展泛型 DAO 子类使用 , 见两个构造函数的注释 . 参考 Spring2.5自带的Petlinc例子, 取消了 HibernateTemplate, 直接使用 Hiberna

19、te原生 API. Author:calvin Constructor SummarySimpleHibernateDao()用于 Dao 层子类使用的构造函数.SimpleHibernateDao(org.hibernate.SessionFactory sessionFactory, java.lang.Class entityClass)用于用于省略Dao 层, 在 Service 层直接使用通用SimpleHibernateDao 的构造函数 .Method Summary intbatchExecute(java.lang.String hql, java.util.Map valu

20、es)执行 HQL 进行批量修改/删除操作 . intbatchExecute(java.lang.String hql, java.lang.Object. values)执行 HQL 进行批量修改/删除操作 . org.hibernate.CriteriacreateCriteria(org.hibernate.criterion.Criterion. criterions)根据 Criterion 条件创建Criteria . org.hibernate.QuerycreateQuery(java.lang.String queryString, java.util.Map values

21、)根据查询HQL 与参数列表创建Query 对象 . org.hibernate.QuerycreateQuery(java.lang.String queryString, java.lang.Object. values)根据查询HQL 与参数列表创建Query 对象 . voiddelete( PK id)按 id 删除对象 . voiddelete( T entity)删除对象 . org.hibernate.Criteriadistinct(org.hibernate.Criteria criteria)为 Criteria 添加 distinct transformer . org

22、.hibernate.Querydistinct(org.hibernate.Query query)为 Query 添加 distinct transformer. java.util.List find(org.hibernate.criterion.Criterion. criterions)按 Criteria 查询对象列表. java.util.Listfind(java.lang.String hql, 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 20 页

23、 - - - - - - - - - HP Restricted Page 10 of 20 ? Copyright 2009 Hewlett-Packard Development Company, L.P Valid agreement required. java.util.Map values)按 HQL 查询对象列表. java.util.Listfind(java.lang.String hql, java.lang.Object. values)按 HQL 查询对象列表. java.util.List findBy(java.lang.String propertyName, j

24、ava.lang.Object value)按属性查找对象列表, 匹配方式为相等.T findUnique(org.hibernate.criterion.Criterion. criterions)按 Criteria 查询唯一对象. XfindUnique(java.lang.String hql, java.util.Map values)按 HQL 查询唯一对象. XfindUnique(java.lang.String hql, java.lang.Object. values)按 HQL 查询唯一对象.T findUniqueBy(java.lang.String property

25、Name, java.lang.Object value)按属性查找唯一对象, 匹配方式为相等. voidflush() Flush当前 Session. java.util.List get (java.util.Collection ids)按 id 列表获取对象列表.T get ( PK id)按 id 获取对象 . java.util.List getAll()获取全部对象. java.util.List getAll(java.lang.String orderByProperty, boolean isAsc)获取全部对象, 支持按属性行序. java.lang.Stringget

26、IdName()取得对象的主键名. org.hibernate.SessiongetSession()取得当前Session. org.hibernate.SessionFactorygetSessionFactory()取得 sessionFactory. voidinitProxyObject(java.lang.Object proxy)初始化对象 . booleanisPropertyUnique(java.lang.String propertyName, java.lang.Object newValue, java.lang.Object oldValue)判断对象的属性值在数据

27、库内是否唯一. voidsave ( T entity)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 20 页 - - - - - - - - - HP Restricted Page 11 of 20 ? Copyright 2009 Hewlett-Packard Development Company, L.P Valid agreement required. 保存新增或修改的对象. voidsetSessionFactory(org.hibernate.Se

28、ssionFactory sessionFactory)采用 Autowired 按类型注入SessionFactory, 当有多个SesionFactory 的时候在子类重载本函数.2.public class HibernateDao extends SimpleHibernateDao 封装 SpringSide扩展功能的 Hibernat DAO 泛型基类 . 扩展功能包括分页查询,按属性过滤条件列表查询. 可在 Service层直接使用 ,也可以扩展泛型DAO 子类使用 ,见两个构造函数的注释 . Author: calvin Constructor SummaryHibernate

29、Dao()用于 Dao 层子类的构造函数.HibernateDao(org.hibernate.SessionFactory sessionFactory, java.lang.Class entityClass)用于省略Dao 层, Service层直接使用通用HibernateDao 的构造函数 .Method Summary java.util.List find(java.util.List filters)按属性过滤条件列表查找对象列表. java.util.List findBy(java.lang.String propertyName, java.lang.Object val

30、ue, PropertyFilter.MatchType matchType)按属性查找对象列表,支持多种匹配方式.Page findPage( Page page, org.hibernate.criterion.Criterion. criterions)按 Criteria 分页查询 .Page findPage( Page page, java.util.List filters)按属性过滤条件列表分页查找对象.Page findPage( Page page, java.lang.String hql, java.util.Map values)按 HQL 分页查询 .Page fi

31、ndPage( Page page, java.lang.String hql, java.lang.Object. values)按 HQL 分页查询 .Page getAll( Page page)分页获取全部对象.名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 20 页 - - - - - - - - - HP Restricted Page 12 of 20 ? Copyright 2009 Hewlett-Packard Development Company

32、, L.P Valid agreement required. 4.5 数据库分页开发举例 :cvList的分页1) 创建公共的Page 类,文件位置如下:2) 创建公共有js 文件,文件位置如下:3) 点击 CV List,访问是src/main/java里 com.hp.interview.web.action.CvAction.java,代码如下:page =new Page(); page .setCapacity(10);/每页要显示的条数是10 条page .setPageNo(1); /访问的是第1 页page = candidateService.getAllCv( page

33、); 4) 最终访问的是src/main/java里 com.hp.interview.web.dao.CandidateDao.java.代码如下:public Page getAllCv(Page page)throws Exception List list=null ; Query query=null ; query =getSession().createSQLQuery(ALLCV_STRING).addEntity(Candidate.class ); page.setTotalRows(query.list().size(); int firstResult=page.get

34、Offset(); /从第几条开始访问int maxResults=page.getCapacity();/访问多少条list=query.setFirstResult(firstResult).setMaxResults(maxResults).list(); page.setValue(list);/返回的集合做为page 对象返回return page; 5) 首次返回页面interview/cv.jsp,页面的代码如下: /*showPageStrNum(总页数,当前是第几页,可以显示的数字数量,请求地址,请求参数)*/showPageStrNum($page.totalPages,

35、1, 5 , ajax/cv.action,);6) 当点击分页后,访问src/main/java里 com.hp.interview.ajax.web.action.CvAction.java,代码如下:public String list() throws Exception page =new Page(); page .setCapacity(10); page .setPageNo(pageNo ); page = candidateService.getAllCv( page ); if(page .getValue().size()=0) pageNo =pageNo -1; i

36、f(pageNo =0) pageNo =1; page .setPageNo( pageNo ); page = candidateService.getAllCv( page ); returnSUCCESS ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 20 页 - - - - - - - - - HP Restricted Page 13 of 20 ? Copyright 2009 Hewlett-Packard Development Company,

37、 L.P Valid agreement required. 7) 返回到的页面是ajax/cv.jsp,页面代码如下: showPageStrNum($page.totalPages, $page.pageNo, 5 , ajax/cv.action,);4.6 Struts convention插件实践举例:convention-plugin的约定:1. 默认所有的结果页面都存储在web-inf/content下,你可以通过设置struts.convention.result.path这个属性的值来改变到其他路径。如:则将路径配置到了web-inf/page 下。默认包路径包含action

38、,actions,struts,struts2的所有包都会被struts 作为含有action 类的路径来搜索。你可以通过设置 struts.convention.package.locators属性来修改这个配置。如:则定义了在项目中,包路径包含web 和 action 的将被视为action 存在的路径来进行搜索。com.ustb.web.*/com.ustb.action.*都将被视为含有action 的包路径而被搜索。接着, convention从前一步找到的package 以及其子package 中寻找 com.opensymphony.xwork2.action 的实现以及以act

39、ion 结尾的类: 1. com.example.actions.mainaction 2. com.example.actions.products.display (implements com.opensymphony.xwork2.action) 3. pany.details.showcompanydetailsaction 命名空间。从定义的.package.locators标示开始到包结束的部分,就是命名空间。举个例子:com.ustb.web.user.useraction的命名空间是:”/user ”。com.ustb.web.user.detail.useraction的命

40、名空间是: ”/user/detail”convention通过如下规则确定url 的具体资源部分:去掉类名的action 部分。然后将将每个分部的首字母转为小写,用 - 分割,你可以设置struts.convention.action.name.separator 如: 还是举个例子:useraction-user userdetailaction -user-detail。结合上面的。对于com.ustb.web.user.detail.userdetailaction,映射的 url 就是 /web-inf/content/user/detail/user-detail.jsp stru

41、ts 支持 .jsp .html .htm .vm格式的文件。下面是 action 和结果模版的映射关系:urlresult file that could matchresult type/hellosuccess/web-inf/content/hello.jspdispatcher/hellosuccess/web-inf/content/hello-success.htm dispatcher/hellosuccess/web-inf/content/hello.ftl freemarker/hello-worldinput/web-inf/content/hello-world-in

42、put.vmvelocity名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 20 页 - - - - - - - - - HP Restricted Page 14 of 20 ? Copyright 2009 Hewlett-Packard Development Company, L.P Valid agreement required. 以上的内容来自struts2 的文档 http:/struts.apache.org/2.1.6/docs/convention

43、-plugin.html当然,简单的通过默认的方式来进行配置不能完全满足实际项目的需要。所幸,convention的零配置是非常灵活的。通过 action注释对如下例子: 1. package com.example.web; 3. import com.opensymphony.xwork2.action; 4. import com.opensymphony.xwork2.actionsupport; 6. public class helloaction extends actionsupport 7. action(action1) 8. public string method1()

44、 9. return success; 10. 12. action(/user/action2) 13. public string method2() 14. return success; 15. 16. 通过 action 注释后方法名action注释后调用路径action注释 后映射路径method1 /action1!method1.action. /web-inf/content/action1.jsp method1 /user/action2!method2.action /web-inf/content/user/action2.jsp 通过 actions注释 1. pa

45、ckage com.example.web; 3. import com.opensymphony.xwork2.actionsupport; 4. import org.apache.struts2.convention.annotation.action; 5. import org.apache.struts2.convention.annotation.actions; 7. public class helloaction extends actionsupport 8. actions( 9. action(/different/url), 10. action(/another/

46、url) 11. ) 12. public string method1() 13. return “error ”; 14. 我们可以通过: /different/url!method1.action或/another/url!method1.action来调用 method1方法。/test1/test2/helloerror/web-inf/content/test/test2/hello-error.htmldispatcher名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第

47、14 页,共 20 页 - - - - - - - - - HP Restricted Page 15 of 20 ? Copyright 2009 Hewlett-Packard Development Company, L.P Valid agreement required. 对应的映射路径分别是/web-inf/content/different/url-error.jsp; /web-inf/content/another/url-error.jsp可能误导了大家,一个方法被action 注释后,只是多了一种调用方式,而不是说覆盖了原来的调用方式。比如对于如下例子:package c

48、om.example.web; 3. import com.opensymphony.xwork2.actionsupport; 4. import org.apache.struts2.convention.annotation.action; 5. import org.apache.struts2.convention.annotation.actions; 7. public class helloaction extends actionsupport 8. action(/another/url) 9. public string method1() 10. return “err

49、or ”; 11. 1. 我们调用method1方法可以通过两种方式:/hello!method1.action 映射 url:/web-inf/content/hello-error.jsp /another/url!method1.action 映射 url:/web-inf/content/another/url-error.jsp可见,两种方式均可对method1方法进行调用,唯一的区别就是,两种调用的映射是不一样的,所以,想跳转到不同的界面,这是一个非常好的选择。通过 namespace 注释 1. package com.example.web; 3. import com.ope

50、nsymphony.xwork2.actionsupport; 4. import org.apache.struts2.convention.annotation.action; 5. import org.apache.struts2.convention.annotation.actions; 6. namespace(/other) 7. public class helloworld extends actionsupport 9. public string method1() 10. return “error ”; 11. 12. action(url) 13. public

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁