阿里云 跨服务器塔建项目(spring boot 跨域访问与阿里云端口开放问题)

最近给别人上线一个前后台分离的web 项目,项目初步只是一个简单的没有前后台交互的项目,就简单的用 jquery.js 和  bootstrap 进行的前段界面塔建,最后提出来说要后台,功能也不难,所以就选择了spring boot + lombok + swagger + 

mybatis-spring-boot-starter 搭建了后台服务

代码就不贴出来了简单的描述下 lombok 和  swagger 的功能

lombok : 自动生成属性setter、getter 主要针对与model层的类实现,举例:

package com.qingdaochemical.model;


import lombok.Data;
import lombok.Getter;
import lombok.Setter;


/**
 * Created by bobby on 2018/3/5.
 */
@Data //通过Data 和 Getter Setter 注解可以实现免去写get和set 方法,原理没来的急看
@Getter
@Setter
public class News {
    public String titlename;
    public String textvalue;

}

swagger:原始用来对云平台接口提供说明文档,在这里不想写后台管理界面,直接用swagger将需要的接口提供出去

controller层举例:

public class CompanyInfo{
    @Autowired
    private CompanyService companyService;
    @ApiOperation(value = "根据", notes = "根据公司名称更新公司详情") //swagger 注解
    @GetMapping("/updateCompanyInfo")
    public String updateCompanyInfo(@RequestParam String Companyinfo,@RequestParam String CompanyName)
    {
        Company obj = new Company();
        obj.setCompanyinfo(Companyinfo);
        obj.setCompanyname(CompanyName);
        companyService.updateInfoByname(obj);
        return "OK";
    }
    @ApiOperation(value = "查询公司名称", notes = "查询公司名称")
    @GetMapping("/selectCompanyInfo")
    public List<Company> selectCompanyInfo()
    {
        return companyService.selectInfo();
    }

}

//swagger 发现注解,得添加 一下两个注解

@Configuration

@EnableSwagger2
public class SwaggerConfiguration {
    private List<Parameter> setHeaderToken() {
        ParameterBuilder tokenPar = new ParameterBuilder();
        List<Parameter> pars = new ArrayList<>();
        tokenPar.name("Authorization").description("tokens").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
        pars.add(tokenPar.build());
        return pars;
    }


    @Bean
    public Docket RestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("qingdaochemical-introduce")
                .globalOperationParameters(setHeaderToken())
                .apiInfo(ApiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.qingdaochemical.Controllers"))
                .build();
    }




    private ApiInfo ApiInfo() {
        Contact contact = new Contact("青岛化工", "", "");


        ApiInfo apiInfo = new ApiInfoBuilder()
                .title("主页 - API接口")
                .description("REST风格API")
                .contact(contact)
                .version("1.0")
                .build();


        return apiInfo;
    }

}

因为刚开始买的云虚拟云,只支持php后台,不会写,所以放弃,只能通过前后台分离不浪费服务器资源,并且合理使用现在资源。重新买了一台云服务器ECS,将webservice 部署在 ecs 上,启动命令

nohup java -jar xxx.jar &

结果发现端口无法访问,参考:http://blog.csdn.net/swl979623074/article/details/71910308

阿里云后台安全组将端口开放; 

在本地通过tomcat 不是访问远端地址,发现前段界面报告不支持跨域访问,网上说可以通过更改前段代码搞定,试了,没管用,直接通过更改webservice 搞定:

代码如下:

@Configuration
public class CorsConfig {
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 1
        corsConfiguration.addAllowedHeader("*"); // 2
        corsConfiguration.addAllowedMethod("*"); // 3
        return corsConfiguration;
    }


    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig()); // 4
        return new CorsFilter(source);
    }
}

猜你喜欢

转载自blog.csdn.net/u012453032/article/details/79583893