本案例主要用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>