Ajax實現登錄頁面(JavaScript)

通過使用ajax實現用戶的登錄

1、前端頁面:
在這裏插入圖片描述
具體實現:(省略js文件的引用)

<body>
<%Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("YYYY");String time = sdf.format(date);%>
<div class="container">
	<img class="bgone" src="./images/1.jpg" />
	<img class="pic" src="./images/a.png" />
	<form>
		<div class="table">
			<div class="wel">教師教學工作量統計系統</div>
			<div class="wel1">Statistical System Of Teaching Workload</div>
			<div class="dtext">© <%=time %> 聖文順  & 蔡熙貝. All Rights Reserved.</div>
			<div class="user">
				<div id="yonghu"><img src="./images/yhm.png" /></div>
				<input type="text" name="staffid" id="staffid"/>
			</div> 
			<div class="password">
				<div id="yonghu"><img src="./images/mm.png"/></div>
				<input type="password" name="password" id="password"/>
			</div>
			<div class="fontdiv"><a href="javascript:void(0)" onclick="updatePwd()" class="font">忘記密碼?</a></div>
			<font color="red"><label id="tip" class="tip"></label></font>
			<input class="btn" type="button" onclick="loginHome()" value="登錄"/>
		</div>
	</form>
</div>
</body>
</html>

2、Ajax實現的Js文件

function loginHome(){
    var name =$("#staffid").val();//#是id選擇器
    var pwd =$("#password").val();
    if(name==""){
    	document.getElementById("tip").innerText="用戶名不能爲空";
        return false;
    }
    if(pwd==""){
    	document.getElementById("tip").innerText="密碼不能爲空";
        return false;
    }
    else{
    	$.ajax({
	        type:"post",       //請求類型
	        url:"login.aspx",	//請求地址
	        dataType:"json",	//預期返回的參數類型
	        async: true,			//true代表的是異步請求,false代表的是同步請求,若爲同步請求則會鎖住瀏覽器
	        data:{staffid:name,password:pwd},    //傳入後端Controller的參數
	        success:function(data){				//這裏的data是後臺返回的值
	        	var password = data.password;//提取出來密碼
	        	if(pwd != password){
	        		document.getElementById("tip").innerText="賬號或密碼輸入錯誤";
        		}else{
        			window.location.href="home.aspx";
        		}
	        }
	    });
    }
}

3、控制器部分

這裏需要講一下,因爲js文件中dataType是json,也就是返回的是一個JSON格式的對象,所以控制器需要使用@ResponseBody註解

@responseBody註解的作用是將controller的方法返回的對象通過適當的轉換器轉換爲指定的格式之後,寫入到response對象的body區,通常用來返回JSON數據或者是XML。

數據,需要注意的呢,在使用此註解之後不會再走試圖處理器,而是直接將數據寫入到輸入流中,他的效果等同於通過response對象輸出指定格式的數據。

@RequestMapping("login.aspx")
@ResponseBody    //@ResponseBody  註解用來將對象轉化成json格式,在這裏也就是說返回的user是json格式的
public User login(String staffid,String password,HttpServletRequest request,HttpServletResponse response) throws IOException {
	HttpSession session = request.getSession();
	userDao = sqlSession.getMapper(UserDao.class);
	User user = userDao.queryUser(staffid);
	if(user!=null) {
		if(password.equals(user.getPassword())) {
			session.setAttribute("user", user);
			return user;
		}else {
			return user;
		}
	}else {
		return null;
	}
}

4、演示
在這裏插入圖片描述

5、寫在最後,json格式需要下載相應jar包
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章