回顾MVC架构
什么是mvc:模型、视图、控制器 -----软件设计规范
回顾servlet
- maven项目
- 导入依赖(webmvc,servlet-api,jsp-api,jstl,junit)
- 创建子模块,在子模块中添加框架支持(在子模块中导入依赖jsp、servlet【因为父工程有这两个依赖,就直接继承】)
- 在java包中创建类,继承
httpServlet
实现doget doset方法 - 在doGet中写逻辑【获取前端参数、调用业务层、视图转发或者重定向】
- 在web.xml注册上
- 写一个视图,去请求跳转
MVVM:M V VM ViewModel:双向绑定
初识SpringMVC
基于java实现的轻量级MVC框架
轻量级、简单
高效、基于响应的MVC框架
与Spring兼容良好
约定大于配置
功能强大:RESTful、数据验证、本地化、格式化、主题化
简洁灵活
SpringMVC的执行流程【重点】以localhost:8080/A/hello 其中A为服务器的某个站点,hello控制器部署在其上
DispatcherServlet->HHanderMMapping—>HanderExcetion---->DS—>HanderAdapter—>Controller-------->Modle【得到】–>HD—>DS—>ViewResolver—>DS------>View【返回】
DispatcherServlet
表示前置控制器,是整个SpringMVC 的控制中心,用户发出请求,DispatcherServlet
接收请求并拦截请求
HanderMapping
为处理器映射器,根据请求URL查找Handler,由DispatcherServlet
调用
Handler的处理器为<bean id="/hello" class="com.controller.HelloController"/>
HanderExcetion
表示具体的Hander,其作用是根据URL查找控制器,如果URL被查找控制器为hello
HanderExcetion
将解析后的信息传递给DispatcherServlet
HanderAdapter
表示处理器适配器,其按照特定的规则去执行Handler
【找Controller】
Handler
让具体的Controller
执行
Controller
会将执行信息传递给HA
HA将视图逻辑名称或模型传递给DS
DS调用视图解析器ViewResolver
来解析HA传递的逻辑视图名
视图解析器ViewResolver
将解析完的3视图逻辑名传给DS
DS根据视图结果,调用具体的视图
最终呈现给用户
网上其它详细总结
使用注解开发SpringMVC
@RestController不会被视图解析器解,返回的直接是字符串
Controller配置总结
- 添加web支持
- 导依赖
- web.xml配置DispatcherServlet 绑定文件并在Resources下创建该文件
- 该文件中有注解驱动,包扫描,过滤静态资源等需要配,还有视图解析器
RestFul风格
原来:http://localhost:8080/add?a=1&b=2
RestFul:http://localhost:8080/add/1/2{在参数请求那里添加@PathhVariable,通过该注解映射到URL上对应}
地址一样根据请求方式的不同而不同,达到URL的复用
好处:
安全
简洁
高效:支持缓存
重定向和转发
不用视图解析器,默认为转发,在return后添加完整的路径名
重定向为:在路径前加redirect
接收请求参数及数据回显
请求参数跟列表参数一致,便直接对应即可
http:localhost:8080/hello?a=1
public String hello(String a){}即可
请求参数跟列表参数不一致,便直接对应即可
http:localhost:8080/hello?a=1
则需要
加注解@RequestParam(“b”)
public String hello(@RequestParam(“b”) String b){}
SpringMVC解决乱码问题
在web.xml中配置乱码过滤
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
什么是json【重点】
对象----》json—>:JSON.stringify(对象)
json—》对象---->:JSON.parse(json)
java怎么生成json传给前端
工具:Jackson:应该是目前较好的json解析工具
使用步骤:
- POM导入依赖
- 配置web.xml:有DispatherServlet跟过滤器
- resources下写springmvc配置文件:创建自动扫描来交给IOC管理、视图解析器、
- 表写pojo类
- 编写controller层控制类
- 在controller中:@ResponseBody表示不走视图解析器,会直接返回一个字符串
- jackson中有ObjectMapper类,将该类实例化有writeValueAsString方法可以将对象转为json数据
- 传list集合[{},{},{}]