博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC+FreeMarker
阅读量:6697 次
发布时间:2019-06-25

本文共 3953 字,大约阅读时间需要 13 分钟。

v 前言:

   最近在学习SpringMVC,模板引擎用的是FreeMarker,之前没有接触过。利用SpringMVC开发其实还有许多的步骤,比如控制层,服务层,持久化层,实体等等,先弄了一个小demo来总结一下SpringMVC的开发流程。

v一、web.xml

springmvc
org.springframework.web.servlet.DispatcherServlet
    
       
contextConfigLocation
       
/WEB-INF/spring-mvc.xml,classpath*:/applicationContext.xml
    
  
  
1
springmvc
/
index.jsp

v二、spring-mvc.xml

10
zh_CN
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd

v三、Controler类

@Controller@RequestMapping("/home")public class FreeMarkerController {    @RequestMapping("/getUser")    public ModelAndView Add(HttpServletRequest request, HttpServletResponse response) {        User user = new User();        user.setUsername("hjzgg");        user.setPassword("5211314");        List
users = new ArrayList
(); users.add(user); return new ModelAndView("index", "users", users); }}

v四、实体类

public class User {    private String username;    private String password;    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }}

v五、ftl模板(index.ftl)

yonyou  <#list users as user>    username : ${user.username}
    password : ${user.password}  

 

v六、访问路径

  http://localhost:port/项目名称/home/getUser

v七、流程说明

  摘自:http://jinnianshilongnian.iteye.com/blog/1594806

1、  首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制;

2、  DispatcherServlet——>HandlerMapping, HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象,通过这种策略模式,很容易添加新的映射策略;

3、  DispatcherServlet——>HandlerAdapter,HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;

4、  HandlerAdapter——>处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView对象(包含模型数据、逻辑视图名);

5、  ModelAndView的逻辑视图名——> ViewResolver, ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;

6、  View——>渲染,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术;渲染的过程用到了相应的视图解析器,关于视图解析器的优先级的配置()。本例中,得到的默认视图解析器是FreeMarker的视图解析器,然后根据ModelAndView中的viewName或者Controler的返回值(对应ftl模板的名字)到FreeMarkerConfigurer配置的templateLoaderPath目录下寻找对应的模板文件,然后进行渲染。

7、返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。

  注:如果想要更清楚SpringMVC的流程,就要看一下DispatcherServlet的源码。

 

本文转自 小眼儿 博客园博客,原文链接:http://www.cnblogs.com/hujunzheng/p/5292769.html,如需转载请自行联系原作者
你可能感兴趣的文章
进程加载与segment
查看>>
[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题
查看>>
时间序列分析算法【R详解】
查看>>
Nginx+ffmpeg的HLS开源服务器搭建配置及开发详
查看>>
无效报表文件路径
查看>>
C程序编译过程浅析【转】
查看>>
BZOJ 1040 ZJOI2008 骑士 树形DP
查看>>
es62
查看>>
eclipse repository connector
查看>>
谈谈多线程开发中的线程和任务的理念
查看>>
vs2017 自定义生成规则 错误 MSB3721 命令 ”已退出,返回代码为 1。
查看>>
WizNote分享笔记至博客
查看>>
Android 编辑框(EditText)属性学习
查看>>
C# 跨线程调用form控件技巧及byte[]与string型相互转换
查看>>
SOCK_RAW编程
查看>>
JavaScript通过ID和name设置样式
查看>>
UML期末绘图及细节总结
查看>>
自建应用新花样,菜鸟也会做应用
查看>>
Servlet监听器(Listener)实例
查看>>
一个resin启动bug的解决
查看>>