首页天道酬勤mvc分别用什么实现,controller

mvc分别用什么实现,controller

admin 05-13 09:51 181次浏览

说明:

这篇文章摘自网络全文进行了修改。

仅供参考:

3359 www.cn blogs.com/zjf-1992/p/5736101.html

什么是MVC框架

模型-视图-控制器(MVC )是一种基于众所周知的设计界面APP应用程序的设计模式。 主要通过隔离模型、视图和控制器在APP应用程序中的作用,从接口中解除业务逻辑的绑定。 模型通常封装APP应用程序数据并在视图级别显示。 视图只显示这些数据,不包含业务逻辑。 控制器接收来自用户的请求,并调用后台服务(manager或dao )处理业务逻辑。 处理后,后台业务层可能会返回视图层中显示的数据。 控制器收集这些数据,准备模型并将其显示在视图层上。 MVC模型的核心思想是将业务逻辑从接口中分离出来,使其能够在不相互影响的情况下分别进行更改。

控制层的写法

1 package com.platform.MVC.system.layer.controller.test; 2

3 importjava.util.ArrayList; 4 importjava.util.HashMap; 5 importjava.util.List; 6 importjava.util.Map; 7导入javax.servlet.http.http servlet请求; 8 importorg.Apache.catalina.connector.request; 9 importorg.spring framework.stereotype.controller; 10 importorg.spring framework.ui.model; 11 importorg.spring framework.web.bind.annotation.request mapping; 12 importorg.spring framework.web.bind.annotation.request method; 13 importorg.spring framework.web.bind.annotation.request param; 14 importorg.spring帧web.bind.annotation.response body; 15 importorg.spring framework.web.servlet.modelandview; 16

17 @ controller 18 @请求映射(/user ) ) 19publicclassuserctroller(20

21 //方式字符串

22 @请求映射(test ) ) 23公共字符串列表(mapmap ) 24map.put ),) HelloKitty ); 25映射. put (age ),1 ); 26 //返回视图

27返回'系统/用户列表'; ) 29 ) 29

30

31 //方式ModelAndView

32@requestmapping(value='test2',method=RequestMethod.GET ) 33publicmodelandviewlist2)模型{34 //

35 modelandview view=new modelandview (; 36 //绑定数据

37model.addattribute('name )、' zhangsan ); 设定38 //视图

39 view.set viewname (系统/用户列表); 40返回视图; 41 ) 42

43

44 //方式AJAX45 //接收参数: @requestparam(value='username ',required=true,defaultValue='hello ' )字符串用户名称

46 @ request mapping (value='/test3',method=RequestMethod.POST ) 47 @ response body 48公共映射) http servlet reqlist required=true,defaultValue='hello ' ) String username ) { 50 map map=new hashmap 51 map.put (' name ',' zhangsan ' ); 52 returnmap; 53 ) 54

55 }

自从SpringBoot出现以来,我一直没有使用xml配置SpringMvc,今天我从网上看到了配置信息。 把它摘录下来

1 .在1.web.xml中添加阻止程序,并将所有请求批量传递给org.sprin

gframework.web.servlet.DispatcherServlet 来处理。

1

2 viewspace

3

4 org.springframework.web.servlet.DispatcherServlet5

6 1

7

8

9

10 viewspace

11 /

12

2. 根据 servlet-name,还得在web.xml 的同一目录里建一个 {servlet-name}-servlet.xml 的文件

1 <?xml version="1.0" encoding="UTF-8"?>

2

3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"

4 xmlns:context="http://www.springframework.org/schema/context"

5 xsi:schemaLocation="6 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd7 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

8

9

10

11

12

13

14

16

17

18

20

21

22

23 class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />

24

25 class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

26

27

28

29

30

31

32

33

34

35

36

49

50

51

52

3. 首先开始编写Controller层,作为MVC的控制层,是最直接和用户交互的,也是最外面的一层。Controller这里有两种写法: 一种是基于配置的,一种是基于注解的。

基于配置

这个好像是Spring很早的版本之前的功能,所有的url都必须在配置文件里配置一下。配置其使用的HandlerMapping和HandlerAdapter以及,该URL对应的Controller类。并且该Controller类必须实现(implements)org.springframework.web.servlet.mvc.Controller  并重写其:ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception的方法。

首先看配置文件:viewspace-servlet.xml

1

2

3

4

5

6

7

Controller类:IndexController.java

1 packagecom.corp.chimera.web.controllers;2

3 importjavax.servlet.http.HttpServletRequest;4 importjavax.servlet.http.HttpServletResponse;5

6 importorg.springframework.web.servlet.ModelAndView;7 importorg.springframework.web.servlet.mvc.Controller;8

9 /**

10 * 基于配置的 Controller,Spring最原始的用法11 * 必须实现 org.springframework.web.servlet.mvc.Controller 并重写handleRequest方法。12 * 需要在 xxx-servlet.xml 里进行配置:13 * 并且对于HandlerMapping 需要使用 org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping14 * HandlerAdapter 需要配置 org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter15 *16 *@authorkevin17 *18 */

19 public class IndexController implementsController {20

21 @Override22 public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throwsException {23 //1、收集参数、验证参数24 //2、绑定参数到命令对象25 //3、将命令对象传入业务对象进行业务处理26 //4、选择下一个页面

27 ModelAndView mv = newModelAndView();28 //添加模型数据 可以是任意的POJO对象

29 mv.addObject("message", "I am liuzk");30 //设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面

31 mv.setViewName("index");32 returnmv;33 }34

35 }

这样启动tomcat就可以 访问了。。。

其HandlerMapping映射使用的是 BeanNameUrlHandlerMapping 和 SimpleControllerHandlerAdapter 并且使用 JSTLView 作为 ViewResolver视图解析器。。

这样写的一个缺点就是:

所有的url都得需要在文件里做配置。当系统庞大页面多的时候,这种效率上以及代码可读性上都大打折扣。于是,基于注解的方法就来了。。。

基于注解

1

2

3

4

5 class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />

6

7 class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

8

9

10

11

12

13

14

Controller类:ListController.java

1 packagecom.corp.chimera.web.controllers;2

3 importjavax.servlet.http.HttpServletRequest;4 importjavax.servlet.http.HttpServletResponse;5

6 importorg.springframework.stereotype.Controller;7 importorg.springframework.web.bind.annotation.RequestMapping;8 importorg.springframework.web.servlet.ModelAndView;9

10 /**

11 * 基于注解的 Controller12 * 和基于配置的Controller 不同的是,靠注解就可以实现所有Url,相比之下,基于注解的Controller 更方便,灵活13 * 无需实现 和 继承任何类,只需要 @Controller 既可以标记该类位Controller14 * @RequestMapping 注解 实现对于url的 path 进行注册15 *16 * 但是使用前仍然需要配置 Spring 的配置文件:17 * HandlerMapping 使用的是 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping18 * HandlerAdapter 需要指定 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter19 *20 *@authorkevin21 *22 */

23 @Controller24 @RequestMapping(value = "/list")25 public classListController{26

27 @RequestMapping(value="/index")28 public ModelAndView listIndex(HttpServletRequest request, HttpServletResponse response) throwsException {29 //1、收集参数、验证参数30 //2、绑定参数到命令对象31 //3、将命令对象传入业务对象进行业务处理32 //4、选择下一个页面

33 ModelAndView mv = newModelAndView();34 //添加模型数据 可以是任意的POJO对象

35 mv.addObject("message", "This is a Spring Constraint with annotation.
@Controller
@RequestMapping");36 //设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面

37 mv.setViewName("list");38 returnmv;39 }40

41 }

看上面方式:一个@Controller 一个@RequestMapping 两个注解解决了所有的配置,但是前提是在配置文件里配置使用 DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter 作为 url映射控制器。

当然以上这两种方式在一个系统里也是可以一块是用的,

一篇文章带你从java字节码层理解i++和++i
kubernetes的组件,kubernetes+docker+devops kafka的ack,kafka 卡住
相关内容