{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "chem-bla-ics",
  "description": "Chemblaics (pronounced chem-bla-ics) is the science that uses open science and computers to solve problems in chemistry, biochemistry and related fields.",
  "home_page_url": "https://chem-bla-ics.linkedchemistry.info/",
  "feed_url": "https://chem-bla-ics.linkedchemistry.info/2008/01/20/java-server-pages-with-cdk.json",
  "icon": "https://chem-bla-ics.linkedchemistry.info/assets/images/chem-bla-ics_logo.png",
  "language": "en",
  "authors": [
    {
      "name": "Egon Willighagen",
      "url": "https://orcid.org/0000-0001-7542-0286",
      "_orcid": "0000-0001-7542-0286"
    }
  ],
  "items": [

    {
      "id": "https://doi.org/10.59350/3kvks-pdb73",
      "url": "https://chem-bla-ics.linkedchemistry.info/2008/01/20/java-server-pages-with-cdk.html",
      "title": "Java Server Pages with CDK functionality",
      "content_html": "<p>Setting up interactive web pages can be done in many way. <a href=\"http://en.wikipedia.org/wiki/JavaServer_Pages\">Java Server Pages</a> are just one of them.\nThey are quite similar to PHP pages or <a href=\"https://doi.org/10.59350/4gxzp-tds81\">Ruby <i class=\"fa-solid fa-recycle fa-xs\"></i></a>,\nand combine plain HTML (and likely any other output) code with fragments of code; Java source code in this case.</p>\n\n<p><a href=\"http://www.ubuntu.com/\">Ubuntu</a>’s <a href=\"http://packages.ubuntu.com/gutsy/web/tomcat5.5\">tomcat5.5</a> package installs quite easily, and sets up a server\nat port 8180. I still have to figure out how to nicely integrate it with the Apache server on port 80, though. Suggestions much appreciated.</p>\n\n<p>From then on, one can add new JSP pages by creating a ‘webapp’ in <code class=\"language-plaintext highlighter-rouge\">/usr/share/tomcat5.5-webapps</code>. The basic structure looks like:</p>\n\n<div class=\"language-shell highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code>mb-examples.xml\nmb-examples/index.jsp\nmb-examples/WEB-INF/\nmb-examples/WEB-INF/classes/\nmb-examples/WEB-INF/lib/\n</code></pre></div></div>\n\n<p>Just copying the <a href=\"http://cheminfo.informatics.indiana.edu/~rguha/code/java/nightly/\">large CDK jar</a> (the one with all the third party libraries)\ninto <code class=\"language-plaintext highlighter-rouge\">WEB-INF/lib/</code> did not work for me, but unjaring it into <code class=\"language-plaintext highlighter-rouge\">WEB-INF/classes/</code> seem to work fine.</p>\n\n<p>Then, you can just add Java code using the CDK library for what ever you like. The following (simple) example JSP page, takes one parameter,\na molecular formula. This could be the input given in a FORM, but the below page does not deal with that situation yet:</p>\n\n<div class=\"language-xml highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"err\">&lt;</span>%@ page import=\"java.util.*,org.openscience.cdk.*,org.openscience.cdk.tools.*\" %&gt;\n<span class=\"cp\">&lt;!doctype html public \"-//w3c//dtd html 4.0 transitional//en\"&gt;</span>\n<span class=\"nt\">&lt;html&gt;</span>\n<span class=\"err\">&lt;</span>%\n   String mf = request.getParameter( \"mf\" );\n%&gt;\n<span class=\"nt\">&lt;head&gt;</span>\n   <span class=\"nt\">&lt;meta</span> <span class=\"na\">http-equiv=</span><span class=\"s\">\"Content-Type\"</span> <span class=\"na\">content=</span><span class=\"s\">\"text/html; charset=iso-8859-1\"</span><span class=\"nt\">&gt;</span>\n   <span class=\"nt\">&lt;meta</span> <span class=\"na\">name=</span><span class=\"s\">\"Author\"</span> <span class=\"na\">content=</span><span class=\"s\">\"E.L. Willighagen\"</span><span class=\"nt\">&gt;</span>\n   <span class=\"nt\">&lt;title&gt;</span>Metabolomics Examples<span class=\"nt\">&lt;/title&gt;</span>\n<span class=\"nt\">&lt;/head&gt;</span>\n\n<span class=\"nt\">&lt;body</span> <span class=\"na\">bgcolor=</span><span class=\"s\">\"#FFFFFF\"</span><span class=\"nt\">&gt;</span>\n\n<span class=\"nt\">&lt;table&gt;</span>\n<span class=\"nt\">&lt;tr&gt;</span>\n<span class=\"nt\">&lt;td&gt;</span>Molecular Formula:<span class=\"nt\">&lt;/td&gt;</span>\n<span class=\"nt\">&lt;td&gt;</span><span class=\"err\">&lt;</span>%= mf %&gt;<span class=\"nt\">&lt;/td&gt;</span>\n<span class=\"nt\">&lt;/tr&gt;</span>\n\n<span class=\"err\">&lt;</span>%\nMFAnalyser analyser = new MFAnalyser(mf, new Molecule());\ndouble accurateMass = Math.round(analyser.getMass()*10000.0)/10000.0;\n%&gt;\n\n<span class=\"nt\">&lt;tr&gt;</span>\n<span class=\"nt\">&lt;td&gt;</span>Mono-isotopic Accurate Mass:<span class=\"nt\">&lt;/td&gt;</span>\n<span class=\"nt\">&lt;td&gt;</span><span class=\"err\">&lt;</span>%= accurateMass %&gt;<span class=\"nt\">&lt;/td&gt;</span>\n<span class=\"nt\">&lt;/tr&gt;</span>\n<span class=\"nt\">&lt;/table&gt;</span>\n\n<span class=\"nt\">&lt;/body&gt;</span>\n<span class=\"nt\">&lt;/html&gt;</span>\n</code></pre></div></div>\n\n<p>Now, a lot of improvement can be achieved. For example, the <code class=\"language-plaintext highlighter-rouge\">&lt;head&gt;</code> stuff can be split out in a <code class=\"language-plaintext highlighter-rouge\">header.include</code>. And, after proper integration with the\nApache server, <a href=\"http://httpd.apache.org/docs/2.0/misc/rewriteguide.html\">rewrites</a> could be used to create a REST service. But, the above is just to give you an idea.</p>\n\n<p>In case you wonder, this work is related to the opensource <a href=\"https://chem-bla-ics.linkedchemistry.info/2007/11/22/metware-metabolomics-database-project.html\">MetWare <i class=\"fa-solid fa-recycle fa-xs\"></i></a>\ndatabase software development our group is involved in.</p>\n\n<h4>References</h4>\n<div class=\"csl-bib-body\">\n    <div class=\"csl-entry\">Apodaca, R. (2006). Build a Rails Cheminformatics Application in Thirty Minutes. In <i>Front Matter</i>. Front Matter. https://doi.org/10.59350/4gxzp-tds81 <a href=\"https://doi.org/10.59350/4gxzp-tds81\">CrossRef</a> <a href=\"https://qlever.scholia.wiki/doi/10.59350/4gxzp-tds81\">Scholia</a></div>\n  </div>",
      "summary": "Setting up interactive web pages can be done in many way. Java Server Pages are just one of them. They are quite similar to PHP pages or Ruby , and combine plain HTML (and likely any other output) code with fragments of code; Java source code in this case.",
      
      "date_published": "2008-01-20T00:00:00+00:00",
      "date_modified": "2025-08-17T00:00:00+00:00",
      "tags": ["java","cdk","metware"],
      "_references": [
        
          
          
            { "url": "https://doi.org/10.59350/4gxzp-tds81", "doi": "10.59350/4gxzp-tds81"
             }
            
          
        ],
      
      
      
      
      
      
        "authors": [ { "name": "Egon Willighagen", "url": "https://orcid.org/0000-0001-7542-0286" } ]
      
    }

  ]
}
