JavaEE三层架构环境搭建架构思想代码书写指导手册范本.docx
《JavaEE三层架构环境搭建架构思想代码书写指导手册范本.docx》由会员分享,可在线阅读,更多相关《JavaEE三层架构环境搭建架构思想代码书写指导手册范本.docx(48页珍藏版)》请在冰豆网上搜索。
JavaEE三层架构环境搭建架构思想代码书写指导手册范本
JavaEE三层架构
环境搭建、架构思想、代码书写_指导手册
一、前言
1.1文档说明
文档以“中原工学院自然语言处理项目”中“网络变异词”模块为参考对象,重点阐述JavaEE三层架构思想及简要说明各层代码的意义。
文档只包含了重要步骤及截图,具体配置时以实际操作为主。
1.2MVC思想
MVC的全称是Model-View-Controller,即“模式—视图—控制器”,其思想是:
首先用户通过视图层发出请求,接着控制器接受用户的请求,并决定调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器将处理后的数据传递给视图层,通过视图层将结果展现给用户。
1.3文档使用对象
具备JavaSE基础的JavaEE开发人员
二、项目开发工具
2.1开发平台
MicrosoftWindows7专业版/旗舰版
2.2所需软件
软件名称
操作系统位数
下载url
软件作用
32位
64位
Jdk、Jre
jdk-7u25-
windows-i586.exe
jdk-7u25-
windows-x64.exe
.oracle./technetwork/
java/javase/downloads/index.html
Java开发工具及运行环境
eclispe
eclipse-jee-kepler-
R-win32.zip
eclipse-jee-kepler-
R-win32-x86_64.zip
.eclipse.org/downloads/
开发Java项目的IDE
Tomcat
apache-tomcat-7.0.42-
windows-x86.zip
apache-tomcat-7.0.42-
windows-x64.zip
tomcat.apache.org/download-
70.cgi
开发JavaEE项目的Web容器
Spket
spket-1.6.23.zip
.spket./download.html
开发ExtJS的eclipse插件
ExtJS
ext-4.2.1.zip
.sencha./products/
extjs/download/
ExtJS官方包
SVN
Server端
VisualSVN-Server-2.6.4.msi
.visualsvn./server/
download/
项目版本管理软件服务器端
Client端
TortoiseSVN-1.8.1.240-win32-svn-1.8.1.msi
TortoiseSVN-1.8.1.24570-x64-svn-1.8.1.msi
项目版本管理软件客户端
subclipse
site-1.10.1.zip
subclipse.tigris.org/archive/
SVN的eclipse
插件
三、开发环境搭建
约定统一在D盘根目录下建立以Java(首字母大写)命名的文件夹,与课程相关的所有容统一放在D:
\Java路径下,如下图所示
3.1安装jdk、jre
3.1.1安装jdk、jre
双击jdk-7u25-windows-*.exe,设置jdk和jre的安装路径分别为D:
\Java\Java\jdk1.7.0_25和D:
\Java\Java\jre1.7.0_25。
出现下图,则说明jdk、jre安装成功。
3.1.2配置jdk、jre
jdk、jre安装成功后,需进行环境变量的配置。
右键单击“我的电脑”“高级系统设置”“环境变量”“系统变量”
按如下表配置
环境变量名
环境变量值
JAVA_HOME
D:
\Java\Java\jdk1.7.0_25
CLASSPATH
.;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib
PATH
…;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
备注:
CLASSPATH环境变量值中的“.”勿遗漏,其代表当前路径
PATH中的“…”表示以前path中的值
3.1.3验证jdk是否配置成功
方式一:
编写如下简单java代码,并将文件命名为TestJdkJre.java,放置在D:
\Java路径下,
publicclassTestJdkJre{
publicstaticvoidmain(String[]args){
System.out.println("Jdkandjrewereinstalledsuccessfully");
}
}
输入下图窗口中的命令,若输出“Jdkandjrewereinstalledsuccessfully”,则说明jdk和jre配置成功。
方式二:
在命令行中执行如下两个命令,若出现如下窗口,则说明jdk配置成功
建议在Linux下安装一次jdk、jre,以进一步体会jdk、jre的配置意义和作用。
3.2安装eclipse
3.2.1运行eclispe
将eclipse-jee-kepler-R-*.zip解压缩到D:
\Java目录下,并重命名为eclipse_javaee,进入eclipse_javaee\eclipse目录中,eclipse是免安装软件,双击eclipse.exe即可运行eclipse集成开发工具。
3.2.2设置eclispe的工作空间
将eclipse的工作空间设置为D:
\Java\workspace,方便进行以后的团队开发。
3.3安装Tomcat
3.3.1解压缩Tomcat
将apache-tomcat-7.0.42-windows-*.zip解压缩到D:
\Java路径下,并重命名为apache-tomcat-7.0.42。
3.3.2运行Tomcat
进入apache-tomcat-7.0.42\bin路径下,双击startup.bat,启动Tomcat服务器。
出现如下图窗口,窗口中无报错,则说明Tomcat启动成功。
可通过apache-tomcat-7.0.42\bin路径下的shutdown.bat关闭tomcat服务器
3.3.3测试tomcat
通过localhost:
8080(8080为Tomcat的默认端口,后续可通过配置更改此访问端口),出现如下界面则说明Tomcat启动成功
3.3.4配置Tomcat
①添加环境变量
参考jdk、jre环境变量的配置,配置Tomcat的环境变量
环境变量名
环境变量值
TOMCAT_HOME
D:
\Java\apache-tomcat-7.0.42
PATH
…;%TOMCAT_HOME%\bin
②更改访问Tomcat的端口
修改TOMCAT_HOME\conf\路径下的
文件
测试更改后的端口
出现上图,则说明端口更改成功。
③为了让Tomcat列出Web应用根路径下的所有页面,修改TOMCAT_HOME\conf\路径下的web.xml文件,将参数listings的默认值false改为true
④添加管理Tomcat用户
修改TOMCAT_HOME\conf\路径下的
文件
测试添加的用户
点击下图页面中的ManagerApp,提示输入刚才配置的用户名、密码。
登录成功后,可管理Tomcat中已部署的Web项目。
建议在Linux下安装一次Tomcat,以进一步体会Tomcat的安装配置。
3.4集成Tomcat到eclispe
按如下步骤将Tomcat集成到eclispe中,以后可通过eclispe管理Tomcat服务器。
显示JavaEE透视图下的Servers视图,按如下步骤操作
Step1
Step2
Step3
点击Finish,Tomcat集成到eclipse操作完成。
可通过localhost:
8080验证。
3.5搭建ExtJS开发环境
3.5.1安装Spket
此处推荐采用link法安装eclispe插件spket,步骤如下:
1、在eclispe安装目录D:
\Java\eclipse_jee\eclipse下,建立文件夹addPlugins
2、在addPlugins目录下,建立文件夹spket-1.6.23,将下载的spket-1.6.23.zip解压缩,然后将其目录下的eclipse文件夹复制到\addPlugins\spket-1.6.23路径下
3、在eclispe安装目录D:
\Java\eclipse_jee\eclipse下,建立空文件夹links,打开记事本,在其中输入“path=D:
\\Java\\eclipse_javaee\\eclipse\\addPlugins\\spket-1.6.23”,保存文件并命名为spket-1.6.23.link,保存spket-1.6.23.link至eclipse_jee\eclipse\links中
4、重启eclispe
3.5.2验证Spket是否安装成功
启动eclispe后,通过WindowPreferences,若出现如下界面,则说明Spket插件安装成功。
3.5.3配置Spket
打开Spket,选择JavaScriptProfilesNew,如下图操作
Step1
addlibrary,选择ExtJS
Step2
addfile,选择D:
\Java\ext-4.2.1.883目录下的ext-all-dev.js文件(按照约定,ext-4.2.1.zip同样已解压到D:
\Java\路径下)
Step3
设置ExtJS为默认的JavaScriptProfiles
Step4
选择*.js,选择SpketJavaScriptEditor,点default,将*.js文件的默认打开方式设置为用Spket插件打开。
Step5
重启Eclipse,通过如下步骤建立测试项目
FileNewDynamicWebProject,建立名为“extjs_env_test”的测试项目,以测试Spket是否安装成功。
点击Finish
在WebRoot下建立如下图结构
其中,extjs_env_test.js文件的容如下
Ext.onReady(function(){
Ext.MessageBox.alert("提示信息","ExtJS开发环境配置成功——余建新");
});
index.jsp文件的容如下
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
">
hadoop2013
hadoop云盘项目
3.5.4验证Spket是否配置成功
编写js代码时有自动提示,如下图所示,则说明Spket配置成功。
3.5.5验证ExtJS开发环境是否配置成功
将项目发布到Tomcat上,启动Tomcat,按如截图方式访问,若出现如下窗口,则说明ExtJS开发环境配置成功。
3.6安装SVN
说明:
SVN服务端和客户端的安装、配置及使用较简单,此文档没再囊括,大家可参考网络资源。
3.7集成SVN到eclipse
3.7.1安装subclipse插件
subclipse(SVN的eclispe插件)的安装方法同样可采用link法,具体
安装步骤可参考Spket插件的安装。
安装完成后,通过WindowShowViewOther…输入svn,若出现下图窗口,则说明subclispse插件安装成功。
3.7.2使用subclipse
subclipse的使用方法可参考网络资源。
四、项目命名规
五、项目后台开发步骤
5.1src源文件夹下
准备工作
在src源文件夹下,建立如图3-1所示的包层次结构。
图3-1
3.1.1model层
表3-1variationword.xlsx
根据表3-1variationword.xlsx,建立对象模型,代码如下
@Entity
@Table(name="T_VARIATION_WORD")
publicclassVariationWordextendsBaseEntityModel{
privatestaticfinallongserialVersionUID=-404303562119301462L;
privateLongcode;
privateStringvarwordId;
privateStringnetword;
privateStringreplaceWord;
privateStringnote;
//字段编码(数据库中每条记录的标识)
@Column(name="CODE")
publicLonggetCode(){
returncode;
}
//实体标识
@Column(name="VARWORD_Id",nullable=false,length=20)
publicStringgetVarwordId(){
returnvarwordId;
}
//网络词
@Column(name="NETWORD",nullable=false,length=40)
publicStringgetNetword(){
returnnetword;
}
//直接替换词
@Column(name="REPLACEWORD",nullable=false,length=40)
publicStringgetReplaceWord(){
returnreplaceWord;
}
//附注
@Column(name="NOTE",length=60)
publicStringgetNote(){
returnnote;
}
publicvoidsetVarwordId(StringvarwordId){
this.varwordId=varwordId;
}
publicvoidsetNetword(Stringnetword){
word=netword;
}
publicvoidsetReplaceWord(StringreplaceWord){
this.replaceWord=replaceWord;
}
publicvoidsetNote(Stringnote){
this.note=note;
}
}
//附注
@Column(name="NOTE",length=60)
publicStringgetNote(){
returnnote;
}
publicvoidsetCode(Longcode){
this.code=code;
}
publicvoidsetVarwordId(StringvarwordId){
this.varwordId=varwordId;
}
publicvoidsetNetword(Stringnetword){
word=netword;
}
publicvoidsetReplaceWord(StringreplaceWord){
this.replaceWord=replaceWord;
}
publicvoidsetNote(Stringnote){
this.note=note;
}
}
注解说明:
以上***均为Spring的注解,各注解的具体意义见表3-2
表3-2
序号
注解名
注解具有的属性
注解(或属性)意义
备注
1
Entity
标志一个实体,对应数据库中的一表
2
Table
对应数据库中的表名
3
Column
name
指定列名
nullable
是否允许列为空
length
指定列长度
BaseEntityModel继承自基类BaseEntityModel,下面是BaseEntityModel的代码
@MappedSuperclass
publicclassBaseEntityModelextendsBaseModel{
privatestaticfinallongserialVersionUID=-6163675075289529459L;
@Column(name="ENTITY_NAME")
StringentityName;
//实体创建时间
@Temporal(TemporalType.TIMESTAMP)
@Column(name="DATECREATED")
protectedDatedateCreated;
//实体修改时间
@Temporal(TemporalType.TIMESTAMP)
@Column(name="DATEMODIFED")
protectedDatedateModified;
//实体是否被删除
@Column(name="DELETED")
protectedBooleandeleted;
//实体主键
@Id
@Column(name="ID")
@GeneratedValue(strategy=GenerationType.AUTO)
Longid;
//重写父类BaseModel的equals方法,判断传入对象是否与当前对象相等
@Override
publicbooleanequals(Objectobj){
if(null!
=obj){
if(objinstanceofBaseEntityModel){
BaseEntityModeldomain=(BaseEntityModel)obj;
if(this.id==domain.id){
returntrue;
}
}
}
returnfalse;
}
publicDategetDateCreated(){
returndateCreated;
}
publicDategetDateModified(){
returndateModified;
}
publicLonggetId(){
returnid;
}
//因为重写了父类BaseModel的equals方法,
//此处需要重写父类BaseModel的hashCode方法
@Override
publicinthashCode(){
if(this.id==null){
this.id=Long.valueOf(0);
}
returnHashCodeBuilder.reflectionHashCode(this.id);
}
publicBooleanisDeleted(){
returndeleted;
}
publicvoidsetDateCreated(DatedateCreated){
this.dateCreated=dateCreated;
}
……//省略了其他setter方法
//重写父类BaseModel的toString方法
@Override
publicStringtoString(){
returnToStringBuilder.reflectionToString(this,ToStringStyle.MULTI_LINE_STYLE);
}
}
BaseEntityModel继承自基类BaseModel
/**
*BaseclassforModelobjects.Childobjectsshouldimpleme