JavaWeb成长笔记(二)
来源:互联网 发布:上瘾网络剧花絮百度云 编辑:程序博客网 时间:2024/05/20 15:57
接着上次的笔记,我们开始进行blog项目的开发,第一次自己搞项目,难免很多幼稚的地方,请大家批评指正。
内容
1. 背景
由于v1.0版本侧重于servlet和jdbc的练习,故除核心功能以外一切从简。
2. 项目搭建
a) IDE采用eclipse+maven+git的搭配
先在本地创建workspace,我是在该workspace直接init的git仓库并且同步在远程仓库上,这样我的项目就可以在远程仓库上同步了(QA:不知道这样做是否符合正常套路)。
然后在eclipse中安装maven和git的插件,配置maven的安装路径和配置路径,配置tomcat,tomcat的server.xml配置中添加 URIEncoding="UTF-8"
,双击tomcat修改common中的字符集为utf-8,增加响应时间,如果有多个tomcat记得修改端口号。
b) 动态项目修改
用maven创建一个simple project,这样创建的项目不是动态项目,同样缺失我们servlet中要使用的核心配置文件web.xml,需要把项目转换成动态的project,在project的properties选项中选择Project facets,选中Dynamic Web Module,这样我们的project变成了动态项目,然后我们在project单击右键,选择Java EE Tools,选择Generate Deployment Descriptor stub,这样我们就拥有了web.xml配置文件,我们才可以进一步编写servlet。
c) 版本控制
在创建完项目之后,我们需要注意project facets的java版本与项目的java compiler版本,与我们workspace默认的java版本以及compiler版本需要保持统一,才不会报错。另外在project build path的时候要注意jre的版本要和workspace一致,把常用的library都导入。
d) 依赖注入
另外在pom.xml中尽可能的把所有的依赖全部导入,这里推荐一个maven repository查询的网站:
maven依赖查询
这里给出我的pom.xml的配置:
<properties> <activiti-version>5.18.0</activiti-version> </properties> <dependencies> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>${activiti-version}</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring</artifactId> <version>${activiti-version}</version> </dependency> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>2.4.3</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.3.168</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> <version>1.7.6</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.13</version> </dependency> <dependency> <groupId>com.mysql.jdbc</groupId> <artifactId>com.springsource.com.mysql.jdbc</artifactId> <version>5.1.6</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-dbcp2</artifactId> <version>2.1.1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.3</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-eclipse-plugin</artifactId> <inherited>true</inherited> <configuration> <classpathContainers> <classpathContainer>org.eclipse.jdt.USER_LIBRARY/Activiti Designer Extensions</classpathContainer> </classpathContainers> </configuration> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <username>admin</username> <password>admin</password> <url>http://localhost:8090/manager/text</url> <path>/servletTest</path> <uriEncoding>UTF-8</uriEncoding> <finalName>servletTest</finalName> <server>tomcat</server> </configuration> </plugin> </plugins> </build>
这里把各种activiti、servlet、jdbc、mybatis和spring的依赖一股脑的全部配上(QA:如何控制不同版本依赖之间的和谐),需要注意的一点是,虽然我在web.xml配置中添加了mysql的驱动依赖,但是在写jdbc代码时还是报classnotfound的错,查询了一下是因为我们在tomcat的lib中同样需要导入mysql的依赖,参考:mysqlDriver配置
同时需要在maven的settings.xml中配置一下下载的镜像,否则会在官网下载依赖,特别的慢,我的镜像配置为:
<mirror> <id>aliyun</id> <mirrorOf>centeral</mirrorOf> <name>aliyun mirror</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror>
<profile> <id>aliyun</id> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> <repository> <id>aliyun</id> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>aliyun</id> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </pluginRepository> </pluginRepositories> </profile>
这样我们在maven中配置依赖的下载速度就可以了。
activiti工作流配置,参照:工作流配置
这里需要注意
虽然在pom.xml中我们配置了activiti的依赖,不过在运行时还是会提示缺少相关的包,这里我的做法是在网上下载一个比较全的activiti依赖包,手动配置在项目的lib中,不过我还是更倾向于所有的依赖管理都使用maven;
需要在项目的resource中导入log4j.properties的配置文件,同时需要在项目的常用lib中导入junit的包,方便我们进行测试;
在activiti.cfg.xml配置文件中,配置数据库的url时存在一个问题: QA ?useUnicode=true&characterEncoding=utf8&useSSL=true
这句配置会导致报错,而使用?serverTimezone=UTC
则不会报错,暂时不明确原因。
这样我们基本已经把项目搭建完成了。另外推荐一个工作流的教程:
activiti教程
最后给出一个搭建项目的简单流程:
- 创建workspace;
- 同步并提交远程仓库;
- 开启eclipse;
- maven和tomcat配置(maven镜像);
- 创建maven项目;
- 配置project facets和web.xml;
- 配置项目jdk和jre版本;
- 常用lib导入(activiti、jUnit、server runtime);
- maven依赖注入(pom.xml);
- activiti.cfg.xml和log4j.properties导入(工作流);
- 测试类编写(工作流);
3.前台插件的使用
表现层主要代码采用的是bootstrap的blog模板加以修改,弹窗采用的是bootbox,表格用的是jqgrid,富文本编辑器采用的是ueditor,音乐播放器采用的是dark player。学习资源如下:
bootstrap官方文档
bootbox官方文档
jqgrid学习文档
ueditor官方文档
10个免费开源的JS音乐播放器插件
资源引入
前端插件一多,最头疼的就是资源的引入,特别是好多插件都是基于jQuery的,如果你使用它默认的资源路径,那么一个jsp文件里就会引入好几个版本的jQuery,所以在引入时最好查看一下是否有重复的内容,尽量使用兼容的版本。
另外有些资源是采用线上引入,有的是下载引入,这个看情况如果只是自己做着练手的,那就线上也可以,如果下载的话,我们需要在resource目录里建一个plugins的文件夹,把所有的插件文件都放在这里,统一资源管理。
我查看其他成熟的项目中都有一个commonlinks.tag的文件,用来管理所有插件的资源引入,不过目前还不清楚.tag文件如何使用,待下一期再来阐述。如果可以导入这样一个文件的话,那么每一个页面只需要导入属于自己的js文件就行了,很整洁。
其实多使用一些不同类型的插件对于学习很有必要,因为我们会去进行二次开发,研究和修改源码,可以了解他们的设计模式。
目前前端的表现层基本上完工,工作流的测试也已经完成,下一步进行核心的servlet和jdbc的开发。
- JavaWeb成长笔记(二)
- JavaWeb成长笔记(一)
- 多媒体开发学习成长笔记(二)
- JavaWeb学习笔记(二)---Servlet协议
- 佟刚老师javaweb笔记(二)
- JavaWeb 学习笔记(二)Servlet生命周期
- javaWeb笔记(二) httpServlet
- JavaWeb基础笔记(二)
- Tomcat再探究(JavaWeb学习笔记二)
- JavaWeb核心技术学习笔记(二)——Http协议
- JavaWeb概述(二)
- JavaWeb总结(二)
- JavaWeb(二)
- javaWeb学习(二)
- JavaWEB常见问题(二)
- 成长管理(笔记)
- 程序员成长笔记(二):SVN,Git,Mercurial
- JavaWeb笔记(1)
- 数据库——连接查询(子查询)
- 多线程开山篇
- Unity3D集成腾讯语音GVoiceSDK
- oracle函数(1)
- Java中获取绝对路径出现% 20(路径被转码)的问题
- JavaWeb成长笔记(二)
- 在CentOS 7上安装Jenkins
- 5、Base64加密算法
- 大数据视觉智能实践及医学影像智能诊断探索(讲座精华笔记)
- Bootstrap html后台模板总结
- C++ 校园管理系统、高校人员信息管理系统设计
- HDU 3018 Ant Trip(欧拉路的条数)
- Oracle 表数据迁移(使用impdp命令)
- HAProxy安装及配置