JSP Variable Scope

Hello,
I'm fairly new to JSP, so I apologize if this is a newbie question. I'm having a problem where it appears as though some variables I defined in the declaration area of my JSP page are shared by multiple clients. Here is a code snippet...
<%@ page import="java.util.*" %>
<jsp:useBean id="postSearch" scope="request" class="healthweb.PostBean" />
<%!
String hridErr = "";
String emplHrid = "";
String supvHrid = "";
String yourHrid = "";
boolean youAreEmpl = true;
boolean youAreSupv = false;
Hashtable[] empl;
Hashtable[] you;
Hashtable[] supv;
%>
<SCRIPT LANGUAGE="JavaScript">
alert("<%= request.getParameter("yHrid") %>");
alert("<%= youAreEmpl %>");
</SCRIPT>
As you can see, I'm initializing the youAreEmpl variable to true. However, if a client executes this JSP and the variable gets set to false, it seems to be false when other clients access the JSP initially.
I'm very confused by this. Doesn't each client receive its own scope and its own instance of the object created by the JSP page?

First off, let's start by explaining what's going on here. A JSP page is converted to a servlet via the JSP parsing servlet that initially handles the request. When you use the declaration syntax <%!...%> you are declaring members (variables, methods, etc.) that are local to the underlying servlet. Since a servlet is a multi-threaded object, all clients share the same servlet object created from the JSP page. Thus, threading issues apply to all local members of the servlet object. In other words you have to make sure the members of the servlet are thread safe.
Many are confused by this because JSP shields you somewhat from these concerns if you stay within the confines of the predefined service() method. What I mean is this. everything you code within the <%...%> and <%=...%> delimiters is placed in the service method of the underlying servlet. This is the collection of code/objects that each client runs a unique copy of. These areas are not subject to threadding concerns/issues.
Now, There are a number of remedies to your situation. You can remove the exclamation point from the delimeters around your variable declarations (i.e. change all <%!...%> to <%...%>), or you could add the following implements clause to your JSP page via JSP directive: implements SingleThreadModel
Forgive me, I don't recall the exact syntax for this as I don't have any of my manuals at hand. I believe it's something like: <%@ page implements="SingleThreadModel" %> Either would solve the problem. The SingleThreadModel forces each servlet to execute in it's own thread.
Kind Regards,
Cliff

Similar Messages

  • Seting a JSp variable to session scope in JSp page itself

    Hi,
    I have code like this
    <HTML>
         <HEAD>
              <TITLE>Change Password</TITLE>
              <LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet/vclinical.css" TITLE="Style">
    </HEAD>
    <BODY>
    <form name="form">
    <select name="ss" onChange="this.form.qq.value=options[selectedIndex].value;getit()">
    <option value=1>ss1</option>
    <option value=2>ss2</option>
    </select>
    <input type="text" name="qq" value="">
    <%
    String asd=request.getParameter("qq");
    session.setAttribute("Stored", asd);
    System.out.println("value is"+asd);
    %>
    </form>
    </BODY>
    </HTML>
    here i want to set value of a JSP variable qq to session scope and here i am not invoking any servlet i want value of qq in next JSP page i am not submitting the page so how i can handle this. this code does not work so please tell me how to do this i am using struts frame work

    if you are using the struts framework, then you can make an ActionForm with getters and setters for the stuff that you are writing in the JSP i mean the radio buttons and text boxes etc
    from that action form you can get the values any time any where
    you just need to enter some thing like below in the struts-config.xml file
    <form-bean name="the action form name" type="package name.Actionform name" />
    <action path="/controller " type="package name.controller name" name="Action form name" scope="session">
    you can either put the action form in request scope or session scope

  • Assining a bean attribute to a jsp variable

    I am writing a struts application and am using
    <bean:write name="configattribute" property="name"/>
    to print out info on my jsp page.
    I was wondering if I could assign that value to a local jsp variable so I can check its value and change the colour of the text accordingly.
    e.g.
    String name = <bean:write name="configattribute" property="name"/>;
    if name.equals("Ben"){
    out.print(<font color=\"red\">;
    else{
    out.print(<font color=\"blue\">;
    }

    You should still be able to use the code I listed...the logic:iterate tag creates the bean "configname" in the page scope. So you should be able to do something like this:
    <logic:iterate id="configname" name="confignames">
       <tr>
          <td>
    <% ConfigName configname = (ConfigName)pageContext.getAttribute( "configname" );
       String color = "blue";
       if( "julius".equalsIgnoreCase( configName.getOwner( ) ) )
          color = "red";
       } %>
            <span style="color: <%= color %>"><bean:write name="configname" property="owner"/></span>
          </td>
          <td>
             <bean:write name="configname" property="name"/>
          </td>
       </tr>
    </logic:iterate>Does that sound right?
    - Jesse

  • Assigning html input value to a jsp variable

    I have the following problem: I need to assign the value of html <input> field to a jsp variable. This should be done without submittion of the form.
    <form name="main">
    <table>
    <tr>
    <td><input type="text" name="gantry" value="123"></td>
    </tr>
    <table>
    </form>
    Is there any way to access main.gantry.value from jsp and assign it to a variable? I tried
    <% prevGantry = main.gantry.value; %>
    but it didn't work, and the problem is not with parsong or initialisation. Please, can anyone help?
    Best regards, SoVa.

    No it can't be done. You are mixing up java with javascript.
    Java/JSP runs on the server end. Generates an HTML page and stops running.
    The page loads in the browser, and and can run javascript locally.
    The only way to run java code again is to go through the request/response process. ie submit a form, click a link, make an Ajax call...
    The only way to get a field from the screen into a java variable is via request.getParameter().

  • Assigning a javascript value to a JSP variable

    How do i assign a javascript value to a JSP variable?
    eg
    <%
    String JSPvar;
    %>
    <script language="JavaScript1.2">
    <!--
    var javascriptVar="hey"
    -->
    </script>
    <%
    JSPvar = javascriptVar ???
    %>

    You do know that the JSP runs on the server and generates HTML, including Javascript, that is executed on the client, don't you?

  • Help: How to assign dynamically a javascript variable to a jsp variable???

    Hello all,
    What I need to do is to assign the value of the html form element which is a checkbox in this case:
    <input name="ADB02_checkbox" type=checkbox id="ADB02_checkbox" onClick="decide_enable_or_disable_particular_checkbox()" value="ADB02">
    to a jsp variable :
    <%
    String riderCode = "";
    %>
    Its dynamic because i need to do different operations based on different rider codes like in this function:
    function decide_enable_or_disable_particular_checkbox() {
    var rider = document.rider_form;
    alert(rider.ADB02_checkbox.value);
    if (rider.<%= riderCode%>_checkbox.checked == true) {
    enable_all_row_elements_for_<%= riderCode%>();
    else {
         disable_all_row_elements();
    which uses the naming of the rider code to call other corresponding functions.
    so is there any way that you guys ca suggest a solution.
    what i thought is to do this:
    function decide_enable_or_disable_particular_checkbox() {
    var rider = document.rider_form;
    HERE--> riderCode = rider.ADB02_checkbox.value;
    alert(rider.ADB02_checkbox.value);
    if (rider.<%= riderCode%>_checkbox.checked == true) {
    enable_all_row_elements_for_<%= riderCode%>();
    else {
         disable_all_row_elements();
    or
    add an onFocus="riderCode = document.rider_form.ADB02_checkbox.value;" in the checkbox tag.
    but can i do that or is there any other way or is it totally impossible to assign javascript values to jsp variables.

    Hi again,
    I got a problem here abt looping in javascript.
    The prob is that only the 1st loop works the rest are not.
    So only the checkbox in the 1st row is enabled, the rest aren't.(only ADB02 is enabled not DLP01 cause ADB02 is 1st in the loop)
    Here are 2 of many of the checkboxes in different rows:
    <input name="ADB02_checkbox" type="checkbox" id="ADB02_checkbox" value="checkbox" onClick="val_checkbox()" disabled=true>
    <input name="DLP01_checkbox" type="checkbox" id="DLP01_checkbox" value="checkbox" onClick="val_checkbox()" disabled=true>
    This is declared in jsp:
    <%
    //to be used with javascript function prepare_elements() for checking to enable/disable checkbox , to check age base and limit of insured
    String[][] riderCheckArray = {
    {allPlans.PLAN_HER_MY_FUTURE, allRiders.RIDER_ACCIDENTAL_DEATH_BENEFIT, "20", "60"},
    {allPlans.PLAN_HER_MY_FUTURE, allRiders.RIDER_LIFELINE_BENEFIT, "20", "50"},
    {allPlans.PLAN_HER_MY_FUTURE, allRiders.RIDER_MEDICASH_100_PLAN, "0", "55"},
    {allPlans.PLAN_HER_MY_FUTURE, allRiders.RIDER_MEDICASH_200_PLAN, "0", "55"},
    {allPlans.PLAN_HER_MY_FUTURE, allRiders.RIDER_MEDICASH_300_PLAN, "0", "55"},
    {allPlans.PLAN_HER_MY_FUTURE, allRiders.RIDER_MANUTERM_REDUCING_TERM_ASSURANCE_PLAN, "16", "65"},
    {allPlans.PLAN_HER_MY_FUTURE, allRiders.RIDER_PERSONAL_ACCIDENT_BENEFIT, "20", "65"},
    {allPlans.PLAN_HER_MY_FUTURE, allRiders.RIDER_15_YEAR_LEVEL_AND_CONVERTIBLE_MANUTERM_RIDER, "16", "55"},
    {allPlans.PLAN_HER_MY_FUTURE, allRiders.RIDER_20_YEAR_LEVEL_AND_CONVERTIBLE_MANUTERM_RIDER, "16", "50"},
    {allPlans.PLAN_HER_MY_FUTURE, allRiders.RIDER_5_YEAR_RENEWABLE_AND_CONVERTIBLE_MANUTERM_RIDER, "16", "60"},
    {allPlans.PLAN_HER_MY_FUTURE, allRiders.RIDER_10_YEAR_RENEWABLE_AND_CONVERTIBLE_MANUTERM_RIDER, "16", "60"},
    %>
    Here's the script (the riderCheckArray[any no.] should be eg: riderCheckArray[0] (has an i in front))
    <script>
    <!--////////////////////////////////////PREPARE PAGE BASED ON PLAN///////////////////////////////////-->
    function prepare_elements() {
    var rider = document.rider_form;
    <!--///////////////////////////////////////////////////for her@myfuture////////////////////////////////////-->
    for (i=0 ; i < <%= riderCheckArray.length%> ; i++) {
    if ("<%= txtPlanCode%>" == "<%= riderCheckArray[i][0]%>" ) {
    riderCode = "<%= riderCheckArray[i][1]%>";
    if (<%= insuredAge.intValue()%> < <%= Integer.parseInt(riderCheckArray[i][2])%> ||
    <%= insuredAge.intValue()%> > <%= Integer.parseInt(riderCheckArray[i][3])%>) {
    disable_particular_checkbox();
    alert("This rider cannot be attached. This rider can only be attached for age range " +
    <%= riderCheckArray[i][2]%> +
    " to " +
    <%= riderCheckArray[i][3]%>);                    
    else {                    
    enable_particular_checkbox();
    <!--////////////////////////////////////ENABLE/DISABLE checkboxes////////////////////////////-->
    function enable_particular_checkbox() {
    var Rdr_Checkbox = riderCode + "_checkbox";
    var rider = document.rider_form;
    rider.all(Rdr_Checkbox).disabled = false;
    rider.all(Rdr_Checkbox).style.background ="FFFFFF";
    function disable_particular_checkbox() {
    var Rdr_Checkbox = riderCode + "_checkbox";
    var rider = document.rider_form;
    rider.all(Rdr_Checkbox).disabled = true;
    rider.all(Rdr_Checkbox).style.background ="CCCCCC";
    </script>

  • How to assign a JSP variabl's value to a JavaScript variable?

    Hello,
    I want to assign a JSP variable's value to JAVASCRIPT variable.
    or how to assign JavaScript variable's value to JSP varialbe
    HOw do i do it ?
    can anyone please help?
    Regards and thanks for your time.
    Ashvini

    I want to assign a JSP variable's value to
    JAVASCRIPT variable.
    var jsVariable = <%=someVariable%>;
    or how to assign JavaScript variable's value to JSP
    varialbeYou can't. JSP is server-side and JavaScript is client-side. The JSP variables are never available on the client side for any sort of assignment.

  • Unable assign a BPM Object field value to a JSP Variable using "invoke"

    Hi,
    I'm unable to retrieve a value returned by a BPM Object Method and use it in JSP. Here is what I'm trying to achieve:
    BPM object named : "myObject" has a method "getRequiredValue" which returns a "String". I want to assign the value returned by "getRequiredValue" to a JSP Variable "myVariable" using invoke method as below:
    <% String myVariable = ""; %>
    <f:invoke var="${myObject}" methodName="getRequiredValue" retAttName="myVariable"/>
    <% out.println ("myVariable: " + myVariable); %>
    When I execute the above code I don't get the value being returned by "getRequiredValue" into "myVariable".
    Any help would be highly appreciated!
    regards,
    MK

    1. Make sure you mark the "Server Side Method" property of the getRequiredValue method to "Yes".
    2. I guess you dont need to specify "<% String myVariable = ""; %>". Try removing it.
    3. Replace "<% out.println ("myVariable: " + myVariable); %>" by <c:out value="${myVariable}"/> just in case!
    4. Lastly, I hope "myObject" is the name of the instance variable in your screenflow, and not the BPM object name.
    Hope this helps
    -Hemant

  • How to get javascript variable in jsp variable

    Hi all,
    i have a variable str in my javascript function
    var str = somevaluei want this str value in jsp variable in the same page...
    how can this be done..???
    any ideas...
    Thanks

    I dont know if its possible or not.
    Actually it depends on what do you want to do with the variable.
    as far as assisginng value to the hidden variable is concerned it can be done this way.
    <% jsp code
    String hiddenVar = "";
    %>
    < html code
    <input type type = "hidden" name="hidden" vale="<%=hiddenVar %>"
    html ends>
    while in js function you can assign vale to the hidden variable which will ultimately assign value to the JSP variable as follows.
    var str = "value";
    document.form_name.hidden_field_name.value = str.
    hope this hepls.

  • How can I obtain the value of a database column in a JSP variable ?

    How can I obtain the value of a table column in a JSP variable?
    For example the <jbo:ShowValue datasource="cl" dataitem="Cont" ></jbo:ShowValue>
    I need to have it in a variable like this:
    <% String cnt=<jbo:ShowValue datasource="cl" dataitem="Cont" ></jbo:ShowValue>; %>
    But it is not workig this way.
    Please help me to obtain the value.
    I am using JDev RC2.
    Thanks.

    Try something like
    String cnt = c1.getRowSet().getCurrentRow().getAttribute("Cont").toString();
    -A
    How can I obtain the value of a table column in a JSP variable?
    For example the <jbo:ShowValue datasource="cl" dataitem="Cont" ></jbo:ShowValue>
    I need to have it in a variable like this:
    <% String cnt=<jbo:ShowValue datasource="cl" dataitem="Cont" ></jbo:ShowValue>; %>
    But it is not workig this way.
    Please help me to obtain the value.
    I am using JDev RC2.
    Thanks.

  • How to pass a jsp variable into javascript??

    <p><%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
    <p><%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
    <p><html>
    <p><c:set var="binrmapi" value="http://localhost/paas-api/bingorooms.action;jsessionid=XXXXXX?userId=TEST2&sessionId=1&key=1" />
    <p><c:import var="testbinrm" url="${fn:replace(binrmapi, 'XXXXXX', jsessionid)}"/>
    <p><c:set var="tuples" value="${fn:split(testbinrm, '><')}" />
    <p>Time until next game
    <p><c:forEach var="tuple" items="${tuples}">
    <p><c:if test="${fn:contains(tuple, 'row ')}">
    <p> <p><code>
    <p> <c:set var="values" value="${fn:split(tuple, '=\"')}" />
    <p> <font color="blue">
    <p> <c:out value="${values[17]}" />
    <p><c:set var="remainingtime" value="${values[17]}" />
    <p> </font>
    <p> </code>
    <p></c:if>
    <p></c:forEach>
    <p><form name="counter"><input type="text" size="8" name="d2"></form>
    <p><script>
    <p>var milisec=0
    <p>var seconds=eval("document.myForm.remaining").value;
    <p>function display(){
    <p> if (milisec<=0){
    <p> milisec=9
    <p> seconds-=1
    <p>}
    <p>if (seconds<=-1){
    <p> milisec=0
    <p> seconds+=1
    <p> }
    <br>else
    <p> milisec-=1
    <p> document.counter.d2.value=seconds+"."+milisec
    setTimeout("display()",100)
    <p>}
    <p>display()
    <p></script>
    <p></body>
    <p></html>
    <p>This is my code that i was working on, in the jsp part of the script, i get a api call and save a value of time in the variable remainingtime.. and in the javascript, i try to have a countdown clock counting down the remaining time.. but i guess it doesnt work.. how can i get that working? thanks alot
    Message was edited by:
    hamham3001
    Message was edited by:
    hamham3001
    Message was edited by:
    hamham3001
    Message was edited by:
    hamham3001

    Re: How to pass a jsp variable into javascript??Here is the sameple one, hope it will solves your problem.
    <html>
    <body>
    <form name=f>
    <%!
    String str = "A String"
    %>
    <script>
    var avariable = <%=str%>
    <script>
    </form>
    </body>
    </html>
    Let me know if you face any problem

  • Variable Scope at package or interface level

    Hi,
    Can we set the ODI Project variable scope to package or interface level
    because in my project im using a last rundate refresh variable this variable value will be changed at the time of execution of each package.
    Thanxs
    Madhavi

    you can create it as "Not Persistent" and then its value exist per ODI session.
    In this way, several sessions can keep independent value to the same variable.

  • Passing jsp variable into javascript.....

    Hai friends,
    Look this code.....
    var mywindow= window.open( ......)
    mywindow.<%= loc%>.style.visibility = "hidden";     
    loc is my jsp variable passing dyanamically to the script....
    But it is not taking....
    when i assign jsp var into javascript like
    mywindow.somehardcodedvalue.style.visibility = <%= loc%>;     
    it is working fine ....
    pl reply me.......

    Hi,
    It is not working.My code is like....
    String loc=(String)arrStr;
    %>
    <script language="JavaScript" type="text/JavaScript">
    mywindow.<%= loc%>.style.visibility = "hidden";     
    </script>
    <%

  • How can I access JSP variables from a JavaScript function in a JSP page?

    Respected sir
    How can I access JSP variables from a JavaScript function in a JSP page?
    Thanx

    You may be get some help from the code below.
    <%
        String str="str";
    %>
    <script>
        function accessVar(){
           var varStr='<%=str%>';
           alert(varStr);// here will diplay 'str'
    </script>

  • Parsing JSP variable into JavaScript

    Hi,
    I am trying to parse a JSP variable into a pice of JavaScript code:
    <%
    some jsp code .....
    String table_name=cols[0].toString();
    %>
    <script language="javascript">
    var jsTemp = <%=table_name%>
    alert ('jsTemp')
    </script>
    <%some more JSP....
    This does not create an alert, any ideas why? Am I missing a quote/semi-colon somewhere?

    Sure this is being executed,
    when trying to run, this does not work:
    String table="TEST";%>
    <script language="javascript">var jsTemp = <%=table%> alert ('jsTemp');</script>
    <%more JSP...
    when trying to similarly run, I get the popup 'HELLO':
    String table="TEST"; //not used anymore%>
    <script language="javascript">var jsTemp = "HELLO"; alert ('jsTemp');</script>
    <%more JSP...
    Is there supposed to be a semi-colon after <%=table%> ? Or is there another issue with this bit of code?

Maybe you are looking for

  • (2014) Creative Cloud Desktop App updates

    I noticed in the recent Creative Cloud desktop apps the updates indicate in (2014).  Are these apps actually different than the old CC apps for Photoshop, InDesign and Illustrator or once the update takes place the old update for the app without (201

  • Data nt capturing in are1 and are3 document

    dear sir, in are1 and are3 documents base exicise value is nt being captured and higher edusess 1% too but BED and educess is captured ?can anybody help me ?is ita notes problem?

  • About to Purchase Macbook Pro, with reservations

    I am about to purchase a Macbook Pro, but I have some reservations I wanted to level about, and get the communities opinion. I really want leopard when it is released in October, but I'm going to school, so I cant wait till then to purchase it. I've

  • Message is original file cannot be found what do i do

    i have downloaded and paid i tunes for alot of songs and i can see them in my downloads but the songs have a barred sign beside the song no when i go to play it message is original file cannot be found what do i do

  • Media Sync Doesn't Recognize Device

    Just got an unlocked Curve 8320. Inserted a media card, and downloaded Media Sync to my PC, not the whole Desktop Manager. Media Sync now doesn't recognize my device; have tried this tons of times! And, my computer itself doesn't recognize it as a US