首页天道酬勤requestbody注解,controller做什么的

requestbody注解,controller做什么的

张世龙 05-13 09:43 72次浏览

1.1 @Controller是什么

让我们先来看一个例子:

@ controller @ request mapping (/blog ) ) publicclassblogcontroller ) @requestmapping(/index ) ) publicmodelandviewindew sindew system.out.println(CTX; mav.addobject('ctx ',CTX ); 返回映射; } } @Controller表示在tomcat启动时将此类作为控制器加载到Spring的Bean工厂中。 如果不添加,就是普通班,和Spring没有半价关系。

有两种常见配置:

! -注释模式驱动----MVC : annotation-driven/MVC : annotation-driven! -扫描包----context 3360 component-scan base-package=* ' com.blog mgr.* ' */context 3360 component-scan

其中,如果base-package扫描com.blogMgr目录中的所有包,并找到注释为@Controller的类,则系统将在容器启动时对其进行Spring

所以,我们只写了控制器,但在一个地方没有叫new的控制器。 因为当Web容器启动时,此控制器已经通过Spring加载到自己的Bean工厂中。

这就是所谓的springscan机制。 @Controller是一个评论,当tomcat启动时,可以看到一些JAVA类挥舞着印有@Controller的旗帜在呼喊。 ' Hey,SpringMVC,I'm here,pleasetake me to yourbeanfactory! '

1.2 @RequestMapping是什么

在控制器上,总是会看到名为请求映射的评论。 看起来像传球的跳跃。 以下列举一些我们容易记住的比喻。

例如,有一天,我找到了一部非常漂亮的电影,在D驱动器上做了一个名为“电影”的文件夹。 里面有两部电影,分别保存在一个文件夹里。

在上图中,路径为“D:\电影”,路径下还有一个文件夹【疯狂动物城2016】。 里面是这样的

那么,该文件的具体路径是“D:\电影\疯狂动物城2016”。 现在,要访问此资源,除了双击外,不也可以只在地址栏中输入““D:\电影\疯狂动物城 2016\疯狂动物城 2016.mp4””吗?

是的,当然可以。

成功了。 我通过url得到了想要的资源文件!

复制这个文件,复制到同一个路径吧

如果尝试将第一个MP4文件重命名为“疯狂动物城2016.mp4”,将显示类似于以下内容的弹出消息

这样,在同一路径中不能有两个重复文件。

同样,如果在同一控制器上设置两个相同的请求映射

可以编译,但在启动tomcat后

通过URL“http://localhost :8088/blog mgr/blog/index”访问时,将报告错误。

org.spring framework.beans.factory.beancreationexception : errorcreatingbeanwithname ' org.spring framework.web . nestedexceptionisjava.lang.illegalstateexception : ambiguousmappingfound.cannot map ' blog控制器' bean method

 

Ambiguous mapping found表示有一个路径模棱两可,也就是路径重名了,系统无法进行映射,所以报错了。这个和无法在同一个文件夹下面创建两个同名文件,是一个道理。

 

那么,如果我一定要再创建一个“疯狂动物城 2016.mp4”的文件该怎么办呢

 

 

 

然后,我把这个文件放在另一个文件夹里面就可以了。

 

同理,我也可以另外建一个Controller,Controller类上面的RequestMapping叫“/blog2”,再直率的紫菜写一个一模一样的RequestMapping就肯定没有问题了。

 

小结

一个web项目本身就是一个系统,和操作系统一样,可以把项目当做一个系统,一个应用程序。人为什么要使用电脑,因为电脑可以

 

1.给我们想要的资源(比如.avi)

2.帮我们做事。

 

在一个系统中,如果没有图形界面,我们要访问一个资源,必然是通过一个黑窗口来访问的,就是通过路径来访问的。一个B/S架构的web项目,就是一个类似于命令行一样的应用程序,我们唯有通过url,也就是路径去获得我们想要的资源和服务。

 

再来看RequestMapping,最终对应的必然是一个方法,方法的功能无非就是进行一些业务的操作,或者返回一个什么东西。

 

比如

 

 

我们就是通过这个方法获得了想要的jsp页面,RequestMapping的作用就是提供了一个句柄,让我们可以访问到对应的方法,最终获得我们想要的东西。综上所述,RequestMapping就是一个映射路径。

  

1.3 @ResponseBody的作用
在Controller里面,我们经常可以看到@ResponseBody这个注解,它的意思很简单,就是说明这个方法返回的东西会通过IO流的方式写入到浏览器。

比如我们写一个方法:

@RequestMapping("/testResponseBody")@ResponseBodypublic String testResponseBody(HttpServletRequest request){ return "<h1 style='color:lightGreen'>Hello Web!</h1>";}

最终在浏览器获得的效果是这样的:

转载于:https://www.cnblogs.com/skyblue-li/p/6861036.html

service层可以调用不同dao,mybatis的dao层实现 spring注解注入属性,controller层的注解