1 工程创建
1.1 单根DispatcherServlet配置
<web-app> <display-name>Archetype Created Web Application</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:WEB-INF/root-context.xml</param-value> </context-param> <servlet> <servlet-name>mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:WEB-INF/mvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>
1.2 root-context配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!-- 扫描包不扫描controller包 --> <context:component-scan base-package="mvc"> <context:exclude-filter type="regex" expression="mvc.controller.*"/> </context:component-scan> </beans>
1.3 mvc-servlet配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!-- 扫描controller包 --> <context:component-scan base-package="mvc.controller"/> <!-- 启用支持Restful结构的配置,pom需要导入jackson包 --> <mvc:annotation-driven/> </beans>
1.4 pom配置
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.8.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.8</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.8</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.8.8</version> </dependency> </dependencies>
1.5 UserController
package mvc.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import mvc.bean.User; @RestController @RequestMapping("user") public class UserController { private static User user = new User(); @GetMapping("{id}") public User getUser(@PathVariable Long id) { if(user != null && id.equals(user.getId())) { return user; } return new User(); } @PostMapping("add") public String addUser(@RequestBody User user) { this.user.setId(user.getId()); this.user.setName(user.getName()); return "ok"; } }
1.6 User对象
package mvc.bean; public class User { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return this.id + this.name; } }
1.5 项目完整结构
2 启动和测试项目
2.1 启动成功信息
信息: Initializing Spring FrameworkServlet 'mvc' 六月 19, 2017 7:13:49 下午 org.springframework.web.servlet.DispatcherServlet initServletBean 信息: FrameworkServlet 'mvc': initialization started 六月 19, 2017 7:13:49 下午 org.springframework.web.context.support.XmlWebApplicationContext prepareRefresh 信息: Refreshing WebApplicationContext for namespace 'mvc-servlet': startup date [Mon Jun 19 19:13:49 CST 2017]; parent: Root WebApplicationContext 六月 19, 2017 7:13:49 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 信息: Loading XML bean definitions from class path resource [WEB-INF/mvc-servlet.xml] 六月 19, 2017 7:13:50 下午 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping register 信息: Mapped "{[/user/{id}],methods=[GET]}" onto public mvc.bean.User mvc.controller.UserController.getUser(java.lang.Long) 六月 19, 2017 7:13:50 下午 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping register 信息: Mapped "{[/user/add],methods=[POST]}" onto public java.lang.String mvc.controller.UserController.addUser(mvc.bean.User) 六月 19, 2017 7:13:50 下午 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter initControllerAdviceCache 信息: Looking for @ControllerAdvice: WebApplicationContext for namespace 'mvc-servlet': startup date [Mon Jun 19 19:13:49 CST 2017]; parent: Root WebApplicationContext 六月 19, 2017 7:13:50 下午 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter initControllerAdviceCache 信息: Looking for @ControllerAdvice: WebApplicationContext for namespace 'mvc-servlet': startup date [Mon Jun 19 19:13:49 CST 2017]; parent: Root WebApplicationContext 六月 19, 2017 7:13:50 下午 org.springframework.web.servlet.DispatcherServlet initServletBean 信息: FrameworkServlet 'mvc': initialization completed in 707 ms 六月 19, 2017 7:13:50 下午 org.apache.coyote.AbstractProtocol start 信息: Starting ProtocolHandler ["http-nio-8080"] 六月 19, 2017 7:13:50 下午 org.apache.coyote.AbstractProtocol start 信息: Starting ProtocolHandler ["ajp-nio-8032"] 六月 19, 2017 7:13:50 下午 org.apache.catalina.startup.Catalina start 信息: Server startup in 2239 ms可以看到一个post和一个get接口已经注册成功了。
2.2 注册一个用户
2.3 获取注册的用户
请求id不是123时返回的数据
是123时返回的数据
相关推荐
假设我们需要构建一个简单的 RESTful Web Services 来管理用户数据。我们可以按照以下步骤来实现: 1. **定义资源**:确定需要暴露的资源,例如用户列表 `/users`。 2. **设计 URL**:为用户资源设计 URL,例如...
- **Restlet's Lightweight REST**:一个轻量级的REST客户端和服务端框架,适用于构建简单高效的RESTful应用。 - **JBoss's JAX-RS RESTEasy**:基于JAX-RS标准的RESTful框架,提供了一系列扩展来简化RESTful服务...
总的来说,"RESTful Web Service Demo"项目是一个实践性的教程,它向我们展示了如何使用Java和Spring Boot来创建一个支持CRUD操作的RESTful服务,这在现代Web开发中是非常常见的需求。通过学习和实践这个示例,...
本示例是关于如何使用C#语言创建一个简单的RESTful服务端以及对应的RESTful客户端。以下是相关知识点的详细说明: 1. **RESTful原则**:REST(Representational State Transfer)的核心思想是资源(Resource)和...
### 一个简单的RESTful例子及深入讲解 #### REST简介与核心概念 REST(Representational State Transfer,表象性状态转移)是一种软件架构风格,尤其适用于Web服务的设计。它利用现有的互联网标准和技术,如HTTP、...
- **Inventory服务**:一个简单的示例服务,用于处理库存相关的请求。 - **REST和MVC模式**: - **Model**:代表数据模型,如数据库中的记录。 - **View**:展示数据的方式,例如HTML页面。 - **Controller**:...
- **系统分层**:一个典型的RESTful Web服务通常分为几个层次,包括表示层、业务逻辑层和数据访问层等。这种分层有助于保持各部分功能独立且易于维护。 - **按需编程**:根据实际需求逐步开发和实现功能。这不仅适用...
- **第一个项目**:通过创建一个简单的 Web API 项目来引导读者熟悉 .NET Core 的基本操作流程。 ### 第二章:构建初始框架 —— 奠定应用基础 - **项目结构**:讲解如何组织代码,包括使用不同的命名空间来分离...
【描述】:本文档将指导您如何使用 Spring Cloud 创建一个简单的 RESTful Web 服务。我们将通过一个"Hello World"示例来演示如何设置和运行服务,该服务能够响应 HTTP GET 请求,并以 JSON 格式返回问候消息。 ...
在本文档中,我们将探讨如何使用Spring Cloud构建一个RESTful的Web服务。REST(Representational State Transfer)是一种架构风格,常用于构建现代、可扩展的Web服务。Spring Cloud是Spring框架的一个扩展,它提供了...
在本项目中,我们将探讨如何使用Spring Boot框架创建一个简单的RESTful Web Service。Spring Boot以其简洁的配置和快速开发能力,已经成为Java开发人员构建微服务的首选工具。RESTful Web Service是一种基于HTTP协议...
RESTful Web服务是一种基于HTTP协议的轻量级Web服务设计风格,它强调...提供的压缩包文件揭示了一个典型的Java Maven项目的结构,其中包含了源代码、构建配置以及第三方库,这些都是开发和部署RESTful服务所必需的。
开发RESTful Web服务时,选择一个强大的集成开发环境(Integrated Development Environment, IDE)可以帮助提高效率。例如,IntelliJ IDEA或Eclipse都是很好的选择。 为了让服务可执行,我们需要配置相应的启动类,...
.NET Core 提供了一个轻量级的开发环境,可以用于构建各种类型的应用程序,包括 Web 应用、命令行应用等。 **2. RESTful 设计原则** RESTful 架构遵循一组特定的设计原则,这些原则使得 RESTful API 更加统一和易于...
**Python-Flask的可浏览WebAPI:一个强大的Flask RESTful框架** Flask是一个轻量级的Python Web开发框架,它以其灵活性和简洁性深受开发者喜爱。在Flask的基础上,为了实现更高效的RESTful API设计,我们可以使用...
例如,在一个RESTful的采购系统中,每个采购订单都有其唯一的URI。 - **资源表示**:资源是通过交换资源的表示形式来进行操作的。例如,一个采购订单资源可能被表示为一个XML文档。当需要更新这个采购订单时,可以...
它提供了一个简单的模型-视图-控制器(MVC)结构,允许开发者通过定义路由、视图函数和模板来创建动态网页。 2. **RESTful API** REST(Representational State Transfer)是一种软件架构风格,用于设计网络应用...