首页 > 代码库 > springMVC知识点

springMVC知识点

全注解

<mvc:annotation-driven>

1:自动注册基于注解风格的处理器需要的DefaultAnnotationHandlerMapping

AnnotationMethodHandlerAdapter

2:支持ConversionService自动注册(类型转换)

3:支持验证框架的自动探测并注册

4:支持@RequestBody @ResponseBody,支持JSON数据转换(

需将Jackson实现放置到classpath)

 

<context:component-scan base-package="">

组件扫描器,会扫描base-package下的类,标识为@Component类会被ioc容器创建

 

 

Model ModelMap Map

返回数据范畴

 

3个类型的对象其实为同一个对象,以后使用Model即可

controller中获取的数据可以以key-value方式放在这个3个对象里面,页面通过el表达式获取

获取数据的时候,先Model对象获取,没有找到再到request

 

 

 

 

 

             

 

 

Model对应于Struts2valuestackstruts2处理对象颗粒度为类级别,springmvc处理对象为方法

 

 

 

@RequestMapping("/update")//通过注解完成请求urlController方法的映射

public ModelAndView update(HttpServletRequest request,Model model, ModelMap modelMap,Map map) throws Exception {

//收集组织

//调用

//切换

// model.addAttribute("a", 1);

modelMap.addAttribute("b", 2);

map.put("c", 3);

request.setAttribute("a", 22);

 

System.out.println(model==modelMap);

System.out.println(modelMap==map);

System.out.println("update");

ModelAndView modelAndView = new ModelAndView();//ModelAndView 模型视图对象

modelAndView.addObject("info", "hello springmvc");//返回数据,给模型视图对象添加数据

modelAndView.setViewName("list");//给模型视图对象设置逻辑视图名

return modelAndView;

 

}

 

 

 

 

ModelModelAndView

ModelAndView作为返回对象,会合并、覆盖Model中保存的相同key的数据

 

 

切换页面

l ModelAndView

设置ModelAndView对象逻辑视图,切换页面

 

l String

controller-controller

一次请求(转发)

“forward:toList”

2次请求(重定向)

“redirect:toList”

controller-jsp

一次请求(转发)

直接返回页面的逻辑视图名字符串

2次请求(重定向)

没有

 

静态资源处理

静态资源:jscss、图片等叫做静态资源

 

 

/static/js/test.js  /static/js/test2.js

/static/css/test.css

/static/*

 

l test.js

 

 

 

l list.jsp

 

 

 

 

 

 

 

 

 

 

 

 

 

 

l Controller

 

 

l springmvc配置

 

 

类型转换

定义一个自定义转换器

 

注册转换器

 

 

 

json的支持

 

 

 

 

 

 

 

 

 

@ResponseBody

 

 

 

index.jsp

 

 

在页面插入一条商品的记录,前台页面需要将刚刚插入的数据展示

TaskTimer隔一段时间重新查询数据库记录,将更新后数据展示在前台首页

TaskTimer对象什么创建,任务什么启动

 

 

 

拦截器

//一般开发中,有接口和父类供选择,选择父类。因为父类提供公共的方法

public class MyHandlerInterceptor1 implements HandlerInterceptor{

 

/**

 * 前置处理,执行处理器方法之前回调preHandle方法

 */

public boolean preHandle(HttpServletRequest request,

HttpServletResponse response, Object handler) throws Exception {

System.out.println("====MyHandlerInterceptor1 preHandle");

return false;

}

 

/**

 * 后置处理,执行处理器方法后回调postHandle方法

 */

public void postHandle(HttpServletRequest request,

HttpServletResponse response, Object handler,

ModelAndView modelAndView) throws Exception {

System.out.println("====MyHandlerInterceptor1 postHandle");

}

 

/**

 * 视图渲染完毕后,回调这个方法

 */

public void afterCompletion(HttpServletRequest request,

HttpServletResponse response, Object handler, Exception ex)

throws Exception {

System.out.println("====MyHandlerInterceptor1 afterCompletion");

}

}

 

//一般开发中,有接口和父类供选择,选择父类。因为父类提供公共的方法

public class MyHandlerInterceptor2 implements HandlerInterceptor{

 

/**

 * 前置处理,执行处理器方法之前回调preHandle方法

 */

public boolean preHandle(HttpServletRequest request,

HttpServletResponse response, Object handler) throws Exception {

System.out.println("====MyHandlerInterceptor2 preHandle");

return true;

}

 

/**

 * 后置处理,执行处理器方法后回调postHandle方法

 */

public void postHandle(HttpServletRequest request,

HttpServletResponse response, Object handler,

ModelAndView modelAndView) throws Exception {

System.out.println("====MyHandlerInterceptor2 postHandle");

}

 

/**

 * 视图渲染完毕后,回调这个方法

 */

public void afterCompletion(HttpServletRequest request,

HttpServletResponse response, Object handler, Exception ex)

throws Exception {

System.out.println("====MyHandlerInterceptor2 afterCompletion");

}

 

}

 

 

 

list.jsp

 

 

 

正常执行流程

 

 

 

 

 

 

 

文件上传

请求表单类型

配置文件中设置文件上传解析器

处理器方法绑定MultiPartFile对象,方法中将对象指向文件转移到自己指定文件里面即可

 

 技术分享

技术分享

 

 

 

10 今日总结

核心操作

 

springMVC知识点