首先我们要确保taotao-sso-web工程依赖了taotao-sso-interface工程以及是否依赖了jackson相关包(用来将对象转为json的),查看"Maven Dependencies"下的包,如果有taotao-sso-interface以及下图圈住的三个jackson包说明已经依赖好了。如果没有则要添加对它的依赖。
下面我们添加对dubbo服务的引用(<dubbo:reference interface="com.taotao.sso.service.UserService" id="userService" />),如下图所示。
下面我们新建一个Controller类,如下图所示。
Controller代码如下:
package com.taotao.sso.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.taotao.common.pojo.TaotaoResult;
import com.taotao.sso.service.UserService;
/**
* 用户处理Controller
* @author xxxxxxxx
*
*/
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/user/check/{param}/{type}")
@ResponseBody
public TaotaoResult checkUserData(@PathVariable String param,@PathVariable Integer type){
TaotaoResult result = userService.checkUserData(param, type);
return result;
}
}
下面我们来测试一下这个接口是否好用。
在测试之前,我们要先把taotao-sso-service工程下的spring目录下的applicationContext-Activemq.xml文件给删除掉(当时建工程的时候我忘记删了),否则会影响工程启动,去掉那个文件之后,spring目录下就只剩下四个配置文件了,如下图所示。
先将taotao-sso工程打包到本地maven仓库,方法就是在taotao-sso工程上右键------>Run As------->Maven install
下面我们便依次启动taotao-sso-service和taotao-sso-web工程,用tomcat插件启动工程前面多次说到了,就是在工程上右键------>Run As------>Maven Build,然后就会看到如下图所示对话框,我们在Goals一栏输入"clean tomcat7:run"然后点击"Apply"之后再点击"Run"这样taotao-sso-service工程便开始启动了,同理我们启动taotao-sso-web工程。
启动好之后,我们在地址栏中输入http://localhost:8088/user/check/zhangsan/1,可惜的是,我们会看到如下图所示的错误(这里之所以没有事先把错误都排查掉是为了和大家一起学习下如何解决问题)
404错误是找不到对应的接口,也就是我们的访问请求并没有被拦截,这是由于taotao-sso-web工程的web.xml文件配置过滤条件造成的,如下图所示,可以看到当前配置的拦截请求是以"*.html"结尾的,
那么我们不妨在请求地址的最后加上.html结尾,如下图所示,404问题虽然没了,但出来个406错误,出现406错误与SpringMVC框架有关,我们在请求的末尾加上.html后,SpringMVC便把请求返回的结果当做html页面来渲染,但是我们返回的是TaotaoResult对象,它本身是无法被渲染成html的,因此就会抛出406的错误。可见,我们在请求的结尾加.html是不可行的。
不能在结尾加.html还有更重要的一个原因,那就是接口文档,在接口文档中明确给出了请求的格式,如下图所示,可以看到并没有以.html结尾,我们作为开发人员不能擅自在请求后面加.html。
那么,我们应该怎样解决问题呢?其实也很简单,那就是将web.xml文件的过滤条件改为"/",如下图所示。
下面重启taotao-sso-web工程,然后访问http://localhost:8088/user/check/zhangsan/1,可以看到如下图所示结果。data返回false说明zhangsan这个用户名已经被别人注册过了。
把用户名修改为"zhangsan11",如下图所示,可以看到这个用户名还没有被注册。
我们再测试下电话,我们在数据库中复制一个已经注册过的电话
我们在地址栏输入http://localhost:8088/user/check/13333333333/2,如下图所示。可以看到该手机号已经被注册了。
随便修改下手机号,然后再测试一下,如下图所示。可以看到这个手机号没有被注册过。
下面我们再测试下邮箱是否合法,可以看到"aa@a"这个邮箱已经被注册过了。
我们修改下邮箱,再试试,如下图所示,可以看到这个邮箱没有被注册过。