java mvc模式工作流程_Springmvc工作流程原理

1、什么是Spring mvc?

Spring MVC: 它是属于Spring基本架构里面的一个组成部分,属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面,所以我们在后期和 Spring 进行整合的时候,几乎不需要别的什么配置。

SpringMVC 是类似于 Struts2 的一个 MVC 框架,在实际开发中,接收浏览器的请求响应,对数据进行处理,然后返回页面进行显示,但是上手难度却比 Struts2 简单多了。而且由于 Struts2 所暴露出来的安全问题,SpringMVC 已经成为了大多数企业优先选择的框架。

2、Spring MVC的组件:

1、 前端控制器 DispatcherServlet

作用: 接收请求、响应结果 相当于转发器

有了DispatcherServlet 就减少了其它组件之间的耦合度

2、 处理器映射器HandlerMapping

作用: 根据请求的URL来查找Handler

3、 处理器适配器HandlerAdapter

作用: 按照特定的规则(HandlerAdapter要求的规则)去执行Handler

注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler

4、 处理器Handler

5、 视图解析器 View Resolver

作用: 进行视图的解析 根据视图逻辑名解析成真正的视图(view)

6、 视图View

View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf。。。)

3、SpringMVC工作流程原理图:

0395f2b6d5e88ac11d504ef9293caa43.png

SpringMVC流程:

1、 用户发送请求至前端控制器 DispatcherServlet。

2、 DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。

3、 处理器映射器 HandlerMapping 找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。

4、 DispatcherServlet 调用 HandlerAdapter 处理器适配器。

5、 HandlerAdapter 经过适配调用具体的处理器(Controller,也叫后端控制器)。

6、 Controller执行完成返回 ModelAndView。

7、 HandlerAdapter 将controller执行结果 ModelAndView 返回给 DispatcherServlet。

8、 DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器。

9、 ViewReslover 解析后返回具体View。

10、DispatcherServlet 根据View进行渲染视图(即将模型数据填充至视图中)。

11、 DispatcherServlet 响应用户。

4、案例

1、导入相关jar包:

93dcdeeb77ffa8213ad855a9e0afd3b7.png

2、web.xml文件配置

springmvc

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:spring-servlet.xml

springmvc

/

3、创建配置文件spring-servlet.xml文件,名称可以自定义。并配置处理器和映射器。

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd">

4、创建自定义Controller

/**

* 自定义控制器

* 必须实现Controller接口

* @author 叶小陌

*

*/

public class UserController implements Controller{

@Override

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {

System.out.println("本方法被调用了...");

ModelAndView view = new ModelAndView();

view.setViewName("/index.jsp");

return view;

}

}

5、测试效果

801b8e38e0a59afa9ab88a03800bca3c.png

------------------------------------------------华丽分割线------------------------------------------------

5、使用注解方式

1、修改配置文件开启注解

d20c185e695157c31dafda4756fbaa9a.png

2、配置如下

在spring-servlet.xml文件中配置:

3、Controller中使用注解:

@Controller

public class HelloController {

@RequestMapping("/h1")

@ResponseBody

public void hello(Integer id, String name, String address, String[] hobby) {

for (String string : hobby) {

System.out.println(string);

}

}

@RequestMapping("/h2")

@ResponseBody

public void user(User user) {

System.out.println(user);

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值