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>