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教程
最后给出一个搭建项目的简单流程:

  1. 创建workspace;
  2. 同步并提交远程仓库;
  3. 开启eclipse;
  4. maven和tomcat配置(maven镜像);
  5. 创建maven项目;
  6. 配置project facets和web.xml;
  7. 配置项目jdk和jre版本;
  8. 常用lib导入(activiti、jUnit、server runtime);
  9. maven依赖注入(pom.xml);
  10. activiti.cfg.xml和log4j.properties导入(工作流);
  11. 测试类编写(工作流);

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的开发。

原创粉丝点击