Spring-MVC(1)

4 篇文章 0 订阅

1.服务器端三层架构

表现层(SpringMVC),业务层(Spring),持久层(Mybatis)

2.MVC模型

Model(JavaBean对象),View(视图,JSP展示),Controller(控制器Servlet)

3.SpringMVC与Struts2框架区别

都是表现层框架,都是MVC模型,底层都是ServletAPI。

Struts2的核心控制器是Filter,SpringMVC核心控制器是Servlet。

SpringMVC基于方法单例,Struts基于类多例。MVC效率高点

Struts的OGNL表达式开发效率更高

4.SpringMVC流程:三大组件:HandlerMapping, HandlerAdapter, ViewResolver

简要分析执行流程

1.DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。

    我们假设请求的url为 : http://localhost:8080/SpringMVC/hello


    如上url拆分成三部分:

    http://localhost:8080服务器域名

    SpringMVC部署在服务器上的web站点

    hello表示控制器

    通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。

2.HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。

3.HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:hello。

4.HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等。

5.HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。

6.Handler让具体的Controller执行。

7.Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。

8.HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。

9.DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。

10.视图解析器将解析的逻辑视图名传给DispatcherServlet。

11.DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图。

12.最终视图呈现给用户。

使用注解:

1.@RequestMapping

作用类:URL一级目录 ,需要以/开头

作用方法:二级目录

属性:

value和path:URL路径,两者效果一样

method:用于指定的请求方式  eg. method = {RequestMethod.POST, RequestMethod.GET}

params: 限制请求行中参数条件   eg. params ={"username"}必须要有username  ; params = {"username=hehe"}请求行中必须要有username=hehe;

headers:发送的请求中必须包含的请求头。

等价于对应方法

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping

2.请求参数绑定

参数传入:直接在Controller方法中作为参数传入.  eg. public int test(String username, String password)

JavaBean传入:先创建util类,直接在Controller中传入该类. eg. public int test(User user). 会自动传入 

集合传入:P171

原生ServletAPI对象传入: public int test(HttpServletRequest req, HttpServletResponse res)

3.@RequestParams

如果jsp传入的是name不是username

4.@RequestBody

获取请求体,GET不适用,因为只有POST可用。获取请求体所有内容

5. @PathVarible

基于REST风格URL

@Controller
public class RestFulController {

   //映射访问路径
   @RequestMapping("/commit/{p1}/{p2}")
   public String index(@PathVariable int p1, @PathVariable int p2, Model model){
       
       int result = p1+p2;
       //Spring MVC会自动实例化一个Model对象用于向视图中传值
       model.addAttribute("msg", "结果:"+result);
       //返回视图位置
       return "test";
       
  }
}

6.@CookieValue

7.@ModelAttribute

放在方法上:会先执行

8.@SessionAttribute

 

1.post请求的中文乱码问题:

在web.xml中配置filter标签

2.自定义类型转换器

eg. date类无法自动转换2010-11-11,只能自动转换2010/11/11。只能自定义类型转换器实现Converter接口并在xml配置

3.基于HiddentHttpMethodFilter的

 

https://blog.csdn.net/xiangminlu/article/details/105680357

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值