Servlet with JDBC for Ayurvedic Remedies — Form-based Ayurvedic Remedy Finder


Servlet with JDBC for Ayurvedic Remedies

Build a simple, form-based web system using Java Servlets and JDBC that recommends Ayurvedic remedies for common ailments. This tutorial covers database schema, sample data, a servlet to process the form and query remedies, and a JSP to display results. Ideal for BCA students and IKS projects.

What you'll build

  • A MySQL table that stores ailments and recommended Ayurvedic remedies.
  • A form (HTML/JSP) where users select or type an ailment.
  • A servlet that accepts the form, queries the database via JDBC, and forwards results to a JSP.

Database: Schema & Sample Data

CREATE DATABASE iks_db;
USE iks_db;

CREATE TABLE ailments (
  id INT AUTO_INCREMENT PRIMARY KEY,
  ailment_name VARCHAR(150) NOT NULL,
  symptoms TEXT,
  remedy TEXT,
  precautions TEXT,
  last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

INSERT INTO ailments (ailment_name, symptoms, remedy, precautions) VALUES
('Common Cold', 'runny nose, cough, mild fever', 'Tulsi kadha with honey; steam inhalation', 'Avoid cold drinks; consult doctor if high fever'),
('Indigestion', 'bloating, belching, mild pain', 'Ajwain with warm water; ginger tea', 'Avoid heavy fried foods; seek doctor if persistent'),
('Insomnia', 'difficulty sleeping', 'Warm milk with nutmeg; Ashwagandha supplements', 'Consult physician for chronic insomnia');

Frontend: Simple JSP form (index.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!doctype html>
<html>
<head>
  <meta charset="utf-8" />
  <title>Ayurvedic Remedies Finder</title>
  <style>
    body{font-family:Arial,Helvetica,sans-serif;max-width:900px;margin:20px auto;color:#222}
    .card{background:#fff;padding:16px;border-radius:8px;box-shadow:0 1px 6px rgba(0,0,0,.06)}
    input[type="text"]{width:60%;padding:8px;margin-right:8px}
    button{padding:8px 12px}
  </style>
</head>
<body>
  <div class="card">
    <h2>Find Ayurvedic Remedies</h2>
    <form method="get" action="findRemedy">
      <label for="ailment">Enter ailment (or select):</label><br/>
      <input type="text" id="ailment" name="ailment" placeholder="e.g., Indigestion or Common Cold" required />
      <button type="submit">Find Remedy</button>
    </form>
  </div>
</body>
</html>

Servlet: FindRemedyServlet (Java)

import java.io.IOException;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

@WebServlet("/findRemedy")
public class FindRemedyServlet extends HttpServlet {
    private static final String JDBC_URL = "jdbc:mysql://localhost:3306/iks_db?useSSL=false&serverTimezone=UTC";
    private static final String DB_USER = "root";
    private static final String DB_PASS = "your_password";

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String ailmentParam = req.getParameter("ailment");
        if (ailmentParam == null || ailmentParam.isBlank()) {
            req.setAttribute("message", "Please enter an ailment to search.");
            req.getRequestDispatcher("/result.jsp").forward(req, resp);
            return;
        }

        String sql = "SELECT ailment_name, symptoms, remedy, precautions FROM ailments WHERE LOWER(ailment_name) LIKE ? OR LOWER(symptoms) LIKE ? LIMIT 10";

        try {
            Class.forName("com.mysql.cj.jdbc.Driver"); // optional in modern JVM
        } catch (ClassNotFoundException e) {
            // log - driver not found
        }

        try (Connection con = DriverManager.getConnection(JDBC_URL, DB_USER, DB_PASS);
             PreparedStatement ps = con.prepareStatement(sql)) {

            String q = "%" + ailmentParam.toLowerCase() + "%";
            ps.setString(1, q);
            ps.setString(2, q);

            try (ResultSet rs = ps.executeQuery()) {
                // Build a simple result list to pass to JSP
                java.util.List> results = new java.util.ArrayList<>();
                while (rs.next()) {
                    java.util.Map row = new java.util.HashMap<>();
                    row.put("ailment_name", rs.getString("ailment_name"));
                    row.put("symptoms", rs.getString("symptoms"));
                    row.put("remedy", rs.getString("remedy"));
                    row.put("precautions", rs.getString("precautions"));
                    results.add(row);
                }
                if (results.isEmpty()) {
                    req.setAttribute("message", "No remedies found. Try a different keyword.");
                } else {
                    req.setAttribute("results", results);
                }
            }
        } catch (SQLException e) {
            e.printStackTrace(); // log on server
            req.setAttribute("message", "Database error occurred. Contact admin.");
        }

        req.getRequestDispatcher("/result.jsp").forward(req, resp);
    }
}

Result JSP: result.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!doctype html>
<html>
<head>
  <meta charset="utf-8" />
  <title>Remedy Results</title>
  <style>
    body{font-family:Arial;max-width:900px;margin:18px auto;color:#222}
    .card{background:#fff;padding:16px;border-radius:8px;box-shadow:0 1px 6px rgba(0,0,0,.06)}
    .rem{border-left:4px solid #0b7;padding:10px;margin:10px 0}
    .label{color:#555;font-weight:bold}
  </style>
</head>
<body>
  <div class="card">
    <h2>Remedy Results</h2>

    <% String message = (String) request.getAttribute("message"); %>
    <c:if test="${not empty message}">
      <p style="color:#a00">${message}</p>
    </c:if>

    <@ page import="java.util.*" %>
    <List> results = (List>) request.getAttribute("results");%>
    <if (results != null) { %>
      <for (Map row : results) { %>
        <div class="rem">
          <div class="label">Ailment: <%= row.get("ailment_name") %></div>
          <div><strong>Symptoms:
Remedy:Precautions: <} %> <div><a href="index.jsp">Search again</a></div> </div> </body> </html>

Security & best practices

  • Always use PreparedStatement to avoid SQL injection.
  • Validate user inputs (limit length, normalize case) and sanitize outputs to avoid XSS.
  • Do not display medical claims as absolute — include disclaimers: “This information is educational; consult a qualified practitioner for diagnosis and treatment.”
  • Use HTTPS and secure DB credentials (do not hard-code in production; use environment variables or secure vaults).
  • Log changes and maintain provenance for remedies (who added/updated entries).

Optional enhancements

  • Add user accounts so users can save favorite remedies or add notes.
  • Add full-text search for symptoms to improve match accuracy.
  • Integrate image or video guidance for remedies and yoga practices.
  • Use transliteration/storage of original languages (Devanagari) and English transliteration separately.

Note (ethics): Ayurvedic remedies are traditional knowledge. Always cite sources, avoid making unverified medical claims, and encourage users to consult health professionals for serious conditions.

Author: BCA School — Use this HTML in Blogger by pasting into the post HTML editor. Need a downloadable ZIP with servlet & JSP files? Ask and I’ll prepare it.

Post a Comment

Thanks for comment.

Previous Post Next Post