首先我们要确保taotao-sso-web工程依赖了taotao-sso-interface工程以及是否依赖了jackson相关jar包(用来将对象转为json字符串),查看”Maven Dependencies”下的包,如果有taotao-sso-interface以及下图红框框住的三个jackson包说明已经依赖好了,如果大家按照我的节奏一步步来,应该是没有问题的哟!
下面我们添加对dubbo服务的引用,即在springmvc.xml配置文件中添加如下配置:
<dubbo:reference interface="com.taotao.sso.service.UserRegisterService" id="userRegisterService" />
下面我们在taotao-sso-web工程的src/main/java目录下的com.taotao.sso.controller包中新建一个UserController类,如下图所示。
为了大家方便复制,现将UserController类的代码给出。
/**
* 用户管理Controller
* <p>Title: UserController</p>
* <p>Description: </p>
* <p>Company: www.itcast.cn</p>
* @version 1.0
*/
@Controller
public class UserController {
@Autowired
private UserRegisterService userRegisterService;
@RequestMapping(value="/user/check/{param}/{type}", method=RequestMethod.GET)
@ResponseBody
public TaotaoResult checkUserInfo(@PathVariable String param, @PathVariable Integer type) {
TaotaoResult result = userRegisterService.checkUserInfo(param, type);
return result;
}
}
下面我们来测试一下这个用户注册接口是否好用。在测试之前,先将taotao-sso服务工程打包到本地maven仓库中,还有别忘了启动zookeeper服务哟!!!
接着我们便依次启动taotao-sso服务工程和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这个用户名已经被别人注册过了。
接着把用户名修改为”zhangsan1234”,如下图所示,可以看到这个用户名还没有被注册。
我们再测试下电话,我们在数据库tb_user表中复制一个已经注册过的电话,比如13488888888,然后在浏览器地址栏中输入http://localhost:8088/user/check/13488888888/2
,回车,可以看到如下图所示结果,可以看到该手机号已经被注册了。
随便修改下手机号,然后再测试一下,如下图所示,可以看到这个手机号没有被注册过。
下面我们再测试下邮箱是否合法,可以看到”aa@a”这个邮箱已经被注册过了。
我们修改下邮箱,再试试,如下图所示,可以看到这个邮箱没有被注册过。