我们来看下login.jsp页面,如下图所示。可以看到<input/>标签中并没有定义onclick方法,只是定义了个id="loginsubmit",那么onclick事件在哪儿定义了呢?
其实是在js当中,如下图所示,页面加载完后就给id为loginsubmit的按钮添加了onclick事件,当点击这个按钮的时候,会触发LOGIN对象的login方法,login方法要先检查用户名和密码是否为空,如果为空则弹出alert警告框进行警告,如果都不为空,就调用登录方法。这里需要说明一点的是,登录有可能是从不同的页面跳转过来的(比如你再京东购物,在购物车里添加好了商品,要去结算了,如果没有登录的话,是需要登录的,但是登录之后还要回到购物车界面的),因此登录成功后还应该回到原来的页面。
现在我们来测试登录,由于登录后要跳转到淘淘商城首页,因此我们要先启动淘淘商城相关的所有服务,zookeeper、image-server、redis-server、solr-server、nginx-server。
启动好服务之后,我们依次启动taotao-manager、taotao-content、taotao-search、taotao-manager-web、taotao-portal-web、taotao-search-web、taotao-item-web、taotao-sso、taotao-sso-web工程,启动完工程后,我们来登录,我们先来个错误的密码,如下图所示。
这样的话,登录会报空指针异常,如下图所示,出现空指针是由于登录失败,result的data值是NULL,因此才会报空指针异常。
要解决这个问题很简单,在写入cookie之前,先判断下是否登录成功,登录成功之后再写入到cookie。如下图所示。
修改了Controller代码,现在我们重新启动taotao-sso-web工程,启动好后,我们输入正确的用户名、密码进行登录,会发现提示登录成功,点确定后,会跳转到淘淘商城首页,如下图所示。当然了,现在淘淘商城首页还没有完全连通起来,所以会发现这个页面并没有显示已登录状态,而是依旧是未登录状态。