使用SpringMVC开发RestFul风格接口的java-web项目,tomcat部署并客户端访问

IDEA+Maven构建SpringMVC Web项目:从零到部署的完整指南 本文详细介绍了使用IDEA和Maven从零开始构建SpringMVC Web项目的完整流程,包括环境准备、项目创建、结构配置、核心文件编写、业务代码开发以及服务器部署等关键步骤。通过本指南,开发者可以快速掌握SpringMVC项目的创建流程,并顺利实现项目部署。 阅读详情

1.使用intellij idea开发,gradle构建工程。webcollection模块就是接口所在项目模块,handleMessage类就是接口类。

2.接口项目模块的build.gradle配置文件内容如下:

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'war'

group = 'com.cloudcollection'
archivesBaseName = 'webcollection'
version = '0.1'
sourceCompatibility = 1.8
targetCompatibility = 1.8
// java编译的时候缺省状态下会因为中文字符而失败
[compileJava,compileTestJava,javadoc]*.options*.encoding = 'UTF-8'
webAppDirName = 'webapp'
war{
    archiveName ="webcollection.war"
}

buildscript {
    repositories {
        maven { url "https://repo.spring.io/libs-release" }
        jcenter()
    }

}


task wrapper(type: Wrapper) {
    gradleVersion = '3.5'
}

idea {
    module {
        downloadJavadoc = false
        downloadSources = false
    }
}


sourceSets {
    main {
        output.resourcesDir = "bin/classes"
    }
}

repositories {
    mavenCentral()
    mavenCentral name: "erichseifert.de", artifactUrls: ["http://mvn.erichseifert.de/maven2"]
}

dependencies {
    compile project(":commons")
    compile project(":model")

    testCompile('junit:junit:4.12')

    compile 'org.springframework:spring-core:4.3.6.RELEASE'
    compile 'org.springframework:spring-web:4.3.6.RELEASE'
    compile 'org.springframework:spring-webmvc:4.3.6.RELEASE'
    providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
}

war {
    from 'src/main/webapp' // adds a file-set to the root of the archive
}

3.web.xml的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
        version="3.1"
        metadata-complete="false"
        xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

</web-app>

4.接口依赖查找需要用到配置文件dispatcher-servlet.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context.xsd
                        http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <context:component-scan base-package="repository.collect.controller"></context:component-scan>
    <mvc:annotation-driven></mvc:annotation-driven>
</beans>

5.一切就绪,开始服务端接口的开发:handleMessage.java类

@RestController
@RequestMapping("/repository")
public class handleMessage {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    public handleMessage() {}

    /**
     * 获得token接口
     * @param json 不同系统的唯一标识,可以生成唯一token返回
     * @return
     */
    @ResponseBody
    @RequestMapping(value="/getCollectTaskToken",method = RequestMethod.POST,
            produces = "application/json;charset=UTF-8")
    public String getCollectTaskToken(@RequestBody String json) {
        JSONObject jsonObject =  JSONObject.fromObject(json);
        String key = jsonObject.getString("key");

        String token = "";
        String msg = "token生成成功!";
        String response = "true";
        try {
            //先根据key从数据库表中查询,如果有则返回token; 如果没有则创建保存。
            Document doc = Mongodb.getMongoDb().getDatabase(Constant.MONGO_DB_NAME).getCollection(Constant.WEB_COLLECTION_TOKEN)
                    .find(Filters.eq("key",key)).first();
            if (doc!=null) {
                token = doc.getString("token");
            } else {
                //根据key生成唯一token,并生成json返回
                token = StringUtils.hash(key);
                //将系统的标识key和对应的token保存到mongodb中
                Mongodb.getMongoDb().getDatabase(Constant.MONGO_DB_NAME).getCollection(Constant.WEB_COLLECTION_TOKEN)
                        .insertOne(new Document("key",key).append("token",token));
            }
        } catch (Exception e) {
            logger.error("系统生成token失败:", e);
            msg = "token生成失败!";
            response = "false";
        }
        return "{\"msg\":\""+msg+"\",\"response\":\""+response+"\",\"token\":\""+token+"\"}";
    }

6.传递的参数是json字符串,接口处理返回也是json字符串。

7.使用gradle build命令打war包,在tomcat中部署。

8.客户端请求类:

public class TestWebCollection {

    //post提交调用方法
    public static String post(String uri, Map<String,Object> map) throws UnsupportedEncodingException {
        //所有的参数都放在map中,然后转换成json字符串传递到接口中
        String str = JSONObject.fromObject(map).toString();
        System.out.println("json参数:"+str);

        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(uri);
        httpPost.setEntity(new StringEntity(str, Charset.forName("utf-8")));
        try {
            HttpResponse response = httpClient.execute(httpPost);
            int statusCode = response.getStatusLine().getStatusCode();
            System.out.println("http返回码:"+statusCode);
            //如果返回状态是200,打印返回信息
            if (statusCode==200) {
                HttpEntity entity = response.getEntity();
                String entityStr = EntityUtils.toString(entity);
                System.out.println("客户端接收内容:"+entityStr);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

    public static void main(String[] args) throws UnsupportedEncodingException {
        Map<String,Object> map = new HashMap<>();

        //接口1
        map.put("key","IRR2_0");//有多少个参数,都可放在map中
        post("http://localhost:8080/webcollection/repository/getCollectTaskToken", map);
    }
}

客户端调用接口控制台日志内容如下:

json参数:{"key":"IRR2_0"}
http返回码:200

客户端接收内容:{"msg":"token生成成功!","response":"true","token":"d71161a15e23713aedc7cb4bd0438fc5"}

9.特别注意:项目在idea工具中使用关联的tomcat启动服务,接口的url是不需要项目名称的,如下:

"http://localhost:8080/repository/getCollectTaskToken"

而项目在tomcat中单独部署时,接口的url需要加上web项目名称“webcollection”,不然会报404。







从零搭建SpringMVC项目:IDEA手动配置全流程与核心原理详解 SpringMVC作为Java Web开发的核心框架,其核心原理基于前端控制器模式,通过DispatcherServlet统一处理请求,实现了控制器、模型与视图的解耦。这一设计为Web应用提供了清晰的请求处理流程和灵活的视图解析能力,其技术价值在于构建了结构清晰、易于维护的企业级应用基础。在应用场景上,无论是传统的基于XML配置的项目,还是需要深度定制的遗留系统,理解其手动配置过程都至关重要。本文以IDEA和Maven为工具,详细演示了从创建项目骨架、配置web.xml与DispatcherServlet, 阅读详情

相关推荐

Java Web开发实例:Spring+SpringMVC+Maven+Mybatis+MySQL

虽然Maven提供了大量现成的插件,但在某些情况下,我们可能需要开发自定义插件来满足特定的构建需求。自定义插件开发涉及编写Java类并使用Maven插件API。这些插件可以打包并分发给其他开发者使用,也可以在团队内部使用。

weixin_29155599的博客 1193

java rest tomcat_使用SpringMVC开发RestFul风格接口的java-web项目,tomcat部署并客户端访问...

1.使用intellij idea开发,gradle构建工程。webcollection模块就是接口所在项目模块,handleMessage类就是接口类。 2.接口项目模块的build.gradle配置文件内容如下:apply plugin: 'java'apply plugin: 'idea'apply plugin: 'war'group = 'com.cloudcollection'arch...

weixin_28862967的博客 271

SpringMVC框架详解与项目实战模板

SpringMVC 是基于 Spring 框架的轻量级 Web 框架,遵循 MVC(Model-View-Controller)设计模式,通过分离业务逻辑、数据展示与用户交互提升开发效率与系统可维护性。其核心组件包括Controller和,共同完成请求分发、处理与响应。相比传统 Servlet/JSP 开发,SpringMVC 提供了更清晰的结构、更强的解耦能力及丰富的注解支持,成为现代 Java Web 开发的主流选择。

weixin_36173034的博客 851

Restful风格简介及在Spring MVC中使用Restful风格CRUD及参数转换和验证

Restful风格简介及在Spring MVC中使用Restful风格CRUD及参数转换和验证

ttxs_10的博客 1010

基于Tomcat与Android的简易在线音乐播放器系统

继续以音乐播放器为例,我们需要围绕Song实体构建完整的CRUD操作接口。以下是增强版的SongMapper接口定义:其中部分方法可通过注解方式直接写SQL,如@Select,但复杂语句仍建议放在XML中维护。对应的XML映射文件补充如下:</update></delete>代码解释:@Param注解用于指定参数别名,在多参数传递时尤为必要,否则MyBatis无法识别形参名。<update>和<delete>返回受影响行数,可用于判断操作是否成功。

weixin_35414260的博客 1070

restful接口实现Demo

result接口实现的Demo,下载解压放入到tomcat中启动,然后运行里面的client方法,帮助了解restful编写

SpringMVC实现Restful风格的WebService

1.环境 JDK7 MyEclipse2014 tomcat8 maven 3.3.3 spring4.1.4 2.创建maven工程   使用MyEclipse创建maven工程的方式可以参考这篇博文(链接1), 该博文中的第四小结是关于如何创建SpringMVC+maven教程。下面只给出创建好的目录结构,其中的部分文件如java程序是后面要完成的。    3.指定依赖文件   m...

被罚站的树 114

AUTOSAR网络管理配置详解:Vector DaVinci工具全面讲解

手把手带你用Vector DaVinci完成AUTOSAR网络管理模块的配置,涵盖NmChannel、NmPdu、重复帧抑制等关键参数设置,深入解析CAN总线上的NM报文调度与唤醒机制,助你扎实掌握AUTOSAR网络管理核心实践。

weixin_42504649的博客 168

使用Spring MVC实现RESTful接口(详细-初级)

作为编程界新人,这两天接到老大的指示,先去拿Spring MVC实现RESTful接口,熟悉一下以前的技术。这个时候脑袋好大,java都忘得差不多了,更何况用Spring搭建MVC。没办法只能用度娘来帮忙了,可是网上各种说法,各种迷糊,终于找到了一篇比较适合新手的博文,再此表示感谢。 下文为转载: 下面我把我用到的相关软件版本列一下,虽然我不知道这些有什么关系,但是,还是列一下吧,

magic_hwz的博客 1万+

feko金属球远场RCS双站

feko金属球远场RCS双站

a264672的博客 6912

基于STM32的超声波流量计设计

本项目基于STM32微控制器设计了一种超声波流量计,采用时间差法测量液体或气体的流速,计算流量并通过显示屏实时显示,同时支持远程数据传输。本设计通过STM32微控制器实现了基于时间差法的超声波流量计,集成了超声波信号采集、流量计算、状态显示和远程通信功能。本系统需要实现超声波信号的实时采集与处理,计算流速和流量,并将数据通过OLED显示和无线模块上传。系统需具备高精度的时间测量能力和良好的抗干扰能力。通过计算超声波在顺流和逆流方向上的传播时间差,结合管道直径与流体特性,计算流速并进一步计算流量。

stm32d1219的博客 2350

使用Java技术创建RESTful Web服务

JAX-RS(JSR-311)是在Java EE环境中提供RESTful服务功能的规范。 它有望为您提供传统的基于SOAP的Web服务的可行替代方案。 在本文中,了解JAX-RS的主要组件。 一个示例说明了企业如何使用JAX-RS中的功能以RESTful方式公开员工联系信息。 背景 多年来,开发人员已经使用各种工具在其Java应用程序中创建RESTful服务。 凭借REST体系结构...

cuyi7076的博客 716

光斑定位 - MATLAB实现

光斑定位是一种常见的图像处理任务,它涉及到在图像中准确定位光斑或亮点的位置。在本篇文章中,我们将使用MATLAB来实现光斑定位的算法,并提供相应的源代码。希望本文提供的MATLAB代码和步骤能够帮助您实现光斑定位任务。通过这些代码,您可以在MATLAB环境中轻松地定位光斑,并在图像上进行可视化展示。这样,我们就完成了光斑定位算法的MATLAB实现。通过以上步骤,我们可以得到一个在光斑位置上标记的图像,从而实现了光斑的准确定位。光斑定位 - MATLAB实现。

qq_39605374的博客 764

SpringMVC 从入门到实战:Web 基础 + 核心原理 + 案例解析

Web 服务器是 “硬件 + 软件” 的组合:硬件:一台能对外提供网络服务的电脑(如阿里云 ECS)软件:接收浏览器请求、返回资源的程序(如 Tomcat、Nginx)常见 Web 服务器对比服务器特点适用场景Tomcat轻量、开源、支持 Servlet/JSP开发环境、中小型应用Weblogic重量级、收费、支持 JavaEE 全规范企业级大型应用JBoss开源、支持微服务中间件集成场景SpringMVC 是 Spring 生态中负责表现层。

2301_78921591的博客 1383

【护网必备】Windows平台shellcode免杀加载器

bypass:McAfee、金山(数字签名)、火绒、ESET、卡巴企业版(时间5s 抖动50 Sleep_mask)、360全家桶(物理机)、Norton(加白程序资源)、WDF(PC)、WDF(Server)、Symantec(加白程序资源)bypass:金山(数字签名)、火绒、ESET、360全家桶(物理机)、WDF(PC)、WDF(服务器提示复查(关云保护))、McAfee、Norton(加白程序资源)、卡巴企业版(时间5s 抖动50 Sleep_mask)必须使用Bof操作,shell运行就掉线。

Fly_鹏程万里 1186

无人机:DJI Matrice 600 Pro_(8).DJI_Matrice_600_Pro_负载能力

在一些高级应用场景中,可能需要自定义开发负载设备。

zhubeibei168的博客 1341

【亲测免费】 Java Web接口开发Demo

Java Web接口开发Demo 去发现同类优质开源项目:https://gitcode.com/ 欢迎使用Java Web接口开发示例。本项目旨在为初学者及开发者提供一个简单的Java Web接口开发参考,通过这个Demo,您可以学习到如何搭建基础的Java Web服务,实现API接口的开发与调用。此 Demo 的详细说明和步骤解析可参阅 优快云博客文章,但请注意,直接链接在本文档中不可用。 ...

gitblog_09783的博客 321

【推荐100个unity插件】制作美丽 Unity 景观,增强Terrain材质表现的插件——GTS

GTS地形着色器是一款专为Unity设计的强大工具,可解决地形纹理绘制和光照处理的难题。它提供一键式配置,支持实时调整地形效果,包含细节注入、高度混合、雪注入等核心功能,并兼容网格地形和低多边形模型。插件完美集成Gaia天气系统,支持HDRP细分效果。安装后通过GTS管理器创建配置文件并应用到地形,即可快速生成高质量地形渲染。其模块化设计包含全局设置、网格转换和细节调整等面板,使开发者能灵活控制地形表现,显著提升视觉效果与性能表现。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1566

使用CXF+spring+restful创建一个web的接口项目

此文为使用CXF+spring创建一个web的接口项目的下文,在其基础上添加restful功能1、添加restful的所需jar包 jsr311-api-1.0.jar CXF与JAX-RS版本对应问题,参考自:http://bioubiou.iteye.com/blog/1866871 CXF支持REST风格的Web服务:JAX-RS2.0(JSR-339)和JAX-RS1.1

YLBF_DEV的专栏 3007

HTML炫酷烟花④(完整代码)

HTML语言实现炫酷烟花的完整代码。

AIGC 9万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SpringMVC

SpringMVC入门、Postman、接收请求参数、统一异常处理、Restful、SpringMVC的常用注解、响应码状态

qq_58478983的博客 2689

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

springMVC开发手册

MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分M:Model,模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器MVC的工作流程: 用户通过视图层发送请求到服务器,在服务器中请求被Controller接收,Controller调用相应的Model层处理请求,处理完毕将结果返回到Controller

AlbenXie的博客 712

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Http传输json进行服务端接口与客户端对接,以及restful实现

原文地址:https://blog.youkuaiyun.com/u011320740/article/details/53537484 话不多说,直接贴代码,照写就好了 服务端接口编写,我用的是springmvc,服务端接口其实和平时web开发一样,就是返回出json就好了,还有就是接受数据也是json,方法如下: @Controller @RequestMapping("/user") pub...

杨春建的博客 8097

【SpringBoot框架篇】1.搭建第一个springboot项目

文章目录简介特点搭建第一个springboot项目创建项目添加web接口配置启动端口启动程序idea中启动编译成jar包后启动 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新的应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(快速应用程序开发)成为领导者。 特点 .创建独立的Spring应用程序 .嵌入的Tomcat,无需部署WAR文件 .简

皓亮君的博客 3631

SpringIn28Minutes项目详解:从Todo应用看Spring MVC开发全流程

SpringIn28Minutes是一个面向初学者的Spring教程项目,通过实际的Todo应用案例,完整展示了Spring MVC开发的全流程。本项目不仅包含基础的Spring框架使用,还提供了从数据层到表现层的完整实现,帮助开发者快速掌握Spring MVC的核心概念和实际应用。 ## 项目结构概览 SpringIn28Minutes项目采用模块化结构设计,主要分为多个示例模块,其中与Sp

gitblog_00186的博客 142

SpringBoot Web开发基础入门

SpringBoot Web是SpringBoot体系中用于构建Web应用的核心模块,核心依托SpringMVC实现HTTP请求处理、接口开发、页面交互等Web核心能力,同时对SpringMVC进行全自动配置,无需手动编写XML配置文件、无需手动部署服务器。其核心内置能力涵盖Web开发全流程,完全适配常规Web项目开发需求:RESTful风格HTTP接口CURD开发,支持GET、POST、PUT、DELETE等标准请求方式内置嵌入式Tomcat服务器,无需单独部署外置服务器,项目可直接启动运行。

只要肯攀登,终有登顶时 300
上一篇: ECharts通过Ajax动态加载数据到图表
下一篇: Git:克隆项目到本地,以及一些常用命令
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值