spring mvc 框架及项目搭建流程

Myth丶恋晨 2022-05-15 23:58 360阅读 0赞

spring web MVC: 基于servlet 请求驱动的web框架

spring web项目的配置文件:

web.xml:web项目的入口 配置DispatcherServlet,(配置全局servlet(DispatcherServlet)和监听器listener);

applicationContest.xml:容器启动时加载(全局配置 classpath级别 )加载到内存,太多东西的话内存吃不消,如数据库连接池;

spring-mvc.xml:基于servlet请求时响应 runtime 级别 运行时实例化处理器映射/视图解析 /controller的配置 /事务 /jdbc/ aop 文件上传和下载控制等等;

1.DispatcherServlet

<1>.DispatcherServlet(继承httpservlet 将请求分发给各个控制器+与 IOC集成在一起 允许使用你spring的其他功能)

<2>.定义在web.xml 中,其处理的请求必须在同一web.xml中使用url-mapping定义映射;

DispatcherServlet读取配置文件 配置需要的其他bean可以在web-INF自己定义一个配置文件 继承了applicationContext.xml 他会覆盖原applicationContext.xml中配置的bean;DispatcherServlet 相当于 student 类,在applicationContext.xml中配置 相当于给类的属性赋值(setStuName(".."))

<3>.DispatcherServlet 初始化:默认初始化为[servlet-name]-servlet.xml, 但是可以自定义配置一个自己的配置文件;

70

将原来默认名为example-servlet.xml 的配置文件 自定义为/WEB-INF/spring-mvc.xml—-用来配置运行时的bean

70 1

#

2.spring容器的特殊Bean:

(spring容器自己有bean)特殊bean也用于配置(即注入),与其他bean 配置方式相同

70 2``

1.控制器:继承类或者实现接口

解析用户输入 并转换成合理的数据模型 由视图展现给用户-不关心业务逻辑(程序开发中的service层)

应用程序的行为—接口,控制器使得用户可以访问应用所提供的服务。spring mvc有servlet的东西,struts么有;

controller(即实现类):请求控制器是利用 处理器映射实现的;

70 3

<1>.简单控制器:

1.当从AbstractController继承时,只需要实现handleRequestInternal(HttpServletRequest, HttpServletResponse)抽象方法,该方法将用来实现自定义的逻辑,并返回一个ModelAndView对象;

2.ParameterizableViewController基本上和上面例子中的一样,不同的是,可以在application context中指定返回的视图名称(从而 避免了在Java代码中的硬编码);

3.MultiActionController来将多个请求处理方法合并在一个控制器里,这样可以把相关功能组合在一起。它可以定义页面请求到控制器方法名的映射, 然后在处理相应请求时调用该方法;

<2>.命令行控制器

可以将请求参数绑定到制定的命令对象 上(相当与表单处理)把参数绑定到属性或者对象。

  • AbstractCommandController:没有处理表单功能,但有验证功能;
  • AbstractFormController:支持表单提交;

  • SimpleFormController:实现类

2.处理器映射(handler mapping):

(可自定义):控制入口—请求怎么找到控制器(将web请求映射到正确的处理器(handler)上)

70 4

70 5

spring3.0以上用注解实现:加入注解驱动即可

70 6

3. 视图解析器(ViewResolver

控制出口 —怎么 出来 即展示视图

70 7

控制反转体现

getBean() 就可以得到spring容器已经创建 new 好的实例 spring可以对bean 操作 管理他,

只要引入某一个属性,就已经实现了实例化—- 自动实例化—需要依赖注入

3.dispatcherServlet (spring mvc)处理请求的过程:

servlet只是接受请求,spring容器默认是不接受请求的,所以需要配置一个全局的servlet;

1.找到配置文件 spring-mvc.xml,将其绑定到请求的一个属性上,以便控制器和处理器使用;

2.将本地化解析器绑定到请求上,即找到properties 文件;

3.将主题绑定到请求上;

4.是否存在上传文件;

5.找到合适处理器--执行执行链—以便为视图准备模型数据;

6.如果模型数据返回—用配置在spring-mvx.xml中的视图解析器显示视图(C 处理完后页面去哪里)

``

4.spring web项目的搭建流程:

1.用maven构建一个web项目,并部署到服务器上

2.引入spring容器(就可以使用spring的IOC 以及依赖注入)—-在web.xml 中引入容器(加listener 去监听容器 默认读WEN-INF下的应用文件 即applicationContext.xml ;

70 8

一般人为将 applicationContext.xml放在classpath下去编译 通过一下配置(在所以地方找到配置文件)实现: 70 9

3.需要spring的mvc 才能将web 请求转发到页面(spring容器默认不接受请求),maven加入jar包+全局servlet(spring mvc 机制来处理请求)

spring-mvc.xml (默认找【servlet-name】-servlet.xml)为了减轻applicationContext.xml负担而创建的一个基于servlet作用域的配置文件,即请求servlet时才会加载该配置文件内容,类似懒加载,里面配置bean与applicationContext.xml中配置相同;

70 10

spring web mvc项目一定要在spring-mvc.xml中加入mvc的机制:

70 11

4.请求—>转发 的过程:视图映射器(找到controller) +控制器(业务处理)+视图解析器(跳转页面/返回json)(在3.0版本以前 需要在spring-mvc.xml配置处理器映射,3.0以后用注解 不需要配置处理器映射和控制器—@RequestMapping/@Controller 但还是需要配置视图解析器解析器)--上一篇博客中有相关详解

70 12

5.使用注解需要声明一个扫描器—去扫描所有有注解的类 即应该加载在内存里的bean—spring 容器的到这些信息才能给我们实例化让我们去用,去依赖;

70 13

6.加注解驱动 ;

70 14

7.配置完成,开始写controller;

简单的controller例子:

  1. package com.spring.controller;
  2. import com.spring.entry.Students;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Controller;
  5. import org.springframework.ui.Model;
  6. import org.springframework.web.bind.annotation.PathVariable;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import org.springframework.web.bind.annotation.ResponseBody;
  9. import org.springframework.web.servlet.ModelAndView;
  10. import org.springframework.web.servlet.mvc.AbstractController;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13. import java.io.IOException;
  14. @Controller
  15. @RequestMapping(value = "/user")
  16. public class TestConterllor{
  17. @Autowired
  18. private Students students;
  19. //@RequestMapping("/name/{name}")
  20. @RequestMapping("/name")
  21. public ModelAndView getString(HttpServletRequest request, HttpServletResponse responser,Model model,Students students) throws IOException {
  22. //单个参数传递
  23. System.out.println(request.getParameter("name"));
  24. students.setStuName("wxxxx");
  25. System.out.println(students.getStuName());
  26. //页面数据传输的两种方式
  27. request.setAttribute("sss","vvvvv");
  28. ModelAndView view=new ModelAndView("test");
  29. view.addObject("df","sdsds");
  30. //没有 @ResponseBody 时返回字符串的方法
  31. //1.写出给浏览器
  32. //responser.setCharacterEncoding("utf-8");
  33. //responser.setContentType("application/json");//json格式
  34. responser.getWriter().printf("sss","utf-8");
  35. // return "forward:/jsp/test.jsp";//请求转发
  36. // return "redirect:/jsp/test.jsp";//请求重定向 url发生变化
  37. //return "test";//返回视图
  38. return view;
  39. //return new ModelAndView("test");
  40. }

发表评论

表情:
评论列表 (有 0 条评论,360人围观)

还没有评论,来说两句吧...

相关阅读

    相关 phpmvc框架-基本流程

    搭建属于自己的mvc框架的原因: 主要是因为在搭建mvc过程中能让我们对mvc有更深入的了解,也是为了更高的运行效率,还有就是在工作中大部分公司都有自己开发的框架,这样我们能