SpringMVC如何实现restful接口
今天看一个SpringMVC的项目,然后编写接口,并通过前台的ajax调用来访问接口,当然这所有的一切好像都没有什么问题,你看下面是我们的ajax,
function sendMessage() {var curPath=window.document.location.href; var pathName=window.document.location.pathname; var pos=curPath.indexOf(pathName); var localhostPaht=curPath.substring(0,pos); var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); var params={"name":"wangdneggao"}var json = JSON.stringify(params);$.ajax({url : localhostPaht + projectName+"/demo/index",data:json,type : 'post',contentType : 'application/json;charset=utf-8',success : function(data) {console.log(data);},error : function(error) {console.log('接口不通' + error);}});}sendMessage();
调用后台的demo/index这个接口,但是访问了半天可以总是提示404
如下:
出现这样的结果当然是让人和头疼的因为这个问题,我调试一天,工程重新搭建,重新搭建,就这样
但是到最后的时刻,问题还是解决了,让人还是能看到一些生活的希望
听说SpringMVC的配置很重要,那么我们首先从pom.xml文件说起:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.wdg.SqzpAdmin</groupId><artifactId>SqzpAdmin</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><build><finalName>SqzpAdmin</finalName><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><configuration><path>/SqzpAdmin</path><port>8080</port><uriEncoding>UTF-8</uriEncoding><server>tomcat7</server></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.0</version><configuration><source>1.7</source><target>1.7</target></configuration></plugin></plugins></build><properties><spring.version>4.0.5.RELEASE</spring.version></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><!-- https://mvnrepository.com/artifact/log4j/log4j --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency></dependencies>
</project>
上面是一个非常简单的SpringMVC,里面用到的使用到的依赖都是最为基础的依赖,那么下下面是web.xml
当然仅仅配置一个转发器就行了:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5"><display-name>SqzpAdmin</display-name><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.html</welcome-file></welcome-file-list></web-app>
这些都配置好了之后要做的事情是:SpringMVC-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:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.2.xsdhttp://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util-4.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd"><!-- 解决中文乱码 --><mvc:annotation-driven><mvc:message-converters register-defaults="true"><bean class="org.springframework.http.converter.StringHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/plain;charset=UTF-8</value><value>text/html;charset=UTF-8</value><value>application/json;charset=UTF-8</value></list></property></bean></mvc:message-converters></mvc:annotation-driven><bean id="utf8Charset" class="java.nio.charset.Charset"factory-method="forName"><constructor-arg value="UTF-8" /></bean><bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter" /><beanclass="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/" /></bean><!-- 静态资源处理 --><mvc:default-servlet-handler /><mvc:annotation-driven /><context:component-scan base-package="com.wdg.controller"></context:component-scan>
</beans>
还有一个是controller:
package com.wdg.controller;import java.io.IOException;import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import com.wdg.util.BuildJsonOfObject;@Controller
@RequestMapping("/demo")
public class DemoController {private Logger log;public DemoController() {this.log = Logger.getLogger(this.getClass());}@RequestMapping("/index")public String index(@RequestBody String params) {log.info("-----------------开始addcomment------------------------------------");log.info("-----------------结束addcomment------------------------------------");return BuildJsonOfObject.buildJsonOfString("demo");}@RequestMapping(value = "/addcomment", produces = "application/json; charset=utf-8")public @ResponseBody String addComment(@RequestBody String params) throws IOException {log.info("-----------------开始addcomment------------------------------------");log.info("-----------------结束addcomment------------------------------------");return params;}
}
上面就是简单的工程了,但是访问一直出现404,原因是因为我们需要在接口的前面加上:@ResponseBody 这个注释,问题就解决了,希望对你有所帮助
SpringMVC如何实现restful接口相关推荐
- java restful接口开发实例_Spring Boot 中 10 行代码构建 RESTful 风格应用!
点击上方"Java后端技术",选择"置顶或者星标" 你关注的就是我关心的! 作者:江南一点雨 微信公众号:牧码小子(ID:a_javaboy) 推荐阅读:10个 ...
- Swagger+Spring mvc生成Restful接口文档
2019独角兽企业重金招聘Python工程师标准>>> Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端 ...
- feignclient注解使用_从 Feign 使用注意点到 RESTFUL 接口设计规范
最近项目中大量使用了Spring Cloud Feign来对接http接口,踩了不少坑,也产生了一些对RESTFUL接口设计的想法,特此一篇记录下. SpringMVC的请求参数绑定机制 了解Feig ...
- 三种方法实现调用Restful接口
1.基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...
- RESTful 接口设计
文章目录 RESTful 接口设计 1.获取所有员工列表 2.增加一个员工 3.更新员工 4.删除员工 5.查询单个员工 RESTful 接口设计 1.获取所有员工列表 /*** 获取所有员工* 1. ...
- restful接口开发实例_Spring Boot 中 10 行代码构建 RESTful 风格应用
松哥原创的四套视频教程已经全部杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程 RESTful ,到现在相信已经没人不知道这个东西了吧!关于 RESTful 的概念 ...
- java创建restful接口,三种方法实现java调用Restful接口
转自:https://www.cnblogs.com/taozhiye/p/6704659.html 引言:当前,web开发中第三方接口的选择往往是在restful接口和web service 接口 ...
- springfox源码_【开源项目】springfox-bridge:随心所欲地为非restful接口生成API文档...
一.引言 目前,利用swagger框架为restful接口编写API文档非常流行,在spring web项目中,利用springfox+swagger更是可以通过注解的方式直接进行API文档的生成,这 ...
- vue项目构建实战基础知识:SPA理解/RESTful接口介绍/static目录配置/axios封装/打包时map文件去除...
一.SPA 不是指水疗.是 single page web application 的缩写.中文翻译为 单页应用程序 或 单页Web应用,更多解释请自行搜索. 所有的前端人员都应该明白我们的页面的 u ...
最新文章
- 知名财经大V称:京东金融遇到了点“问题”!
- Linux学习 Unit 12
- 基于多种服务的地理位置查询系统
- 数学系列 - 概率论 - 泊松分布和(负)指数分布
- 数据结构-顺序查找的二分查找法(折半查找)
- SAP UI5 应用开发教程之二十三 - 列表控件的排序 Sort 和分组 Group
- python 将图片旋转多个角度_【技术】把你的朋友变成表情包?Python:So easy
- java 创建文件夹的方法_java中创建文件夹的方法
- 动图图解 | Go 的 timer 是如何被Runtime调度的?
- C#网站发布在IIS10上,Access数据库读取为空白的解决方案
- 苹果Mac经典办公套件:Microsoft 365 支持辅助功能,高效工作
- mysql数据库事务实现方式_mysql事务的实现原理
- mtk刷机报错4032专业维修教程(图文)
- 我的数学之美(一)——RANSAC算法详解
- EPON联通网关超级管理员密码获取办法
- 深入浅出内存马(一)
- DSP 性能 GMAC 和 GFLOP含义
- php 设置数字键盘,window_win10启动时如何设置默认打开小键盘数字输入切换键?,win10作为微软的一次重大变革 - phpStudy...
- Sigma Designs SMP8910媒体处理器的3DTV、蓝光和OTT体验
- [附源码]计算机毕业设计JAVA旅游网站