I want my component presentation to be personalized depending on a customer characteristic (customerType). We show different component presentations depending different customerType accessing to the page. customerType will come from java backend logic(as of now I am bringing from URL request parameters).
I am done with following steps:-
Create Target Group.<br>
Add Target group with a component presentation on the page.<br>

condition will be used by Tridion CD APIs.
Published page has my Component Presentation wrapped with <tridion:TargetGroup> tag below :-

            <div>
    <tridion:TargetGroup itemURI="tcm:100-1000000-64">
        <tridion:Conditions negate="false" operator="AND">
        <tridion:Conditions negate="false" operator="OR">
        <tridion:Conditions negate="false" operator="AND">
        <tridion:Condition type="CustomerCharacteristic" operator="=" negate="false" name="customerType" value="1"/>
        <tridion:Condition type="CustomerCharacteristic" operator="=" negate="false" name="customerType" value="0"/>
        </tridion:Conditions>
        </tridion:Conditions>
        </tridion:Conditions>
        <form:form action="****" method="post" commandName="**"  id="location">
        <input type="submit" value="AppLoc" id="AppLoc" style="display:none;" />
        <div class="" role="main">
          <table>
        	<tr>
                 <td >Branch</td>
                 <td ><div>abc</div></td>
              </tr
          </table>
         </div>
        </form:form>
        </tridion:TargetGroup>
    </div>


What I am able to find is CD API  com.tridion.personalization  and below is my code 

        <%@ page import="com.tridion.web.jsp.JSPPage,
        com.tridion.personalization.CustomerCharacteristics,
        com.tridion.user.User"%>
        
        <%
        JSPPage waiPage = new JSPPage(pageContext, "tcm:1-1-64");
        CustomerCharacteristics customerCharacteristics = new CustomerCharacteristics(waiPage.getUser());
        String custT = request.getParameter("customerType");
        customerCharacteristics.setValue("customerType", custT);
        customerCharacteristics.executeUpdate();
        
        	
          %>
        <html>
          <head></head><body>
            <hr color="#000000" /> <center>
    
        <h3><%="- " + customerCharacteristics.getValue("customerType")%> </h3>
        <h3><%="----  :" + waiPage.getUser()%> </h3>
        
        <div>
    <!-- Below conditions updated ad per the suggestion provided by Bjørn van Dommelen -->
        <tridion:TargetGroup itemURI="tcm:159-164141-64">
        <tridion:Conditions negate="false" operator="AND">
        <tridion:Condition type="CustomerCharacteristic" operator="=" negate="true" name="customerType" value="2"/>
        </tridion:Conditions> 
            <div class="" role="main">
              <table>
                <tr>
                     <td >Branch</td>
                     <td ><div>abc</div></td>
                  </tr
              </table>
             </div>   
            </tridion:TargetGroup>
        </div>
          </center>
          </body>
          </html>`


I am getting my entries in CUSTOMER_CHARACTERISTICS and User table in Broker database. I think only think left now is condition.