2012-11-30 11 views
8

में सर्वलेट सत्र विशेषता मान की जांच करना मेरे पास कोई फ्रेमवर्क जावा एप्लिकेशन नहीं है। इसमें व्यापार तर्क के लिए दृश्य और servlets के लिए jsp फ़ाइलें शामिल हैं। मुझे उपयोगकर्ता सत्र को पहले नाम पैरामीटर के साथ सर्वलेट सेट करना होगा। जेएसपी फ़ाइल में, मुझे यह जांचने की ज़रूरत है कि मेरे पहले नाम पैरामीटर का मान है या नहीं। यदि firstName पैरामीटर सेट किया गया है, तो मुझे jsp फ़ाइल में कुछ HTML प्रदर्शित करने की आवश्यकता है। यदि यह सेट नहीं है, तो मुझे jsp फ़ाइल में अलग-अलग HTML प्रदर्शित करने की आवश्यकता है।जेएसपी फ़ाइल

Servlet.java:

HttpSession session = request.getSession(); 
session.setAttribute("firstName", customer.getFristName()); 
String url = "/index.jsp"; 
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url); 
dispatcher.forward(request, response); 

header.jsp:

// Between the <p> tags bellow I need to put some HTML with the following rules 
// If firstName exist: Hello ${firstName} <a href="logout.jsp">Log out</a> 
// Else: <a href="login.jsp">Login</a> or <a href="register.jsp">Register</a> 

<p class="credentials" id="cr"></p> 

क्या यह करने के लिए सबसे अच्छा तरीका क्या होगा?

अद्यतन:

यहाँ एक महान ट्यूटोरियल मैं JSTL पर पाया है, मामले में किसी को भी इसकी आवश्यकता है: http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm

उत्तर

9
<% if (session.getAttribute("firstName") == null) { %> 
    <p> some content </p> 
<% } else {%> 
    <p> other content </p> 
<% } %> 
+0

धन्यवाद इब्राहिम! यह समाधान स्वच्छ और सरल है। यह ठीक वही था जो मैं चाहता था। मैं जेएसपी ईएल के साथ गड़बड़ कर रहा था और यह वास्तव में गन्दा हो रहा था। :) – Marta

+3

मेसी? जाहिर है आपने कुछ गलत किया है। JSTL/ईएल के साथ यह रूप में सरल है '

कुछ सामग्री

अन्य सामग्री

'। मुझे यकीन नहीं है कि यह और अधिक गन्दा है। – BalusC

+0

@ बाल्लूसी मैंने निश्चित रूप से किया था! मैं ईएल में एक और निर्माण के लिए देख रहा था, और इसे काम करने के लिए नहीं मिल सका, इसलिए मैंने विचार छोड़ दिया। अपना उदाहरण देखकर, यह वही करेगा जो मैं चाहता था। मैं अपने जेएसपी में जावा कोड डालने के बजाए शायद इसका इस्तेमाल करूंगा। मैंने पढ़ा है कि आपके जेएसपी में जावा की तुलना में ईएल/जेएसटीएल का उपयोग करना बेहतर अभ्यास है। आपकी सहायताके लिए धन्यवाद! – Marta

0

सर्वलेट आप के रूप में

 HttpSession session = request.getSession(true); 
     session.setAttribute("firstName", customer.getFristName()) 
     response.sendRedirect("index.jsp"); 

इस प्रकार लिख सकते हैं request.getSession(true) कोई नया सत्र देता है यदि यह किसी सत्र में मौजूद नहीं है अन्यथा यह वर्तमान सत्र वापस कर देगा। और, index.jsp पेज में आप इस प्रकार कर सकते हैं:

<% 
if(session.getAttribute("firstName")==null) { 
%> 
<jsp:include page="firstPage.html"></jsp:include> 
<% 
} else { 
%> 
<jsp:include page="secondPage.html"></jsp:include> 
<% 
}%> 

यहाँ, यदि firstName रिक्त है तो firstPage.html पेज अन्यथा secondPage.html में शामिल किया जाएगा।

+0

धन्यवाद विस्थ! GetSession (सच) पर महान स्पष्टीकरण। – Marta

+1

'request.getSession() '** ** ** ** बिल्कुल कवर के तहत समान है। यह भी देखें [javadoc] (http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest।एचटीएमएल # getSession())। वास्तव में, 'सत्य' तर्क पूरी तरह से अनिवार्य है। – BalusC

1

मुझे लगता है कि ऐसा करने का सबसे अच्छा तरीका जेएसटी टैग का उपयोग है। क्योंकि सरल जेएसपी अनुप्रयोग के लिए सभी जावा कोड को एचटीएमएल में जोड़ना अच्छा विचार हो सकता है लेकिन अधिक भारी आवेदन एचटीएमएल पर न्यूनतम जावा कोड का उपयोग करने के लिए सबसे अच्छा अभ्यास है। (तर्क से अलग दृश्य परत) (इसे https://stackoverflow.com/a/3180202/2940265 के लिए पढ़ें)
आपके लिए उम्मीद आप आसानी से की तरह

<c:if test="${not empty firstName}"> 
    <%--If you want to print content from session--%> 
    <p>${firstName}</p> 

    <%--If you want to include html--%> 
<%@include file="/your/path/to/include/file.jsp" %> 

    <%--include only get wrong if you give the incorrect file path --%> 
</c:if> 
<c:if test="${empty firstName}"> 
    <p>Jaathi mcn Jaathi</p> 
</c:if> 

bellow आप सही तरीके से JSTL शामिल नहीं किया, तो आप उम्मीद में असमर्थ होगा उत्पादन कोड का उपयोग कर सकते हैं। इस तरह की घटना के लिए इसे देखें https://menukablog.wordpress.com/2016/05/10/add-jstl-tab-library-to-you-project-correctly/