对于每个站点,都有用户登录信息显示,未登录则显示“注册/登录”字样。
开发时也时常遇到,而且是必要的需求。
开发了好几个网站都找了好多相应解决方案。
最后总结一种方案供网友参考:
其实标题的struts2没有太必要,因为每个网站都有自己的访问方式,没有struts2的拦截器也能完成整个系统嘛。
jQuery就是个人的喜好而已,纯js脚本也可以完成的,但是jQuery可以简化很多细节。
前台在<html></html>标签中,添加两个标签,如
<li id="USERINFO"></li>
<li id="USERCOUNT"></li>
注意,这只是本系统的个人需求哦,即显示登录用户的信息和总共用户数量。
脚本代码:
$(document).ready(function(){
jQuery.post("login_user",{},function(data){
// alert(data.code +"\n" + data.username +"\n" + data.usercount);
$("#USERCOUNT").html("用户- " + data.usercount+" 人");
if(data.code != "200"){
$("#USERINFO").html("<a href=\"login_input\">"+
"登录</a>|<a href=\"register\">注册"+
"</a>");
return;
}
$("#USERINFO").html("<a href=\"javascript:void(0);\">"+data.username+"</a>");
//window.location=data.url;
},"json");
});
以上代码有效执行前提是,先引进jQuery的开发包,以上代码可以写在新建的js文件中,也可以直接嵌入到html中。
简单介绍一下post()的使用。四个参数,
第一个是访问路径/方法/页面等等,只要访问的地方有能力处理数据或者完成一些数据获取和返回功能即可;
第二个参数是访问时附带的请求参数,是json格式,用于服务器端验证请求来源或者访问是否有效的依据;
第三个参数是一个方法,即回调函数,用于访问成功后获取到返回数据后的一些处理;
第四个参数是返回参数类型定义,此处为json,则表示访问成功后服务器返回的参数以json格式接受。
post()和get()方式一样,他们都有很多“重载”的函数,所以见到类型不一样但是访问成功也不要奇怪,具体官网详细介绍过。
服务器端数据返回:[注:我的服务器后台使用了struts2]
public String login_user() throws Exception {
response = ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8");
request = ServletActionContext.getRequest();
user = (User) request.getSession().getAttribute("USER");
request = ServletActionContext.getRequest();
int x = userDao.getCounts();
if(user != null)
response.getWriter().write("{\"code\":\"200\",\"username\":\""+user.getName()+"\",\"usercount\":\""+x+"\"}");
else{
response.getWriter().write("{\"code\":\"404\",\"msg\":\"NONE\",\"usercount\":\""+x+"\"}");
}
return null;
}
请不要在意具体使用的方法,重点是返回数据是json格式。
返回json格式数据有很多中方式,这里直接使用String即可,因为jQuery定义了以json格式接受数据。