Maven+Jetty+Spring+Freemarker基本setup

今天难得做些基本功的复习功课,转了半天却发现原来自己知道的并不如自己想象的那么多。好几小时才把Spring+Freemarker的网络应用框架建立起来。Google了一下,没有发现特别全的教程,所以记在这里,权当是自己做的笔记了。

 

小Lo这里用的IDE是IntelliJ,如果有朋友用其他的IDE,比如NetBeans或者Eclipse,基本常识是一样的。由于小Lo常年在英国生活,可能会出现很多不知道中文的英文词,大家多包涵。

 

(1)最上层结构:

一个网络应用最普通的结构为如下:

+MyWebProject

----+business-logic

----+webapp

其中,MyWebProject在此作为parent module,而business-logic作为包含逻辑(诸如dao,service之流)的child module,Webapp则作为包含前端view(诸如controller,WEB-INF)的chlid module。每个module应当包含一个Maven用到的pom.xml。

 

最基本的MyWebProject的pom.xml为如下:

 

这里modules的部分定义了两个child module。

而同理的,business-logic的pom.xml为:

 

parent部分指向主module。

而webapp基本pom与以上一致,这里就不列出来了。

(2)引入Spring+Hibernate

既然用Maven,自然的,就在parent module的pom.xml定义就OK了:

 

由于是在parent module定义的,所有child module会自然继承。

(3)项目结构扫尾:

business-logic以及webapp应该各有两个文件夹,分别为main及test,main放实代码,test放测试代码。而main及test下各分src及resource,src部分放代码,resource放需要的所有资源xml,properties文件等等。IntelliJ下截图如下:

(4)WEB-INF及web.xml设置

在webapp/src/main下建立java及webapp文件夹,java自然是放与view有关的java文件,而webapp则是我们的web facet folder。再在webapp文件夹下新建一文件夹,名为WEB-INF,里面放上作为网络应用重要核心的web.xml。小Lo很辛苦地Google了好几圈,没有发现全的适用于此环境的web.xml,边边角角地凑齐的web.xml如下:

 

要注意的是,我们要建立的是用Spring的网络应用,因此这里的Servlet class用了Spring自带的DispatcherServlet。该class在Spring 2.0之前貌似都在spring-web的jar下,但是2.0以上的版本都把它移到了spring-webmvc的jar下,因此,要用它的话,还要辛苦地再加一个dependency(加在parent或者是webapp的module下pom皆可):

 

(5)Freemarker及servlet文件设置:

在webapp的pom.xml里面应该加入一个freemarker的dependency,具体加法不细述了,因为实在简单,和上文spring-webmvc很像。

以上web.xml已经建立起了一个名为test的servlet,因此,为方便用Jetty,在WEB-INF下建立名为test-servlet.xml的Spring facet:

 

这里freemarkerConfig是可以对freemarker进行一些自定义设置的bean。这里用了templateLoaderPath这个属性,告知Spring所有的freemarker template都可以在WEB-INF/freemarker下找到。

下面的viewResolver是很关键的一个bean,因为它主要告诉Spring如何找到并对待与view直接有关的文件,此处所有*.ftl(即Freemarker文件)皆为view。

下面的SimpleUrlHandlerMapping是告诉Spring什么地址该用什么bean解决,而该bean则在下面定义。此处该测试项目已经有了test.ftl及TestController文件。具体写法就不细述了,因为不属于设置的一部分。

(6)Jetty设置:

Jetty是和Maven联系比较紧密的web server,由于比Tomcat轻便很多,小Lo在写代码的时候惯用Jetty,而Tomcat是作为实际服务器上配置才用的server。具体设置法为在webapp的pom.xml加入以下代码:

 

这里小Lo用了自定义的端口号,因为默认的8080实在是有太多东西想用了,所以小Lo惯用12345作为Jetty的端口,大家也可以随便用自己喜欢的。

另,如果说大家不用传统的Spring controller写法(就是返回ModelAndView那种的handleRequestMapping),而是用比较新比较合理的Annotation式controller的话,一定要在parent module的pom.xml再加上以下这段:

 

这是告诉maven用Java1.6进行compile,否则默认的1.3是不认annotation的,请大家一定要注意。

 

好啦,所有设置到这边大概大功告成了。由于最基础的网络应用并不一定要用到数据库,因此hibernate基本没怎么讲,下次开篇文章专讲hibernate有关设置吧。大家写程序愉快!

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值