现在的位置: 首页 > 综合 > 正文

关于我的JAVA开发——AJAX案例:用AJAX实现无刷新登陆(上)

2013年08月27日 ⁄ 综合 ⁄ 共 4162字 ⁄ 字号 评论关闭

本案例主要用AJAX技术实现无刷新登录

 

login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
 <head>
  <title>用AJAX技术实现无刷新登录</title>
  <script type="text/javascript">
var XMLHttpRequest = false;

//4.创建XMLHttpRequest对象
function createXMLHttpRequest() {

 //创建XMLHttpRequest对象
 if (window.XMLHttpRequest) {
  //IE7,IE8,FireFox,Mozillar,Opera浏览器
  xmlHttpReq = new XMLHttpRequest();
  //当头的设置不是text/xml形式时,则要重新设置为text/xml
  if (xmlHttpReq.overrideMimeType) {
   xmlHttpReq.overrideMimeType("text/xml");
  }
 } else if (window.ActiveXObject) {
  //IE6,IE5,IE5.5,因为所有浏览器都是基于ActiveXObject所以放置在后面实现效能会好些
  var activexName = [ "MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0",
    "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",
    "Miscrosoft.XMLHTTP" ];
  for ( var i = 0; i < activexName.length; i++) {
   try {
    xmlHttpReq = new ActiveXObject(activexName[i]);
    break;//一但创建成功就不需要再进行判断
   } catch (e) {
    //异常不需要处理 
   }
  }
 }
}

//3.用于发送请求数据
function sendRequest(url) {
 //调用创建XMLHttpReqeust对象的函数
 createXMLHttpRequest();
 alert(url);
 xmlHttpReq.open("GET", url, true);
 //调用回调函数(当状态发生改变时调用回调函数)
 xmlHttpReq.onreadystatechange = proccessReqeust;
 //发送请求
 xmlHttpReq.send(null);
}

//2.创建回调函数
function proccessReqeust() {
 //根据状态
 alert("当前状态为:" + xmlHttpReq.readyState);
 //判断对象状态
 if (xmlHttpReq.readyState == 4) {
  //判断响应是否成功
  if (xmlHttpReq.status == 200) {
   //1、以XML接收响应数据
   var respInfomation = xmlHttpReq.responseXML
     .getElementsByTagName("res")[0].firstChild.data;

   //2、以文本方式接收返回数据
   //var respInfomation = xmlHttpReq.responseText;
   alert(respInfomation);
  } else {
   alert("响应异常");
  }
 }
}

//1.得到表单信息
function sendInfo() {
 var username = form1.username.value;
 var password = form1.password.value;
 sendRequest('checkLogin?username=' + username + '&password=' + password);
}
</script>
 </head>
 <body>
  <form action="checkLogin" method="post" name="form1">
   <table align="center" border="1">
    <tr>
     <td colspan="2" align="center">
      <H1>
       请登录
      </H1>
     </td>
    </tr>
    <tr>
     <td>
      用户名:
     </td>
     <td>
      <input type="text" name="username" />
     </td>
    </tr>
    <tr>
     <td>
      密 码:
     </td>
     <td>
      <input type="text" name="password" />
     </td>
    </tr>
    <tr>
     <td colspan="2" align="center">
      <input type="button" value="登录" onClick="sendInfo()" />
        
      <input type="reset" value="重置" />
     </td>
    </tr>
   </table>
  </form>
 </body>
</html>

 

CheckLoginServlet
package com.LJ.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CheckLoginServlet extends HttpServlet {
 /**
  * 提供一个Servlet独有的ID
  */
 private static final long serialVersionUID = 6991271447420179202L;

 @Override
 protected void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  //设置请求和响应的编码格式
  request.setCharacterEncoding("UTF-8");
  //设置响应格式应为XML
  response.setContentType("text/xml;charset=UTF-8");
  response.setHeader("Cache-Control","no-cache");
  
  //得到表单提交过来的用户名跟密码
  PrintWriter out = response.getWriter();
  out.println("<respData>");
  String username = request.getParameter("username");
  String password = request.getParameter("password");
  //验证结果并做出相应的响应
  if("LJ".equals(username) && "LJ".equals(password)){
   //转发(用不了)
   //request.getRequestDispatcher("index.jsp").forward(request,response);
//   out.println("<script>alert('登录成功');</script>");
   out.println("<res>" + "登录成功" + "</res>");
  }else{
   //重定向(用不了)
   //response.sendRedirect("login.jsp");
//   out.println("<script>alert('登录失败');</script>");
   out.println("<res>" + "登录失败" + "</res>");
  }
  out.println("</respData>");
 }

 @Override
 protected void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  this.doGet(request, response);
 }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<!-- 配置登陆时的servlet -->
	<servlet>
		<servlet-name>checkLoginServlet</servlet-name>
		<servlet-class>com.LJ.servlet.CheckLoginServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>checkLoginServlet</servlet-name>
		<url-pattern>/checkLogin</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <head>
    <title>用AJAX实现登录后成功页面</title>
  </head>
  <body>
  <h1>登录成功</h1>
  </body>
</html>

抱歉!评论已关闭.