如題,想請教
我有一個login.jsp
登入後會自動轉跳index.jsp
以上login.jsp的值是可以順利用session 傳到index.jsp
但是
我從index.jsp要去瀏覽b.jsp的內容時
b.jsp收不到session的值
但我跟login.jsp的寫法一樣...
以下程式
login.jsp
<body>
<div id="head1"></div>
<div class="container" >
<form action = "login.jsp" method = "post">
帳號登入
帳號: <input type="text" id="account" name="account">
密碼: <input type="password" id="passwd" name="passwd">
<button type="submit" name = "login" value = "登入">登入</button>
</form>
</div>
</body>
</html>
<%
String account = request.getParameter("account");
String passwd = request.getParameter("passwd");
if(account.equals("1234")&&passwd.equals("1234"))
{ session.setAttribute("account", account);
response.sendRedirect("index.jsp");
}
%>
index.jsp
<% //把account 的值傳過來了
Object objacc=session.getAttribute("account");
String sacc = "";
if(objacc!=null){
sacc = objacc.toString();
}
%>
<script> //如果account的值是null會載入head.jsp,若不是則載入head_1.jsp
var var1 = ""
var1 = "<%=sacc%>"
if(var1==null){
$(document).ready(function () {
$("#head1").load("../public/head.jsp");
});
}
else{
$(document).ready(function () {
$("#head1").load("../public/head_1.jsp");
});
}
</script>
</head>
<body>
<div id="head1"></div>
<div class="container">//index.jsp//</div>
</body>
</html>
b.jsp
<%
Object objacc=session.getAttribute("account");
String sacc = "";
if(objacc!=null){
sacc = objacc.toString();
}
%>
<script>
//如果account的值是null會載入head.jsp,若不是則載入head_1.jsp,但這裡都收不到 session.getAttribute("account")的值.....
var var1 = ""
var1 = "<%=sacc%>"
if(var1==null){
$(document).ready(function () {
$("#head1").load("../public/head.jsp");
});
}
else{
$(document).ready(function () {
$("#head1").load("../public/head_1.jsp");
});
}
</script>
</head>
<body>
<div id="head1"></div>
<div class="container">
<h1>我是b.jsp</h1>
</div>
</body>
</html>
以下
head.jsp
<body>
<nav class="nav navbar-default">
<div class="container-fluid">
<div class="collapse navbar-collapse" id="myNavbar">
<ul class="nav navbar-nav">
<li><a href="b.jsp">關於我們</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="login.jsp"> Log in</a></li>
</ul></div> </div>
</nav>
head_1.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<body>
<%
Object objacc=session.getAttribute("account");
String sacc = "";
if(objacc!=null){
sacc = objacc.toString();
}
%>
<nav class="nav navbar-default" >
<div class="container-fluid">
<div class="collapse navbar-collapse" id="myNavbar">
<ul class="nav navbar-nav">
<li><a href="b.jsp">關於我們</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="index.jsp">welcome <% out.println(sacc);%>
<% session.invalidate();%>
</a></li>
</ul>
</div>
</div>
</nav>
以上,想知道問題出在哪,麻煩大家了,謝謝
把login.jsp 的response.sendRedirect("index.jsp"); 改成response.sendRedirect("b.jsp"); 看能不能收到?
你好:
我有試過,這樣是OK的
但是這樣其他頁面就會不OK
(我希望是多個頁面都能收到account的值
而且登入後我只想轉跳到首頁
而不是其他頁面.....
是用什麼瀏覽器測試? 每個頁面都在不同目錄下嗎?
<% out.println(session); %> 在每個頁面把session印出來看看
你好:
我用chrome
除了head.jsp 和head_1.jsp 在public資料夾以外
剩下的檔案全部在jsp資料夾
我在其他頁面上有試過了
<%= session.getAttribute("account")%>
除了index.jsp之外,其他結果都是null
<% session.invalidate();%> 原來是加了這行~
報告:
去掉那行真的好了
但是我寫這樣是希望按到welcome這按鍵
user可以登出阿
<li><a href="index.jsp">welcome <% out.println(sacc);%>
<% session.invalidate();%>
</a></li>
若不這樣寫
我的
<% session.invalidate();%>
要放哪裡比較好呢?
怎麼讓user登出呢?
當然是user按了登出,轉到別的頁面再執行丫,或是用ajax再call別支jsp去執行~
你把session清掉了
session.invalidate()
請問為什麼要清掉呢
用戶還沒登出
希望按到welcome這按鍵
user可以登出阿
建議您先去看一下
良葛格學習筆記
JSP 會轉譯為 Servlet,每個元素都有對應的 Java 元件。
Servlet/JSP 是一體兩面,想了解 JSP,先搞懂 Servlet。
您才知道為什麼?
因為您這個寫法就是,每次request 都去執行 <% session.invalidate();%>
<ul class="nav navbar-nav navbar-right">
<li><a href="index.jsp">welcome <% out.println(sacc);%>
<% session.invalidate();%>
</a></li>
</ul>
邏輯是要,點選welcome 事件,才去執行 <% session.invalidate();%>
不是每次request 都去執行 <% session.invalidate();%>