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