MVC架构
- 软件设计规范
- 模型:dao service
- 视图:jsp(本质servlet
- 控制器:Servlet
- 转发 重定向
Servlet
SpringMVC
基于Java实现MVC的轻量级web框架:底层是servlet
- 中心控制器:Spring的web框架围绕DispatcherServlet设计。DispatcherServlet的作用是将请求分发到不同的处理器
springmvc的案例
- Controller:摆脱servlet
- springmvc-servlet.xml
- web.xml:配置springmvc的核心 —— servlet
- 注意
springmvc的执行原理
== Handler是什么? ==
- Handler是一个Controller的对象和请求方式的组合的一个Object对象
- HandleExcutionChains是HandleMapping返回的一个处理执行链,它是对Handle的二次封装,将拦截器关联到一起。然后,在DispatcherServlert中完成了拦截器链对handler的过滤。
- DispatcherServlet要将一个请求交给哪个特定的Controller,它需要咨询一个Bean——这个Bean的名字为“HandlerMapping”。HandlerMapping是把一个URL指定到一个Controller上,(就像应用系统的web.xml文件使用将URL映射到servlet)。
- 请求解析
- 处理
- 视图解析
使用注解开发SpringMVC
- 导入相关jar包
- 编写web.xml,注册DispatcherServlet
- 编写SpringMVC配置文件
- 处理器映射器
- 开启注解驱动
- 处理器适配器
- 开启注解驱动
- 视图解析器
- 手动配置
- 处理器映射器
- 创建对应的控制类,controller
- 完善前端视图 和 controller之间的对应
Controller配置总结
@Component
@Service
@Controller
@Respository
- @Component
代表这个类会被spring接管,被这个注解的类中的所有方法,并且有具体页面可以跳转,那么就会被视图解析器解析
RestFul风格
- 原来的
- RestFul风格:更安全、简洁、高效(支持缓存
重定向 / 转发
- 无需视图解析器
- 有视图解析器.
- 转发 test(无需加.jsp)
- 重定向
接收请求参数 及 数据回显
接收数据
- 提交的域名称 和 处理方法的参数不一致
- @RequestParam:前端提交要用到的
- 提交的是一个对象
- 步骤
- 接收前端传递的参数,判断参数的名字,假设名字直接在方法上,可以直接使用
- 假设前端传递的是一个对象User,匹配User对象中的字段名,如果名字一致则OK,否则匹配不到
- 步骤
数据回显
- ModelAndView
- ModelMap
- 继承了LinkedMap
- Model
JSON
JSON键值对
JSON是JavaScript对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串。
JSON 和 JS对象 互换
- JSON字符串 -> JavaScript对象
var obj = JSON.parse("a":"Hello","b":"World")
- JavaScript对象 -> JSON字符串
var json = JSON.stringify(a:'Hello',b:'World')
Jackson
- 导包
- 配置web.xml
- springmvc-servlet.xml
返回一个对象
- 使用Jackson之前
- 使用Jackson
- 乱码解析
- 方式一
- 方式二:配置文件
- 乱码解析
返回多个对象 —— 用list
返回时间对象
- 方式一:使用时间戳 ——纯Java格式
- 方式二
- 工具类
- 注意
@Controller + @ResponseBody = @RestController:返回的是json字符串,不走视图解析器
Fastjson
- 导包
- 把对象集合转换成一个json字符串
String string = JSON.toJSONString(userList);
整合ssm
整合mybatis
- 导入依赖
整合Spring
整合springmvc
Ajax
- Ajax的核心:XMLHttpRequest对象(XHR)
- 纯原生的js实现ajax
- 使用jQuery
JQuery
Ajax异步加载数据
Ajax验证用户名体验
拦截器
- 只拦截访问的控制器方法,不拦截html / JSP 等
- aop思想
自定义拦截器
实现HandlerInterceptor接口
- applicationContext.xml
- 拦截器类
- return true
- return false
登录判断验证
文件上传 / 下载
对比:过滤器
- web.xml