Springboot中控制器的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot中控制器的使用相关的知识,希望对你有一定的参考价值。

参考技术A 步骤:
(1)在model层,创建一个Result类,封装code(状态识别码)、msg(提示信息)、data(核心数据)。

(2)在model层,创建一个User实体类。

(3)创建控制器UserController(相当于入口main)。

(1)在resources/static路径下创建一个静态页面view1.html。
(2)在application.properties中添加静态资源映射。

(3)使用springmvc自带的@Controller直接跳转html页面(不带模板引擎的),配合@ResponseBody实现rest API。

(4)此时配置的静态文件映射不光只针对html页面,还有对图片、css、js等文件的映射。后面将静态文件放置到这个已经配置好的static文件夹下即可。当然也可以自行创建一个文件夹然后再来进行配置。

1、@RestController是对class进行注解,该注解下的所有被@RequestMapping注解的方法最终输出结果都为字符串,不会跳转界面。
2、用@Controller注解的class,若将@RequestMapping注解的方法的返回值类型设置为String,则可以进行界面跳转。案例中是直接跳转html静态页面,所以需要配置静态资源访问映射。
3、在@Controller注解的class中,想输出字符串,可以在@RequestMapping注解的方法上再添加一个@ResponseBody注解。
4、如果在跳转界面的方法上加上了@ResponseBody注解,则不能跳转界面了,而是输出的字符串。
5、Json.cn查看json

在 AngularJS 上使用 Typescript 的指令中控制器的范围

【中文标题】在 AngularJS 上使用 Typescript 的指令中控制器的范围【英文标题】:Scope of Controller in Directive using Typescript on AngularJS 【发布时间】:2015-08-27 16:47:00 【问题描述】:

我正在继续学习 Typescript 和 AngularJS,并且对范围有疑问。我正在做一个项目,项目中的每个人都负责一个指令。但是,我最近在我的理解中遇到了障碍。

目前我有一个 html 页面,其中包含以下内容

<html ng-app ="helloworld">
    <head>
        <!--insert scripts here-->
    </head>
    <body>
       <direct-a></direct-a>
       <hello-world></hello-world>
    </body>
</html>

我们已将指令设置为类似于以下内容:

/// <reference path="../../../typings/tsd.d.ts" />
module helloWorld

var app :angular.IModule = angular.module('helloWorld');

app.directive('helloWorld', HelloWorldDirective);

    function HelloWorldDirective() :ng.IDirective

        return <ng.IDirective>
            controller: 'HelloWorldController',
            controllerAs : 'vm',
            templateUrl: './app/HelloWorld/HelloWorld.html'          

        ;

;


我在&lt;direct-a&gt; 指令上有与此类似的代码,但使用该代码,我无法看到&lt;hello-world&gt; 标记中的任何内容,直到我们将controllerAs 更改为“vm”以外的其他内容。这让我想知道我们是否需要为自定义指令设计命名约定,而不是为controllerAs 使用“vm”短语?还是我在这里缺少一个技巧?

【问题讨论】:

【参考方案1】:

我创建了两个示例:

那里is BROKEN plunker 那里is fully WORKING plunker

坏了

这就是我创建&lt;hello-world&gt;指令的方式(与此How can I define my controller using TypeScript?相关)

module HelloWorld

    var app = angular.module('TheApp');
    
    export class HelloWorldDirective implements ng.IDirective
    
        public restrict: string = "E";
        public replace: boolean = true;
        public template: string = "<div>" +
            "<input ng-model=\"vm.MyValue\" />" +
            "<button ng-click=\"vm.Show()\" >Show my value</button>" +
            "<p> my value <b>vm.MyValue</b></p>" +
            "</div>";
        public controller: string = 'HelloWorldCtrl';
        public controllerAs: string = 'vm';
        //public scope = ;
        
    app.directive("helloWorld", [() => new HelloWorld.HelloWorldDirective()]);

    export interface IHelloWorldScope  extends ng.IScope
    
        // properties for isolated scope
    
    export class HelloWorldCtrl
    
        static $inject = ["$scope"];
        constructor(protected $scope: HelloWorld.IHelloWorldScope) 
        public MyValue: string = "InitValue";
        public Show(): void
        
            alert(this.MyValue)
        
    
    app.controller('HelloWorldCtrl',  HelloWorld.HelloWorldCtrl);

这是 &lt;other-directive&gt; TypeScript 代码:

module OtherDirective

    var app = angular.module('TheApp');
    
    export class OtherDirectiveDirective implements ng.IDirective
    
        public restrict: string = "E";
        public replace: boolean = true;
        public template: string = "<h4>" +
            "OtherValue: vm.OtherValue" +
            "</h4>";
        public controller: string = 'OtherDirectiveCtrl';
        public controllerAs: string = 'vm';
        //public scope = ;
    

    app.directive("otherDirective", [() => new OtherDirective.OtherDirectiveDirective()]);

    export interface IOtherDirectiveScope  extends ng.IScope
    
      // properties for isolated scope
    
    export class OtherDirectiveCtrl
    
        static $inject = ["$scope"];
        constructor(protected $scope: OtherDirective.IOtherDirectiveScope) 
        public OtherValue: string = "This is other Value";
    
    app.controller('OtherDirectiveCtrl',  OtherDirective.OtherDirectiveCtrl);

所以,如果我们将这两个并排放置:

<div>
    <hello-world></hello-world>
    <other-directive></other-directive>
</div>

&lt;hello-world&gt; 不起作用。它会被打破。原因是“共享”不是独立作用域,两个指令都可以访问。

让它工作

要修复它,我们必须同时更改(在这个简单的示例中至少要更改一个)或者为controllerAs使用不同的名字

查看文档 (Angular Directive Guide)

隔离指令的范围

我们上面的 myCustomer 指令很棒,但它有一个致命的缺陷。我们只能在给定范围内使用一次。 ... 我们希望能够做的是将指令内部的作用域与外部作用域分开,然后将外部作用域映射到指令的内部作用域。我们可以通过创建我们所说的隔离作用域来做到这一点。为此,我们可以使用指令的范围选项:

这里我们将要求隔离范围

export class HelloWorldDirective implements ng.IDirective

    public restrict: string = "E";
    public replace: boolean = true;
    public template: string = "<div>" +
        "<input ng-model=\"vm.MyValue\" />" +
        "<button ng-click=\"vm.Show()\" >Show my value</button>" +
        "<p> my value <b>vm.MyValue</b></p>" +
        "</div>";
    public controller: string = 'HelloWorldCtrl';
    public controllerAs: string = 'vm';
    // isolated scope requested
    public scope = ;


export class OtherDirectiveDirective implements ng.IDirective

    public restrict: string = "E";
    public replace: boolean = true;
    public template: string = "<h4>" +
        "OtherValue: vm.OtherValue" +
        "</h4>";
    public controller: string = 'OtherDirectiveCtrl';
    public controllerAs: string = 'vm';
    // isolated scope requested as well
    public scope = ;

在行动中检查它here 有关此方法的更多信息:

How can I define my controller using TypeScript? How To bind data using TypeScript Controller & Angular Js

【讨论】:

如果有帮助就太好了;) 帮助很大:)

以上是关于Springboot中控制器的使用的主要内容,如果未能解决你的问题,请参考以下文章

在 AngularJS 上使用 Typescript 的指令中控制器的范围

Spring MVC 中控制器的生命周期

解决 Rails 3.2 中控制器的视图路径

限制 NinjaFramework 中控制器方法中的参数数量?

Spring 项目中控制器和服务类的通用类

OneThink插件中控制器访问路径控制