基於jquery+servlet實現Ajax效果


這里我們將來實現一個使用Ajax異步實現的登錄效果,話不多說,直接看代碼:

登錄頁面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>論壇首頁</title>
<link href="CSS/common.css" rel="stylesheet" type="text/css" />
<link href="CSS/denglu.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="jslib/jquery.js"></script>
<script type="text/javascript" src="jslib/verify.js"></script>
</head>
<body>
<center>
    <div id="body_bg">
        <div id="body_all">
            <div id="body_main">
                <div class="dlcontent">
                    <div class="dlmain">
                        <div class="dlmain_username">
                        <span>賬號:</span>
                        <span><input type="text" name="username" id="username"/></span></div>
                        <div class="dlmain_password">
                        <span>密碼:</span>
                        <span><input type="password" name="username" id="userpassword"/></span></div>
                        <div class="dlmain_sm"><div id="result1"></div></div>
                        <div class="dlmain_xuanze">   
                            <input type="radio" checked="checked" name="type" id="type" value="聯盟會員" />
                                    聯盟會員    
                            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                            <input type="radio" value="論壇會員" name="type" id="type1"/>論壇會員
                        </div>
                        <div class="dlmain_queren">
                            <input type="reset" name="reset" style="margin-right:20px" value="重置" />
                            <input type="button" value="確認" onclick="verify()"/>
                        </div>
                    </div>
                    <div class="dlright">
                        <div class="dlkszc"><a href="Register.jsp">快速注冊</a></div>
                    </div>
                </div>
            </div>
            <div id="body_footer"></div>
        </div>
    </div>
</center>
</body>
</html>

實現ajax的jquery代碼:

function verify(){
    //alert("來了");
    //解決中文亂碼問題的方法 1,頁面端發出的數據做一次encodeURI,服務器端使用 new String(old.getBytes("iso8859-1"),"utf-8")
    //var url= "AJAXServer?name="+encodeURI($("#userName").val() ) ; // encodeURI處理中文亂碼問題
   // 解決中文亂碼問題的方法 2.頁面端發出的數據做兩次encodeURI處理, 服務器端用URLDecoder.decode(old,"utf-8");
    var input=$("input[name='type']");//因為得不到單選鈕選定的value值,所以就只能先得到所有的值,通過循環來判斷
    for(i=0;i<input.length;i++){
        if(input[i].checked){
            //alert(input[i].value);
            var url= "Users?name="+encodeURI(encodeURI($("#username").val() ))+"&password="+encodeURI(encodeURI($("#userpassword").val() ) )+"&type="+encodeURI(encodeURI(input[i].value) ); // encodeURI處理中文亂碼問題
        }
    }
    url=convertURL(url);//獲取函數的返回值'login?uname='+ uname + '&psw=' + psw
    $.get(url,null,function(data){
            $("#result1").html(data); //簡潔版
    });
    //alert(url);
}
//給URL增加時間戳,騙過瀏覽器,不讀取緩存
function convertURL(url){
    //獲取時間戳
        var timstamp=(new Date()).valueOf();
    //將時間戳信息拼接到URL上
    if(url.indexOf("?")>=0){//用indexof判斷該URL地址是否有問號
    url=url+"&t="+timstamp;
    }else{
       url=url+"?t="+timstamp;  
    }
   return  url;

}

后台Servlet的處理代碼:

package com.xidian.bbs.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.xidian.bbs.util.DBAccess;

@SuppressWarnings("serial")
public class Users extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8"); 
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        PrintWriter out = response.getWriter();
        
        //1.取js中傳遞的參數
        String name1 =request.getParameter("name");
        String password1 =request.getParameter("password");
        String type1 =request.getParameter("type");
        // String name=new String(old.getBytes("iso8859-1"),"utf-8");     //處理中文亂碼1,需和前台js文件中的encodeURI配合
        String name2= URLDecoder.decode(name1,"utf-8");                 //處理中文亂碼2
        String password2= URLDecoder.decode(password1,"utf-8");
        String type2= URLDecoder.decode(type1,"utf-8");
        
        if(name2==null||name2.length()==0){
            out.println("用戶名不能為空!!");
            return;//不執行下面的代碼
        } else if(password2==null||password2.length()==0){
            out.println("密碼不能為空!!");
            return;
        }
            //3.校驗操作
        Statement sql = null;
        ResultSet rs = null;
        try {
            Connection con = DBAccess.getConnection();
            sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                ResultSet.CONCUR_UPDATABLE);
            if(type2.equals("聯盟會員")){
                HttpSession session=request.getSession();
                session.setAttribute("bs_type", "聯盟會員");
                rs = sql.executeQuery("select * from yh_yhxx ");
                while(rs.next()){
                String     yhxx_id=rs.getString("yhxx_id");
                String     yhxx_pwd=rs.getString("yhxx_psw");
                System.out.println(yhxx_id+"  "+yhxx_pwd);
                //2.檢查參數是否有問題
                //3.校驗操作
                if(name2.equals(yhxx_id)&&password2.equals(yhxx_pwd)){
                    //4.與傳統應用不同的是,這一步將用戶感興趣的數據返回給頁面端。而不是將一個新的頁面返回給頁面端
                  //寫法沒有改變,本質變化了
                session.setAttribute("username", name2);
                
                out.println("<script language='javascript'>window.location.href='index.jsp';</script>");
                  out.flush();
                  out.close();
              } 
            }}else{
                HttpSession session=request.getSession();
                session.setAttribute("bs_type", "論壇會員");
                rs = sql.executeQuery("select * from users ");
                while(rs.next()){
                    if(name2.equals(rs.getString("userID"))&&password2.equals(rs.getString("uPwd"))&&rs.getInt("if_forbid")==0){
                        session.setAttribute("username", name2);
                        out.println("<script language='javascript'>window.location.href='index.jsp';</script>");
                        out.flush();
                        out.close();
                    }else if(name2.equals(rs.getString("userID"))&&password2.equals(rs.getString("uPwd"))&&rs.getInt("if_forbid")==1){
                        out.println("該用戶已被禁!!");
                        out.flush();
                        out.close();
                    }
                    }
                    }
         out.println("用戶名或密碼錯誤!!");
        }catch(Exception e){
            e.printStackTrace();
        }
 }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM