SpringMVC与freemarker整合如何指定首页的模版文件
这个问题倒是困扰了我好久,由于是第一次接触freemarker
后来发现如果springmvc的控制器类名前面不写@RequestMapping注解
那控制器里面的方法就是根目录下面的控制器啊,比如有一个方法指定的@RequestMapping是
@RequestMapping("/index")
public String initindex(HttpServletRequest request, HttpServletResponse response,ModelMap model){
那他就是根目录下的index.jhtml他的控制器啊。
因此根据这个思路,今天SpringMVC与FreeMarker整合如何指定首页的模版文件这个问题解决了。
方法如下:
配置我们的web.xml
这里表示index.jhtml文件是我们的默认首页文件(我们的首页根目录下不一定有这个文件)
<welcome-file-list> <welcome-file>index.jhtml</welcome-file> </welcome-file-list>
然后修改我们的项目servlet
<servlet> <servlet-name>freemarker</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:config/freemarker-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>freemarker</servlet-name> <url-pattern>*.jhtml</url-pattern> </servlet-mapping>
主要是修改了url-pattern,以前我们这里是: /
现在修改为*.jhtml
这里表示所有.jhtml的文件都交割这个servlet处理
那么当我们运行url:http://localhost:8080/freemarker
他实际上就运行了index.jhtml文件,欢迎文件。
这个控制器我简单的写了下,如下代码
@Controller public class indexinfo { @RequestMapping("/index") public String initindex(HttpServletRequest request, HttpServletResponse response,ModelMap model){ System.out.println("222222"); System.out.println("111111111"); return "aaa/index"; } }
注意上面控制器的类名前面,注解Controller的下面,我们并没有写RequestMapping,如果你写了就表示根目录下面的目录,所以我们这里不写,就表示这个类里面的方法是根目录的控制器。
因此这个initindex方法就是我们执行http://localhost:8080/freemarker,返回的视图文件
视图文件就是模版aaa下面的index模版文件(即index.ftl),为什么是这样,您可以看看我前面写的freemarker的相关文章,很多其他的配置,也可以看其他的文章
如这篇文章:
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情