<action name="IndexLogin" class="action.LoginAction" method="IndexLogin">
<result name="error" type="json"></result>
<result name="query" >/index.jsp</result>
</action>
页面jquery请求进入IndexLogin的方法,我想验证用户名和密码,如果错误就是ajax的弹出错误提示信息,如果正确是否能用struts2的<result name="query" >/index.jsp</result>直接跳转连接或者其他什么办法能再struts2中直接跳转,而不需要回到页面再使用window.location = "./index.jsp";
帮人帮到底,
把所有demo代码贴出来
=====action处理类
[code="java"]
public String IndexLogin() {
String userName=ServletActionContext.getRequest().getParameter("userName");//userName
if(userName!=null&&!"".equals(userName))
{
ServletActionContext.getRequest().setAttribute("userName", userName);
return "list";
}else
{
return "login";
}
}
[/code]
=====struts.xml
[code="xml"]
/login.jsp
/list.jsp
[/code]
==首页index.jsp
[code="html"]
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-----------index.jsp
[/code]
====login.jsp
[code="html"]
[/code]
==list.jsp
[code="html"]
<%@ page language="java" pageEncoding="utf-8"%>
login UserName:${userName }
[/code]
//上述demo全部异步提交,流程,加载index。jsp。点击【载登录页面】按钮加载登录页面,加载完毕后,输入用户名提交按钮,不刷新页面,加载登录成功的list页面显示登录的用户
完整demo,需要请留联系方式
这个demo完全 ajax,从加载登录页面,到加载登录成功的页面
整个流程不刷新页面没有location。href="***.jsp";
希望能帮上忙
ajax试图后台应该返回
页面输出
String fullContentType = "application/json" + ";charset=" + "UTF-8";
response.setContentType(fullContentType);
try {
response.getWriter().write(json);
response.getWriter().flush();
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
}
return null;
推荐使用jquery -validate 插件提供remote的验证方式,适合像用户名重复
email重发验证
希望能帮上忙
那一样可以,例如:
public String LoginAction() {
if(true)//模拟登录成功
{
return query;//query 对应登录 成功的页面
}else
{
str1.append("\"date\":");
String json="{\"message":\"密码或用户名错误,请重新输入!\"}";
String fullContentType = "application/json" + ";charset=" + "UTF-8";
response.setContentType(fullContentType);
try {
response.getWriter().write(json);
response.getWriter().flush();
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
}
return null;
}
}
jsp页面就提交一个表单,如果登录成功就跳登录成功页面了
如果没有,那就是ajax请求
哥们,我刚做了个测试发现,会把json数据输出到页面上的。
我错了。
:D 只能告诉你不可能,用异步去验证。不会产生你想要的重定向效果!~~
使用2个action,一个是验证的action,一个是跳转的action,第一个action使用ajax方式,如果验证错误,则返回错误信息,如果验证成功跳转到第二个action
提示:第一个action用ajax方式提交,第二个action用表单的正常方式submit
可以将正确返回的内容用js写入到dom 中, document.write(正确的内容html);
1.要么就重定向,
2.要么登录有使用异步
jquery ajax 可以做到异步提交
[code="java"]
public String IndexLogin() {
String userName=ServletActionContext.getRequest().getParameter("userName");//userName
if(userName!=null&&!"".equals(userName))
{
return "list";
}else
{
return "login";
}
}
[/code]
=====struts.xml
[code="xml"]
/login.jsp
/list.jsp
[/code]
//其中 $("#workspace").load 加载后台返回login.jsp
====index.jsp
[code="html"]
-----------index.jsp
==login.jsp
[code="html"]
[/code]
//点击加载登录页面加载登录页面,异步提交请求,把返回的jsp视图加载在当前页面上,浏览器状态没有加载进度。是一个异步加载视图过程
看来大多数人不用json视图
返回的对象名称,会自动转为json
/index.jsp