spring mvc搭建web services
来源:互联网 发布:python range函数菜鸟 编辑:程序博客网 时间:2024/05/22 15:27
问题背景
这两日在处理上司交给的任务的时候接触到了web services,感觉这个跨越语言还有环境的接口调用方式真的是非常之优雅,于是就想着自己能不能试着实现一下。
技术选型&&准备
在技术的选型上初期的话遇到了比较多的问题,也看到了网上非常多的技术方案,在茫茫的信息流中还是看到了一款非常适合我的方案,那就是spring mvc。
当然,第一件需要我们做的事情就是首先将项目需要依赖的jar包全部引入,在此奉送我的pom.xml文件的内容。
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.6</version></dependency><dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>3.2.9.RELEASE</version></dependency>
具体步骤
废话不多说,进入我们今天的主题,如何利用spring mvc搭建web services。建立项目什么的鄙人就不在多言。主要说的是:如何配置。
配置web.xml文件
配置web.xml文件,因为我们的web项目一旦部署到web容器中去,首先加载的就是这个文件,可以说,这是我们配置的起点,俗话说得好,打蛇打七寸,我们就首先从这里入手:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><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_3.xsd" id="WebApp_ID" version="2.3"> <display-name>web services</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 服务器启动即自动加载 --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <!-- 指定配置文件的位置 --> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping></web-app>
这里其实也没有什么好配置的,基本就是老一套,但凡跑过spring mvc的小伙伴都看的出来这里没有什么不一样。
配置spring-mvc.xml
从上面我们可以看到,在springmvc默认的dispatcherservlet中我们读取了spring-mvc.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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.5.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.5.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsdhttp://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util-2.5.xsd"> <!-- 使能注解 --> <context:annotation-config /> <!-- 制定扫描注解的base包 --> <context:component-scan base-package="com.weimob.webservices.controller" /> <!-- 配置mvc的注解映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> <!-- 配置适配器 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /></beans>
从上面的配置我们可以看到,出现了两个在以往的配置中不会出现的类,那就是DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter,这里的话这两个类主要是用来做返回参数的适配的,也就是说你返回一个对象的话,其会自动适配为json格式的字符串。但是,今天我们并没有采取这样的方式,下面将会详细说明。其实着重强调这里的原因是这里体现了java的一种设计模式,适配器模式。
@Controller层的书写
Controller层的书写是最后的重中之重,下面,让我们来看看:
package com.weimob.webservices.controller;/** * proxy</br> * @author fulei.yang * */@Controllerpublic class TestController { private static final String DEFAULT_CHARSET = "UTF-8"; private static final String DEFAULT_CONTENT_TYPE_NAME = "content-type"; private static final String DEFAULT_CONTENT_TYPE_VALUE = "application/json;charset=UTF-8"; @RequestMapping(method = RequestMethod.POST, value = "/testpost") public void testPost(HttpServletRequest httpRequest, HttpServletResponse httpResponse) { // 输出的时候规范编码格式 httpResponse.setCharacterEncoding(DEFAULT_CHARSET); httpResponse.setHeader(DEFAULT_CONTENT_TYPE_NAME, DEFAULT_CONTENT_TYPE_VALUE); // 写入传送到客户端的内容 try { PrintWriter pWriter = httpResponse.getWriter(); Customer customer = new Customer("fulei", "man", "age"); pWriter.print(JSON.toJSONString(customer)); pWriter.flush(); pWriter.close(); } catch (IOException e) { e.printStackTrace(); } }}
从上面的内容我们可以看到这样的几个注解,下面一一说明:
到了这一步,我们的开发任务也就已经做完了,接下来进入测试阶段。
测试
首先将我们的应用部署到服务器上去,我在这里使用的是postman进行测试的,在路径输入:
http://localhost:8080/testpost
然后提交请求即可,具体的图就不在这里放出来了,对了,代码里面的Customer类是我本地的一个POJO类,这个不是什么重点问题。就不在多言了。
总结
我发现在网上写这个方面的资料都是一笔带过,很不适合我这样的小白。其实在做的过程中遇到了很多坑,比如说:
1:在配置spring-mvc.xml文件的时候就因为缺少了xsd文件吃亏了。
2:在方法中输出到pWriter的时候没有设置编码格式导致乱码。
3:以为这个方法必须返回,要不然Client拿不到数据。其实完全不是这样的。
当然,有一颗折腾的心,有啥问题解决不了呢?你说是吧?这篇文章只是一个大概的总结,到时候会对web services在进行比较详细的总结的。
题外话
欢迎大家到我的个人博客HenryMemory’s Blog。谷歌一下wangmeng1314也可以偶!
HenryMemory’s Blog
- spring mvc搭建web services
- Spring MVC RESTFul Web Services
- Spring-web-mvc环境搭建
- 搭建 spring + spring mvc +mybatis web项目
- How to write RESTful web services using spring 3 mvc
- Spring MVC 4 RESTFul Web Services CRUD Example+RestTemplate
- Web Services环境搭建
- Web Services环境搭建
- Web Services环境搭建
- web框架之Spring-MVC环境搭建
- web框架之Spring-MVC环境搭建 .
- web框架之Spring-MVC环境搭建
- maven搭建spring mvc web项目
- web框架之Spring-MVC环境搭建
- web框架之Spring-MVC环境搭建
- web框架之Spring-MVC环境搭建
- web框架之Spring-MVC环境搭建
- spring mvc web应用程序框架的搭建
- 中国剩余定理:从构造特解到找出通解
- unicode 编码 javascript
- 最大熵疑难辨析
- 营销调研
- Mac rtfs isn't recognize question
- spring mvc搭建web services
- Educational Codeforces Round 15
- 面试题64:数据流中的中位数
- 实现数字向人民币大写转换
- 鸽巢原理(初识)(纯算法)
- 初识ReactJS的组件化开发(六):ajax更新评论列表时的定时器bug修改
- 在 Win7/Win8下使用 VirtualBOX虚拟机安装 OS X 10.11 El Capitan 及 Xcode 7.0
- POJ-1125-Stockbroker Grapevine
- LRU算法