ajaxCheck.jsp代码如下:
<%@pagelanguage="java"pageEncoding="GBK"%>
<%@tagliburi="http://struts.apache.org/tags-bean"prefix="bean"%>
<%@tagliburi="http://struts.apache.org/tags-html"prefix="html"%>
<%@tagliburi="http://struts.apache.org/tags-logic"prefix="logic"%>
<%@tagliburi="http://struts.apache.org/tags-tiles"prefix="tiles"%>
<html:htmllang="true">
<head>
<title> ajaxCheck.jsp</title>
<scripttype="text/javascript"language="javascript">
varxmlHttpRequest;
functioncreateXMLHttpRequest(){
if(window.ActiveXObject){
//判断浏览器是否支持ActiveX控件,如果浏览器不是IE那么实例化一个新的 ActiveX 控件
return new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
return new XMLHttpRequest();
}
}
function checkUserExists(){
var uname = document.forms[0].userName.value;
if(uname.length <1){
alert("用户名不能为空");
document.forms[0].userName.focus();
return;
}
var url ="userInfo.do?method=responsePage&uname="+uname;
xmlHttpRequest = createXMLHttpRequest();
xmlHttpRequest.onreadystatechange=success; //设置回调方法
xmlHttpRequest.open("Get",url,true);
//第一参数指定发送请求的方式,第二个参数指定请求的URL,第三个参数指定请求是同步的、//还是异步的,TRUE表示异步,即在调用send方法发送请求后不用等请求响应继续执行后面//的javaScript语句
xmlHttpRequest.setRequestHeader("If-Modified-since","o");//清空缓冲
xmlHttpRequest.send(null);
//这个方法具体向服务器发送请求,如果请求为异步的就会立即返回。
}
function success(){
//readyState请求的状态。有5个可取值,0=初始状态 ,1=正在加载,2=已加载,3=交互中,4=完成
if(xmlHttpRequest.readyState == 4 && xmlHttpRequest.status==200){
var b = xmlHttpRequest.responseText;
alert(b);
if(b=="true"){
alert("用户名已经存在");
}else{
alert("用户名可以使用");
}
}
}
</script>
</head>
<body>
<html:formaction="/userInfo.do?method=addUserInfo"method="post">
用户名:<html:textproperty="userName"οnblur="checkUserExists()"/><br>
密码: <html:passwordproperty="password"/><br>
<html:submitvalue="提交"/>
</html:form>
</body>
</html:html>
UserInfoAction.java代码如下:
package com.yourcompany.struts.action;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import com.pojo.TblUser;
import com.yourcompany.struts.biz.UserInfoBiz;
import com.yourcompany.struts.form.UserInfoForm;
public class UserInfoAction extends DispatchAction {
public ActionForward addUserInfo(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
UserInfoForm userInfoForm = (UserInfoForm) form;// TODO Auto-generated
return null;
}
public ActionForward responsePage(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String name = request.getParameter("uname");
boolean isExists = this.checkUserName(name);
response.getWriter().print(isExists);
return null;
}
public boolean checkUserName(String name) {
List<String> list = new ArrayList<String>();
list.add("scott");
list.add("mike");
list.add("jack");
list.add("jeff");
boolean flag = list.contains(name);
return flag;
}
}
------------------------------------------------------------------------------------------------------- ------------------------------
--------------------------------------------------------------------------------------------------------------------------------------
DWR是在Ajax的基础上搭建的一个框架,都实现了页面局部刷新的功能。以下代码演示了如何使用dwr验证用户名是否存在(首先要加载dwr.jar包到工程的lib目录下)
dwrCheck.jsp代码如下:
<%@page language="java"pageEncoding="GBK"%>
<html:htmllang="true">
<scripttype='text/javascript'
src='/SSHProject_Bak1/dwr/interface/userManager.js'></script>
<scripttype='text/javascript'src='/SSHProject_Bak1/dwr/engine.js'></script>
<scripttype='text/javascript'src='/SSHProject_Bak1/dwr/util.js'></script>
<head>
<html:base/>
<title>dwrCheck.jsp</title>
<scripttype="text/javascript"language="javaScript">
functioncheckUserName(obj){
var uname=obj.value;
userManager.checkUserName(uname,showInfo); //设置回调函数
}
function showInfo(exist){
if(exist){
alert("用户名已经存在");
document.forms[0].userName.focus();
}else{
alert("该用户名可以使用");
}
}
</script>
</head>
<body>
<formaction="">
用户名:
<inputtype="text"name="userName"onblur="checkUserName(this)">
<br>
密码:
<inputtype="password"name="password">
<br>
<inputtype="submit"value="提交">
<inputtype="reset"value="取消">
</form>
</body>
</html:html>
Dwr.xml代码如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEdwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create javascript="userManager" creator="new">
<param name="class" value="com.bean.UserManager"/>
<include method="checkUserName"/>
</create>
</allow>
</dwr>
UserManager.java代码如下:
package com.bean;
import java.util.ArrayList;
import java.util.List;
publicclass UserManager {
publicboolean checkUserName(String name){
boolean exist = checkData(name);
return exist;
}
publicboolean checkData(String name) {
List<String> list =new ArrayList<String>();
list.add("scott");
list.add("mike");
list.add("jack");
list.add("jeff");
return list.contains(name);
}
}
在工程中配置了dwr框架在Web.xml中应该加入以下代码:
<?xmlversion="1.0"encoding="UTF-8"?>
<web-appxmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"version="2.5"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
-------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------
DWR除了指定类实例外还可以与spring集成使用。
以下代码演示了DWR与spring集成:
springCheck.jsp代码如下:
<%@pagelanguage="java"pageEncoding="GBK"%>
<html:htmllang="true">
<scripttype='text/javascript'
src='/SSHProject_Bak1/dwr/interface/userInfoBiz.js'></script>
<scripttype='text/javascript'src='/SSHProject_Bak1/dwr/engine.js'></script>
<scripttype='text/javascript'src='/SSHProject_Bak1/dwr/util.js'></script>
<head>
<html:base/>
<title>dwrCheck.jsp</title>
<scripttype="text/javascript"language="javaScript">
functioncheckUserName(obj){
var uname=obj.value;
userInfoBiz.checkUserName(uname,showInfo);
}
function showInfo(exist){
if(exist){
alert("用户名已经存在");
document.forms[0].userName.focus();
}else{
alert("该用户名可以使用");
}
}
</script>
</head>
<body>
<formaction="">
用户名:
<inputtype="text"name="userName"onblur="checkUserName(this)">
<br>
密码:
<inputtype="password"name="password">
<br>
<inputtype="submit"value="提交">
<inputtype="reset"value="取消">
</form>
</body>
</html:html>
dwr.xml代码如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEdwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create javascript="userInfoBiz" creator="spring">
<param name="beanName" value="userInfoBiz"/>
// value="userInfoBiz"对应spring配置文件的id
</create>
</allow>
</dwr>
Spring对应的代码如下:
UserInfoBiz.java
package com.yourcompany.struts.biz;
import com.pojo.TblUser;
import com.yourcompany.struts.dao.UserInfoDao;
publicinterfaceUserInfoBiz {
publicboolean checkUserName(String name);
}
package com.yourcompany.struts.biz.impl;
import java.util.ArrayList;
import java.util.List;
import com.yourcompany.struts.biz.UserInfoBiz;
public class UserInfoBizImpl implements UserInfoBiz {
public boolean checkUserName(String name) {
// TODO Auto-generated method stub
return checkData(name);
}
public boolean checkData(String name) {
List<String> list = new ArrayList<String>();
list.add("scott");
list.add("mike");
list.add("jack");
list.add("jeff");
return list.contains(name);
}
}
spring配置文件对应的代码如下:
application-service.xml
<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="userInfoBiz"
class="com.yourcompany.struts.biz.impl.UserInfoBizImpl">
</bean>
</beans>
在web.xml中添加如下代码:
<!-- web启动时加载applicationContext.xml文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:application-service.xml</param-value>
</context-param>
<!--监听器配置 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>