Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 
Search the JavaFAQ.nu
1000 Java Tips ebook

1000 Java Tips - Click here for the high resolution copy!1000 Java Tips - Click here for the high resolution copy!

Java Screensaver, take it here

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java programming articles and tips. Please take your copy here.

Take your copy of free "Java Technology Screensaver"!.

Easy Learn Java: Programming Articles, Examples and Tips - Page 445


Previous 1060 Stories (530 Pages, 2 Per Page) Next

Question: How do can I highlight search results in my JSP application?

Go to all tips in JSP, Servlets

If you used to search with Google or reading modern forums, you can see that your search words are highlighted in the results page and even more, when you click a link in results page you see that words you are searching are highlighted directly in the body of html page.


Question: How do can I highlight search results in my JSP application?

Answer: If you used to search with Google or reading modern forums, you can see that your search words are highlighted in the results page and even more, when you click a link in results page you see that words you are searching are highlighted directly in the body of html page.

Looks like complex task to highlight search results in Java (no search and highlight Class in Java API!!!), but it is not. The knowledge is key! You can already assume that it must be done some kind of text processing Smile

Actually all you need to highlight search word(s) in text with JSP is:

1. Get a text which must be searched.
2. Get a search term(s) from user input: can be posted with POST or GET.
3. Locate searched word(s) in the text, highlight them.
4. If no word found, just return original text.

After 20 minutes on weekend evening I was ready with two files: one JSP and one Java class:

test.jsp

Code:

<%@ page contentType="text/html;charset=UTF-8" language="java"
     
%>
<html>
  <head><title>Simple jsp page</title></head>
  <body>



   <%
    Test test = new Test();
     String text = " What makes AJAX-based clients unique is that the client contains page-specific control logic embedded as JavaScript technology. In traditional server-clients architectures, the page interacts with the JavaScript technology based on events such as the document being loaded, a mouse click, focus changes, or even a timer. AJAX interactions allow for a clear separation of presentation logic from the data. An HTML page can pull in bite-size pieces of data as needed rather than reloading the whole page every time a change needs to be displayed. AJAX will require a different server-side architecture to support this interaction model. Traditionally, server-side web applications have focused on generating HTML documents for every client event resulting in a call to the server. The clients would then refresh and re-render the complete HTML page for each response. Rich web applications focus on a client fetching an HTML document that acts as a template or container into which to inject content, based on client events using XML data retrieved from a server-side component. ";
<br />
// this is text we will search through

    String term = "AJAX"; // this is searched word, which will be higkighted in the text, all occured cases.

 %>
    The text we search trough: <%=text %> <br />
    Here are highlighted searched word <br /> <h4>AJAX</h4> <br />by yellow background: <br /> <%=test.highlightTerm(text, term) %>





  </body>

</html>

test.java

Code:

public class Test {

    public String highlightTerm(String text, String term){
        String startTag = "<span style=\"background-color: #FFFF00\">";
        String endTag = "</span>";
        if (!term.equals("")){

            StringBuffer hResult = new StringBuffer (startTag);
            hResult.append(term);
            hResult.append(endTag);
            System.out.println("---->" + text + "  " + term);
            return text.replace(term, hResult.toString());
        } else {
            return text;
        }
    }
}

User interaction code I will not describe here. Instead I will illustrate my example wit some kind of simulation. You see two files below: one is JSP page and another is Test Class which contains just one method which do text highlighting.

I assume that we got text from a user and it is in "String text" variable in JSP page. Search term we also got and it is "AJAX".

So, just create an Test instance and call for the method, passing to it text and search term.

When you run example test.jsp you will get in your browser:

    What makes AJAX-based clients unique is that the client contains page-specific control logic embedded as JavaScript technology. In traditional server-clients architectures, the page interacts with the JavaScript technology based on events such as the document being loaded, a mouse click, focus changes, or even a timer. AJAX interactions allow for a clear separation of presentation logic from the data. An HTML page can pull in bite-size pieces of data as needed rather than reloading the whole page every time a change needs to be displayed. AJAX will require a different server-side architecture to support this interaction model. Traditionally, server-side web applications have focused on generating HTML documents for every client event resulting in a call to the server. The clients would then refresh and re-render the complete HTML page for each response. Rich web applications focus on a client fetching an HTML document that acts as a template or container into      which to inject content, based on client events using XML data retrieved from a server-side component.

All the found search terms, in our case it is "AJAX" were found in the text.

You could wonder why for such simple example I have two files? The question is simple: JSP is used mostly to create a layout - presentation so say and class is for the content of the page.

Having presentation and content in different places makes code maintenance much easier. It also decreases a risk for "spaghetti" (anti pattern many people used unfortunately) code creation - when all the program is one big file - a few thousands lines.


6062 bytes more | comments? | Printer Friendly Page  Send to a Friend | Score: 4.5
Posted by aalex on Friday, March 31, 2006 (20:36:42) (8627 reads)

How to Tomcat 5? Part 2

Go to all tips in Java Tools

There are only 3 things likely to go wrong during a stand-alone Tomcat installation


In my previous article I described the Tomcat installation for single user. It is good if you run Tomcat server on your very own machine. But now days when computers are so powerful, we often share an application amongst many users.

How do we install one Tomcat server to share it between many users?

Normally after installation of Tomcat for single user you get such directory structure under $CATALINA_HOME directory:

bin - contains startup and binary files
common - contains all the external libraries which are used by Tomcat, not Tomcat classes here, look at server directory
    common/classes
    common/endorsed
    common/i18n
    common/lib

conf - all major configuration files are here
logs - here you find "famous" catalina.out log file and saved previous
    catalina.out and more logs, like manager.log, admin.log, host-manager.log
server - here Tomcat class files, packed in jar files and plus configuration files
    for host-manager and manager. Who are that? Read later
shared - here shared classes should be
temp - place for some temp things... Do not know exactly what is it.
    On my machine bugzilla37035-safeToDelete.tmp file with 0 bytes length here.
webapps - place where your web applications are/will be.
work - here Tomcat will place class files after the compilation. As you probably know,
    Tomcat compiles first JSP pages into servlet java code and then compiles them into
    class files. That's why it names servlet container, not JSP container Smile

Now when you got an overview on Tomcat structure we are ready to go further.

Tomcat has the variable $CATALINA_BASE which is in case of single user is equal to $CATALINA_HOME. Just add the argument "-Dcatalina.base=$CATALINA_BASE" to startup file and  $CATALINA_BASE variable must contain files for 'personal' Tomcat instance.

As you can probably assume sharing Tomcat between multiple users requires that every use can have own configuration and own applications.

Usage of this argument will force Tomcat  to use relative references for files in the following directories based
on the value of $CATALINA_BASE instead of $CATALINA_HOME:

* conf - Server configuration files (including server.xml)

* logs - Log and output files

* shared - For classes and resources that must be shared across all web applications

* webapps - Automatically loaded web applications

* work - Temporary working directories for web applications

* temp - Directory used by the JVM for temporary files (java.io.tmpdir)

Exactly what you need to get freedom and feel free from another guys Smile

If you do not pass the "-Dcatalina.base=$CATALINA_BASE" argument to the startup command, $CATALINA_BASE will default to the same value as $CATALINA_HOME, which means that the same directory is used for all relative path resolutions.

For troubleshooting of Tomcat server installation please look at Troubleshooting section below

************************************************************

The administration and manager web applications, which are defined in the $CATALINA_BASE/conf/Catalina/localhost/admin.xml

and

$CATALINA_BASE/conf/Catalina/localhost/manager.xml files, will not run in that configuration, unless either:
    - The path specified in the docBase attribute of the Context element is made
        absolute, and replaced respectively by $CATALINA_HOME/server/webapps/admin
        and $CATALINA_HOME/server/webapps/manager

    - Both web applications are copied or moved to $CATALINA_BASE,
        and the path specified in the docBase attribute of the Context
        element is modified appropriately.

    - Both web applications are disabled by removing
        $CATALINA_BASE/conf/Catalina/localhost/admin.xml
        and

 

        $CATALINA_BASE/conf/Catalina/localhost/manager.xml.================

Troubleshooting

================There are only really 3 things likely to go wrong during the stand-alone Tomcat install:

(1) The most common hiccup is when another web server (or any process for that matter) has laid claim to port 8080. This is the default HTTP port that Tomcat attempts to bind to at startup. To change this, open the file:

    $CATALINA_HOME/conf/server.xml

and search for '8080'. Change it to a port that isn't in use, and is greater than 1024, as ports less than or equal to 1024 require superuser access to bind under UNIX.

Restart Tomcat and you're in business. Be sure that you replace the "8080" in the URL you're using to access Tomcat. For example, if you change the port to 1977, you would request the URL http://localhost:1977/ in your browser.

(2) An "out of environment space" error when running the batch files in Windows 95, 98, or ME operating systems.

Right-click on the STARTUP.BAT and SHUTDOWN.BAT files. Click on "Properties", then on the "Memory" tab. For the "Initial environment" field, enter in something like 4096.

After you click apply, Windows will create shortcuts which you can use to start and stop the container.

(3) The 'localhost' machine isn't found. This could happen if you're behind a proxy. If that's the case, make sure the proxy configuration for your browser knows that you shouldn't be going through the proxy to access the "localhost".

In Netscape, this is under Edit/Preferences -> Advanced/Proxies, and in Internet Explorer, Tools -> Internet Options -> Connections -> LAN Settings.

*************************************************************

Disclaimer: English is not native language for me and I appreciate if you correct my errors in a friendly way Smile


7384 bytes more | comments? | Printer Friendly Page  Send to a Friend | Score: 3.75
Posted by aalex on Thursday, March 30, 2006 (01:00:00) (4134 reads)

Previous 1060 Stories (530 Pages, 2 Per Page) Next

530| 529| 528| 527| 526| 525| 524| 523| 522| 521| 520| 519| 518| 517| 516| 515| 514| 513| 512| 511| 510| 509| 508| 507| 506| 505| 504| 503| 502| 501| 500| 499| 498| 497| 496| 495| 494| 493| 492| 491| 490| 489| 488| 487| 486| 485| 484| 483| 482| 481| 480| 479| 478| 477| 476| 475| 474| 473| 472| 471| 470| 469| 468| 467| 466| 465| 464| 463| 462| 461| 460| 459| 458| 457| 456| 455| 454| 453| 452| 451| 450| 449| 448| 447| 446|
445
| 444| 443| 442| 441| 440| 439| 438| 437| 436| 435| 434| 433| 432| 431| 430| 429| 428| 427| 426| 425| 424| 423| 422| 421| 420| 419| 418| 417| 416| 415| 414| 413| 412| 411| 410| 409| 408| 407| 406| 405| 404| 403| 402| 401| 400| 399| 398| 397| 396| 395| 394| 393| 392| 391| 390| 389| 388| 387| 386| 385| 384| 383| 382| 381| 380| 379| 378| 377| 376| 375| 374| 373| 372| 371| 370| 369| 368| 367| 366| 365| 364| 363| 362| 361| 360| 359| 358| 357| 356| 355| 354| 353| 352| 351| 350| 349| 348| 347| 346| 345| 344| 343| 342| 341| 340| 339| 338| 337| 336| 335| 334| 333| 332| 331| 330| 329| 328| 327| 326| 325| 324| 323| 322| 321| 320| 319| 318| 317| 316| 315| 314| 313| 312| 311| 310| 309| 308| 307| 306| 305| 304| 303| 302| 301| 300| 299| 298| 297| 296| 295| 294| 293| 292| 291| 290| 289| 288| 287| 286| 285| 284| 283| 282| 281| 280| 279| 278| 277| 276| 275| 274| 273| 272| 271| 270| 269| 268| 267| 266| 265| 264| 263| 262| 261| 260| 259| 258| 257| 256| 255| 254| 253| 252| 251| 250| 249| 248| 247| 246| 245| 244| 243| 242| 241| 240| 239| 238| 237| 236| 235| 234| 233| 232| 231| 230| 229| 228| 227| 226| 225| 224| 223| 222| 221| 220| 219| 218| 217| 216| 215| 214| 213| 212| 211| 210| 209| 208| 207| 206| 205| 204| 203| 202| 201| 200| 199| 198| 197| 196| 195| 194| 193| 192| 191| 190| 189| 188| 187| 186| 185| 184| 183| 182| 181| 180| 179| 178| 177| 176| 175| 174| 173| 172| 171| 170| 169| 168| 167| 166| 165| 164| 163| 162| 161| 160| 159| 158| 157| 156| 155| 154| 153| 152| 151| 150| 149| 148| 147| 146| 145| 144| 143| 142| 141| 140| 139| 138| 137| 136| 135| 134| 133| 132| 131| 130| 129| 128| 127| 126| 125| 124| 123| 122| 121| 120| 119| 118| 117| 116| 115| 114| 113| 112| 111| 110| 109| 108| 107| 106| 105| 104| 103| 102| 101| 100| 99| 98| 97| 96| 95| 94| 93| 92| 91| 90| 89| 88| 87| 86| 85| 84| 83| 82| 81| 80| 79| 78| 77| 76| 75| 74| 73| 72| 71| 70| 69| 68| 67| 66| 65| 64| 63| 62| 61| 60| 59| 58| 57| 56| 55| 54| 53| 52| 51| 50| 49| 48| 47| 46| 45| 44| 43| 42| 41| 40| 39| 38| 37| 36| 35| 34| 33| 32| 31| 30| 29| 28| 27| 26| 25| 24| 23| 22| 21| 20| 19| 18| 17| 16| 15| 14| 13| 12| 11| 10| 9| 8| 7| 6| 5| 4| 3| 2| 1|


Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy