在做一個用Struts做的電子商務項目時,遇到了一個這樣的問題:未登陸用戶購買商品時,要顯示用戶登陸畫面;而登陸用戶購買商品時,則不顯示登陸畫面而顯示用戶信息。可以用struts 1.1 的bean:present實現:
在JSP頁面頭部一定要加上相應的<%@ taglib 等標記,否則無法實現。我開始時就是忘了加<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %> ,而導致無論是使用 present 還是 notPresent ,網頁中都顯示用戶登陸頁面。:)。在jsp頁面實現代碼:
<%@ page language="java"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<logic:notPresent name="userid" scope="session">
// 這裏是登陸表單代碼
</logic:notPresent>
<logic:present name="userid" scope="session">
<bean:write key="userid" /> //顯示session中的用戶id (userid)
</logic:present>
在Struts的action的 execute 方法裏面可以這樣定義session變量:
String userId="123456";
request.getSession(true).setAttribute("userid",userId);
(注:request.getSeesion(boolean),這個方法裏面傳了一個boolean值,這個值如果是true,那麼如果當前的request的session不可用,那麼就創建新的會話,如果存在就返回當前的會話。如果參數是false,那麼在request的當前會話不存在的時候就返回null。)