web.xml声明了
<servlet>
<servlet-name>AjaxAction</servlet-name>
<servlet-class>Act.AjaxAction</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AjaxAction</servlet-name>
<url-pattern>/aj.io</url-pattern>
</servlet-mapping>
jsp页面
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(function() {
$("#bt_login").click(function() {
$.ajax({
url : "aj.io",
type:"get",
data : encodeURI("act=login&name=" + $("#name").val() + "&pw="+ $("#pw").val()+"&s="+Math.random()),
success : function(reqon) {
//解析json
var obj=eval("("+reqon+")");
if(obj.head=="ok"){
$("#login_div").hide();
$("#ht").html("欢迎登录,"+obj.body.name+"<a href='aj.io?act=logout'>注销</a>");
}else{
$("#ht").html(obj.body);
}
}
});
});
});
</script>
url : 必须对应web.xml中的配置,请求到AjaxAction这个类
data : encodeURI()可以解决乱码问题
success : function(reqon)中的reqon可随便定义名字
这是AjaxAction类中的方法:
AjaxReturn 是一个pojo类
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
userDao=new UserDao();
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
AjaxReturn returnObj=new AjaxReturn();
String act=request.getParameter("act");
if("login".equals(act)){
String name=request.getParameter("name");
String pw=request.getParameter("pw");
User user=userDao.findByname(name);
if(user==null){
//没有此用户
returnObj.setHead("err");
returnObj.setBody("用户找不到");
}else{
if(user.getPw().equals(pw)){
//登陆成功
returnObj.setHead("ok");
returnObj.setBody(user);
request.getSession().setAttribute("user", user);
}else{
//密码错误
returnObj.setHead("err");
returnObj.setBody("密码错误");
}
}
}else if("logout".equals(act)){
request.getSession().removeAttribute("user");
response.sendRedirect("index.jsp");
// request.getRequestDispatcher("index.jsp").forward(request, response);
return;
}
PrintWriter out=response.getWriter();
response.setContentType("text/html");
Gson gson=new Gson();
out.print(gson.toJson(returnObj));
System.out.println(gson.toJson(returnObj));
out.flush();
out.close();
}