使用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

别再死记硬背注意力机制了!用Python+PyTorch从零实现一个HAN(Hierarchical Attention Network)

本文详细介绍了如何使用Python和PyTorch从零实现Hierarchical Attention Network(HAN),通过代码级解析帮助读者深入理解层次注意力机制。文章涵盖词级和句子级注意力层的构建、完整HAN架构的实现、训练技巧及注意力可视化方法,特别适合希望掌握高级NLP技术的开发者。

weixin_28744423的博客 163

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

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

magic_hwz的博客 1万+

大疆无人机地理视频制作全流程:从SRT文件到GIS叠加(附实战避坑指南)

本文详细解析了大疆无人机地理视频制作全流程,从解析SRT文件中的位姿数据,到在GIS软件中构建地理视频工程并生成可分发的文件。文章重点介绍了地理视频的核心概念、数据处理实战技巧,并探讨了其在应急响应、工程巡检等场景的高级应用与精度边界,为GIS工程师和无人机爱好者提供了一份实用的避坑指南。

river的博客 465

DSPF28335:从零到一,实战GPIO与外部中断的嵌入式系统交互设计

本文以德州仪器DSPF28335芯片为例,详细讲解了嵌入式系统中GPIO与外部中断(EXTI)的实战配置方法。通过一个完整的按键控制LED并触发ADC采样的项目,深入剖析了GPIO寄存器配置、三级中断机制(外设-PIE-CPU)以及中断服务函数编写的核心要点,帮助开发者掌握嵌入式交互设计的基石,并提供了关键的避坑指南与调试清单。

weixin_29169899的博客 115

使用Java技术创建RESTful Web服务

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

cuyi7076的博客 716

奇安信 2025 年护网蓝队初选笔试题(附答案解析)

熬夜为大家整理了 奇安信 2025 年护网蓝队初选笔试题,(关注我我会持续更新)涵盖 SQL 注入、Web 安全、渗透测试、二进制安全 等核心知识点,并附上详细答案解析,助力大家高效备考!12.下列关于虚表指针描述正确的是(1.5分)✅ B. 虚表指针存储的是虚表的首地址❌ A. 任何类对象都存在虚表指针(仅含虚函数的类有)❌ C. 虚表指针位于对象内存空间的起始处(由编译器决定)❌ D. 虚表指针是否存在不影响对象所占内存空间的大小(存在时会增加指针大小)📌 解析:虚表指针(vptr)用于实现多态,指向

Aishenyanying33的博客 4699

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

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

2301_78921591的博客 1383

量子阱技术解析:从基础原理到前沿应用

本文深入解析量子阱技术,从微观“能量游泳池”的基础原理出发,阐释了其通过限制电子实现能级量子化,从而精确调控发光波长的核心机制。文章详细探讨了量子阱在半导体激光器和LED中的革命性应用,如实现低阈值电流与高亮度显示,并展望了其在能带工程及量子级联激光器等前沿领域的发展与挑战。

weixin_29267307的博客 282

多测师肖sir_高级金牌讲师_数据库之存储练习题(8.13.1)

实验 一、 实验要求: 理解存储过程的概念 掌握存储过程的语法格式、使用方法 掌握存 储过程的创建、执行 二、实验前提: – drop table if exists student; – Create table student – (Id varchar(255), #学号 – Name varchar(255), #姓名 – Roomid varchar(255), #班级 – Sex char(1), #性别 – Degree varchar(3) );#成绩; Insert into stud

多测师肖sir的博客 708

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

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

gitblog_09783的博客 321

化工设计软件:AVEVA E3D二次开发_(8).管道系统设计

在 AVEVA E3D Design 中,管道规格的定义是确保设计一致性和标准化的关键。通过二次开发,可以自动生成并管理管道规格。下面是一个示例,展示如何通过编写脚本来定义和管理管道规格。# 导入必要的库 import clr。

kkchenjj的博客 978

使用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

【异常】XXL-job触发调度:address:http://192.168.x.x:x/ code:500 msg:xxl-rpc remoting error(connect timed out)

XXL-JOB调度任务失败分析:调度中心(10.254.234.80)与执行器(192.168.x.x)连接超时,返回500错误。主要原因是网络不通或执行器异常:1.网络不通可能由防火墙或网段隔离导致;2.执行器未启动或端口未监听;3.地址配置错误。解决方案:1.关闭代理使用内网;2.测试网络连通性和端口可用性;3.检查执行器进程状态和端口监听情况;4.核对执行器地址配置;5.必要时配置防火墙规则放行端口。

奶爸的编程之路,也就一周冷个三天 414

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SpringMVC

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

qq_58478983的博客 2689

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

springMVC开发手册

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

AlbenXie的博客 712

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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、付费专栏及课程。

余额充值