1. 程式人生 > >ssh學習之旅(1)--jQuery獲取session的值

ssh學習之旅(1)--jQuery獲取session的值

因為要解決獲取存取驗證碼的session,因此為了session查了百度。。

獲取session的值方法有暫時發現又兩種

一種是jquery的post方法 :因為本人沒學過jQuery,所以不怎麼會用 ,,哈哈哈哈,等會用了再更新。。。

下面這種就是我獲取session的第二種方法

原理是這樣的 用了和 <input type = "hide" id = <%=session.get("code")%>>  存在的隱藏文字框的session,

jsp程式碼

驗證碼:<input type="text" id="idAgainCode"
			value="<%=session.getValue("code")%>" />

script程式碼

	$("#idImgVcode").blur(function() {
			$("#idAgainCode").val;
			alert(v);
		});


================================================

但是我發現了一個很重要的問題 但我更新圖片的時候 input的值是不會變的 ,驗證碼的 看不清的時候,那就沒法這樣獲取驗證碼了。

後來 解決方案是這樣的,。。。。

發現網上可以直接獲取session

$("#idImgVcode").blur(function() {
			$("#idAgainCode").val;
			
			alert("<%=session.getAttribute("code") %>");
		});


於是就更改成這樣了

看起來獲取的session的code 驗證碼好像是對的了 ,

仔細看看 發現驗證碼與彈出的框是不同的啊。。。。。。

想想原因。。是獲取的session在頁面上的怎麼不同步呢,,好像是有一個這樣的機制session在瀏覽器會儲存幾分鐘,所以頁面沒重新整理,session一直都是不變的,,,

看來這種辦法對於獲取驗證碼是行不通的啊。只能好好用post方法了。。。明天再看看的 ,,,這個就記錄下來,以後少走些彎路

驗證碼原始碼附上

jsp頁面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>後臺管理頁面</title>
<link rel="stylesheet" type="text/css" href="css/styles.css">
<script type="text/javascript" src="javascript/Login_javascript.js"
	charset="gb2312"></script>
<script type="text/javascript" src="jquery-2.1.1.js"></script>
<script type="text/javascript">
/* 	function refreshcode() {
		document.getElementById("idImg").src = "imagecode.action?dt="
				+ Math.random();
	} */

	$(document).ready(function() {
		var flag = {
			"identify" : false
		};

		/* $("#change").blur(function() {
			$.post("checkcode.action", {
				"code" : code
			}, function(data) {
				alert("驗證碼正確"+data);
				if (data) {
					alert("驗證碼正確");s
				} else {
					alert("驗證碼錯誤");
				}
			}, "json");
			alert("驗證碼錯誤");
			$("#info").html("驗證碼地址不能為空");
		}); */
		
		$(function(){
  		//單擊"看不清楚"按鈕切換驗證碼
  		$("#change").click(function(){
  			//重新指定img的src屬性
  			$("#idImg").attr("src","imagecode.action?dt="+ Math.random());
  			
  		 	$("#idAgainCode").val($("#idAgainCode").val()); 
  			return false;//阻止<a>元素的href動作
  		});
  		//單擊圖片切換驗證碼
  		});
		
/* 		$("#loginSubmit").submit(function() {
			var ok = flag.identify;
			if (ok == false) {
				alert("表單項正在檢測或存在錯誤");
				return false;
			}
			return true;
		});
		
		$("#loginSubmit").submit(function() {
			var ok = flag.identify;
			if (ok == false) {
				alert("表單項正在檢測或存在錯誤");
				return false;
			}
			return true;
		}); */

		$("#idImgVcode").blur(function() {
			/* $("#idAgainCode").val; */
			
			alert("<%=session.getAttribute("code") %>");
		});
	});
</script>

</head>

<body>
	<div align="center">
		<p>管理員登入</p>
		<s:form action="manageLogin" method="post"
			onsubmit="return user_input()" namespace="/">
			登入:<input type="text" name="manager.managerName" id="name" />
			<br />
			密碼:<input type="password" name="manager.managerPassword"
				id="password" />
			<br />
			驗證碼:<input type="text" name="imgVcode" id="idImgVcode" />
			<span id="info" style="color:red"></span>
			<br />
			<img id="idImg" src="imagecode.action" />
			<a id="change" href="#" href="#">看不清楚?換個圖片</a>
			<s:submit value="登入" align="center" id="loginSubmit"></s:submit>

		</s:form>
		<br /> <%-- 驗證碼:<input type="text" id="idAgainCode"
			value="<%=session.getValue("code")%>" /> --%>
	</div>
</body>

</html>

action

package com.jing.action;

import java.awt.image.BufferedImage;
import java.io.InputStream;
import java.util.Map;

import org.hibernate.Session;

import com.jing.util.ImageUtil;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class ImageAction extends ActionSupport{
	//該屬性由stream元件負責輸出
	private InputStream imageStream;
	
	

	public String execute(){
		//生成一個驗證碼圖片
		Map<String,BufferedImage> map = 
					ImageUtil.createImage();
		//獲取圖片字元
		String code = map.keySet().iterator().next();
		ActionContext ac = ActionContext.getContext();
		ac.getSession().put("code", code);//儲存圖片字元,為以後校驗使用
		System.out.println("code :"+code);
		BufferedImage image = map.get(code);//獲取圖片物件
		//將圖片給imageStream屬性
		try {
			imageStream = ImageUtil.change(image);
			return "success";//呼叫stream型別的result響應
		} catch (Exception e) {
			e.printStackTrace();
			return "error";
		}
	}

	public InputStream getImageStream() {
		return imageStream;
	}

	public void setImageStream(InputStream imageStream) {
		this.imageStream = imageStream;
	}
	
}


struts配置

<action name="imagecode" class="Imagecode">
			<result name="success" type="stream">
				<param name="inputName">imageStream</param>
			</result>
		</action>