1 |
刚开始搞spring mvc和freemarker,遇到了不少问题,首先是导入静态文件,记录一下,希望能帮助亲们少走弯路吧。 |
2 |
本章不介绍freemarker的神马复杂用法(因为我也不会),也不讲解spring mvc的种种,仅仅关注二者结合后静态文件的导入问题,和最初的一些配置。 |
>文件结构一览
>jar包一览
>web.xml
关键一句话,就是springmvc的那个servlet,因为要用RESTFul风格,所以拦截/,并且让它去读springMVC来初始化(java
/src 根路径)。
01 |
<? xml version = "1.0" encoding = "UTF-8" ?>
|
02 |
< web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
|
03 |
xmlns = "http://java.sun.com/xml/ns/javaee"
|
04 |
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
|
05 |
id = "WebApp_ID" version = "2.5" >
|
06 |
< display-name >justforfun</ display-name >
|
08 |
< welcome-file >index.html</ welcome-file >
|
12 |
< servlet-name >springMVC</ servlet-name >
|
13 |
< servlet-class >org.springframework.web.servlet.DispatcherServlet</ servlet-class >
|
15 |
< param-name >contextConfigLocation</ param-name >
|
16 |
< param-value >classpath*:/springMVC.xml</ param-value >
|
18 |
< load-on-startup >1</ load-on-startup >
|
21 |
< servlet-name >springMVC</ servlet-name >
|
22 |
< url-pattern >/</ url-pattern >
|
>springMVC.xml
配置ftl
config和viewResolver都是网上找的,直接copy过去,关键是mvc:resources,后面的location注意要放到可以被访问的地方(tomcat中WEB-INF下的东东貌似别人是访问不到的),spring的问档中说可以放在跟目录下或者神马著名的可被访问的目录(好像应该这么翻译)META-INF.
01 |
<? xml version = "1.0" encoding = "UTF-8" ?>
|
02 |
< beans xmlns = "http://www.springframework.org/schema/beans"
|
03 |
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:tx = "http://www.springframework.org/schema/tx"
|
04 |
xmlns:context = "http://www.springframework.org/schema/context"
|
05 |
xmlns:mvc = "http://www.springframework.org/schema/mvc"
|
06 |
xsi:schemaLocation="http://www.springframework.org/schema/beans |
07 |
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd |
08 |
http://www.springframework.org/schema/tx |
09 |
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd |
10 |
http://www.springframework.org/schema/context |
11 |
http://www.springframework.org/schema/context/spring-context-3.0.xsd |
12 |
http://www.springframework.org/schema/mvc |
13 |
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> |
17 |
< context:component-scan base-package = "com.app,com.core,JUnit4" ></ context:component-scan >
|
20 |
< mvc:annotation-driven />
|
23 |
< bean id = "freemarkerConfig"
|
24 |
class = "org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer" >
|
25 |
< property name = "templateLoaderPath" value = "/WEB-INF/ftl/" />
|
31 |
< bean id = "viewResolver"
|
32 |
class = "org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver" >
|
33 |
< property name = "cache" value = "true" />
|
34 |
< property name = "prefix" value = "" />
|
35 |
< property name = "suffix" value = ".ftl" />
|
36 |
< property name = "contentType" value = "text/html; charset=UTF-8" />
|
46 |
< mvc:resources mapping = "/images/**" location = "/META-INF/resources/images/"
|
47 |
cache-period = "31556926" />
|
48 |
< mvc:resources mapping = "/js/**" location = "/META-INF/resources/js/"
|
49 |
cache-period = "31556926" />
|
50 |
< mvc:resources mapping = "/css/**" location = "/META-INF/resources/css/"
|
51 |
cache-period = "31556926" />
|
>ftl文件
导入spring.ftl是为了获得一个路径,@s.url,这个东东会自动加上你工程的名字,例如s.url
‘/css/default.css‘/,会变成justforfun/css/default.css,千万注意!!!script一定不能写成<script
某某某 />,应该写成<script
某某某></script>
,要不然这行后面的东西在html里面都解析不到了,被这个纠结了好久,不知道为神马,希望大牛看到能告知告知。
01 |
<#import "spring.ftl" as s /> |
08 |
< link rel = "stylesheet" type = "text/css" href="<@s.url ‘/css/default.css‘/>"/>
|
09 |
< script type = "text/javascript" src="<@s.url ‘/js/jquery.min.js‘/>">
|
18 |
< img src = "<@s.url ‘/images/img1.jpg‘/>"/>
|
>spring的controller
这个仅仅返回index就好了。
01 |
package com.app.controller;
|
03 |
import org.springframework.stereotype.Controller;
|
04 |
import org.springframework.web.bind.annotation.RequestMapping;
|
05 |
import org.springframework.web.bind.annotation.RequestMethod;
|
09 |
public class IndexController {
|
11 |
@RequestMapping (method=RequestMethod.GET)
|
12 |
public String index(){
|
}
>最终效果
可以见到,图片,css,js,都没问题,而且因为springMVC里面设置了UTF-8,所以显示的是中文而不是乱码。
ps,增强你的效率vimer
找到了一个老哥配置的gvim,非常不错,在eclipse里面可以用viplugin这个插件,在环境变量里面加入vim的路径,:vim即可直接启用vim编辑,美中不足的是没有加上command-T这个插件,因为用ruby,windows下各种不成功,可惜。linux下推荐janus这个vim插件管理器很好很强大,而且command-T也默认安装了,:help
janus有很大惊喜
另外,用zsh吧,好好配置一下,它的tab功能比bash强好多。
http://www.oschina.net/code/snippet_574132_13357
pps 为什么上面图片不显示???