今天闲着无聊就开始翻看struts2,虽然现在公司还是使用的struts1可是在时代潮流面前恐怕很快就会struts2取代;所以就开始自学一下。按照老习惯开始编写登陆程序。基本上算是顺利完成,心血来潮就想用ajax进行一下登陆验证。发现了一系列的问题。首先:想要用servlet来和ajax进行交互。登陆页面放到servlet中。这样就避开了struts2中action很多不方便的地方。可是捣鼓了好久,差了很多资料,悲哀的发现,struts2没有办法和servlet结合使用。struts2的过滤器总是会把servlet过滤掉。报的错误是404.
没办法只能想办法用struts2中的action何ajax交互。这时候就出现了一系列的问题。获取request啊,获取response啊。一堆堆的问题出现了,下面是我自己编写的代码。经过验证基本上实现了简单的ajax和struts2的结合使用。
1、编写jsp页面(有些自动生成的代码我删掉了,大家不要直接复制。有用的代码只是JavaScript和form中的内容,并且此处不解释ajax的具体含义。如果不懂得ajax先学学ajax。)
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title><s:text name="loginPage"></s:text> </title>
</head>
<script type="text/javascript">
var xmlHttp;
var result = false;
function checkuser(){
var uname = document.all.loginuser.value;
if(uname.length<3){//判断用户名的长度,如果不写或者太短则不能验证通过。
document.getElementById("unameMsg").innerHTML="<font color='red'>用户名太短,请重新输入!</font>";
return false;
}else{
document.all.unameMsg.innerHTML="<font color='red'>用户名检测中...</font>";
if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE实例
}else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();//其他浏览器实例
}
var uri = "login!execute?user="+uname;//此处login为配置文件中的name,execute为action中的方法。
uri = encodeURI(uri);
uri = encodeURI(uri);
xmlHttp.open("post",uri,true);
xmlHttp.onreadystatechange = function(){//回调函数判断当前状态是否是响应状态
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
alert(xmlHttp.responseText)
if(xmlHttp.responseText=="true"){
document.all.unameMsg.innerHTML="<font color='red'>该用户名已被使用,请您重新选择用户名!</font>";
result = false;
}else{
document.all.unameMsg.innerHTML="<font color='red'>恭喜您,该用户名可用!</font>";
result = true ;
}
}
}
}
xmlHttp.send(null);
}
}
</script>
<body>
<s:form action="login">
<s:textfield name="loginuser" key="user" onblur="checkuser()"></s:textfield>通过失去焦点事件来调用函数进行验证
<s:div id="unameMsg">ccccc</s:div>
<s:password name="loginpass" key="pass"></s:password>
<s:submit value="登陆"></s:submit>
</s:form>
</body>
</html>
2、action代码
package com.chenhui.action;
import java.io.PrintWriter;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.chenhui.dao.IUser;
import com.chenhui.dao.userdaoimpl.UserImpl;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
public class LoginAction{
private String loginuser;
private String loginpass;
public void setLoginuser(String loginuser) {
this.loginuser = loginuser;
}
public void setLoginpass(String loginpass) {
this.loginpass = loginpass;
}
public String execute()throws Exception{
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);//获取request
HttpServletResponse response = (HttpServletResponse) ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
PrintWriter out = response.getWriter();
out.print("true");
out.flush();
out.close();
IUser user = new UserImpl();
String password = user.getPass(loginuser);
System.out.println("============================="+loginuser);
if(!"".equals(loginpass)&&loginpass.equals(password)){
return "success";
}else{
return null;
}
}
}
分享到:
相关推荐
struts2 + jquery +ajax 登录验证
自学两天ibatis后自己做的struts2+spring+ibatis+jquery ajax的登录注册
struts2+jquery+ajax实现验证功能
使用ajax+struts2.0+jsp做的一个多下拉列表级联
使用Struts2+Ajax实现的一个简单的注册验证(带jar包),直接导入至IDE即可运行。这只是一个入门级的小示例。
myeclipse 6.5 + struts2 +ajax 实现表单注册验证源码
struts2+easyUI+ajax+json用户登验证,代码没问题,可运行,适合初学者理解原理!
导入myclipse即可,MySql...项目介绍: 1.struts2.8.1+hibernate3+spring2.5 2.统一的jquery表单验证方式,复用性强 3.jquery+ajax应用 4.界面风格漂亮, 本人的毕业设计,有需要者下载参考,项目有很多代码注释
AJAX实现用户登录注册(Struts+Spring+Hibernate+Ajax框架) AJAX实现用户登录注册(Struts+Spring+Hibernate+Ajax框架) AJAX实现用户登录注册(Struts+Spring+Hibernate+Ajax框架)
基于struts2+hibernate+ajax实现登陆验证,介绍了相关的知识,很不错的哦!!
ACTION,页面调用代码进行了注释,,,在用户输入完成身份证号自动验证是否正确以及是否存在,并动态显示"正在验证身份证号",对身份证号输入错误的进行提前提醒,减少数据库访问...struts2+ajax 上传前大部分代码...
mybatis+hibernate+Struts2+sevlet+ajax 做购物车 做的一个比较详细的购物车案例 不需要刷新界面 直接加载数据 还有注册显示账号是否被使用 通过ajax验证注册的代码是否被使用
在使用struts2+ajax时候,通常我们会返回json类型的数据,但是像上面的例子,我们只希望返回一个1和0有助于进行后续判断即可,没必要返回json类型,返回一个text字符串就可以了. regist.jsp(这里只提供[removed]部分): ...
ajax刷新表格数据 ajaxform异步提交表单数据, jquery.validate验证表单数据
关于jsp验证码页面。通过ajax来实现验证码的局部刷新和验证
都是一些基础的技术,像登录,注册验证用到了ajax和jquery结合,代码更加简单易懂。 后台用了hibernate技术,数据库用了mysql。 页面主要有登录,注册,显示联系人列表的主页面,修改,增加,删除,查找联系人等功能...
sturts+jquery+ajax实现无刷新 验证用户名是否存在
使用技术为:Struts+Hibernate+Ajax, 其中又包括Tiles框架,Validator验证框架,使用DipatcherAction和动态验证表单(DynaValidatorActionForm) 只需要1分即可下载,希望大家顶起!!!!!!!! 顶起!!!!!!!!顶起!...
里面讲解了在myeclipse8.0下如何实现动态验证用用户登录信息,其中用到struts框架和ajax/JSON技术,我上传的是以恶搞pdf文件,大家要是需要代码的话,那下载一个pdf转换工具,转换成doc文档会更方便