How to create dynamic drop down list in JSP from database

 https://www.codejava.net/java-ee/jsp/how-to-create-dynamic-drop-down-list-in-jsp-from-database



Database: 

Create table category(category_id int auto_increment, name varchar(50), primary key (id))


Model 

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



package net.codejava;

 

public class Category {

    private int id;

    private String name;

 

    public Category(int id, String name) {

        super();

        this.id = id;

        this.name = name;

    }

 

    public int getId() {

        return id;

    }

 

    public void setId(int id) {

        this.id = id;

    }

 

    public String getName() {

        return name;

    }

 

    public void setName(String name) {

        this.name = name;

    }

}


DAO

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




package net.codejava;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

 

public class CategoryDAO {

    String databaseURL = "jdbc:mysql://localhost:3306/bookstoredb";

    String user = "root";

    String password = "pass";

     

    public List<Category> list() throws SQLException {

        List<Category> listCategory = new ArrayList<>();

         

        try (Connection connection = DriverManager.getConnection(databaseURL, user, password)) {

            String sql = "SELECT * FROM category ORDER BY name";

            Statement statement = connection.createStatement();

            ResultSet result = statement.executeQuery(sql);

             

            while (result.next()) {

                int id = result.getInt("category_id");

                String name = result.getString("name");

                Category category = new Category(id, name);

                     

                listCategory.add(category);

            }          

             

        } catch (SQLException ex) {

            ex.printStackTrace();

            throw ex;

        }      

         

        return listCategory;

    }

}


Controller: 

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


package net.codejava;

 

import java.io.IOException;

import java.sql.SQLException;

import java.util.List;

 

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

@WebServlet("/list")

public class ListServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

 

    protected void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        CategoryDAO dao = new CategoryDAO();

 

        try {

 

            List<Category> listCatagory = dao.list();

            request.setAttribute("listCategory", listCatagory);

 

            RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp");

            dispatcher.forward(request, response);

 

        } catch (SQLException e) {

            e.printStackTrace();

            throw new ServletException(e);

        }

    }

}


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


package net.codejava;

 

import java.io.IOException;

import java.sql.SQLException;

import java.util.List;

 

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

@WebServlet("/list")

public class ListServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

 

    protected void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        listCategory(request, response);

    }

 

    private void listCategory(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        CategoryDAO dao = new CategoryDAO();

 

        try {

 

            List<Category> listCatagory = dao.list();

            request.setAttribute("listCategory", listCatagory);

 

            RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp");

            dispatcher.forward(request, response);

 

        } catch (SQLException e) {

            e.printStackTrace();

            throw new ServletException(e);

        }

    }

 

    @Override

    protected void doPost(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        int categoryId = Integer.parseInt(request.getParameter("category"));

 

        request.setAttribute("selectedCatId", categoryId);

 

        listCategory(request, response);

    }

}





Views: 



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


<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

    pageEncoding="ISO-8859-1"%>

<html>

<head>

    <title>Dynamic Drop Down List Demo - CodeJava.net</title>

</head>

<body>

 

<div align="center">

    <h2>Dynamic Drop Down List Demo</h2>

    <form action="list" method="post">

        Select a Category:&nbsp;

        <select name="category">

            <c:forEach items="${listCategory}" var="category">

                <option value="${category.id}"

                    <c:if test="${category.id eq selectedCatId}">selected="selected"</c:if>

                    >

                    ${category.name}

                </option>

            </c:forEach>

        </select>

        <br/><br/>

        <input type="submit" value="Submit" />

    </form>

</div>

</body>

</html>







Ajax Implementation: 

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


package net.codejava;

 

import java.io.IOException;

import java.sql.SQLException;

import java.util.List;

 

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import com.google.gson.Gson;

 

@WebServlet("/listajax")

public class ListAjaxServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

 

    protected void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

 

        CategoryDAO dao = new CategoryDAO();

 

        try {

 

            List<Category> listCatagory = dao.list();

            String json = new Gson().toJson(listCatagory);

 

            response.setContentType("application/json");

            response.setCharacterEncoding("UTF-8");

            response.getWriter().write(json);

 

        } catch (SQLException e) {

            e.printStackTrace();

            throw new ServletException(e);

        }

    }

 

    @Override

    protected void doPost(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        String category = request.getParameter("category");

        String text = "Server replies: You selected category: " + category;

        response.setContentType("text/plain");

        response.setCharacterEncoding("UTF-8");

        response.getWriter().write(text);

    }

}


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




<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

    pageEncoding="ISO-8859-1"%>

<html>

<head>

    <title>Dynamic Drop Down List Demo (AJAX) - CodeJava.net</title>

    <script src="http://code.jquery.com/jquery-latest.min.js"></script>

        <script>

            $(document).on("click", "#buttonLoad", function() {

                $.get("listajax", function(responseJson) {

                    var $select = $("#dropdownlist");

                    $select.find("option").remove();  

                    $.each(responseJson, function(index, category) {

                        $("<option>").val(category.id).text(category.name).appendTo($select);

                    });                   

                     

                });

            });

             

            $(document).on("click", "#buttonSubmit", function() {

                var params = {category : $("#dropdownlist option:selected").text()};

                $.post("listajax", $.param(params), function(responseText) {

                    alert(responseText);                   

                });

            });

        </script>

</head>

<body>

<div align="center">

    <h2>Dynamic Drop Down List (AJAX) Demo</h2>

    <button id="buttonLoad">Load</button> &nbsp;

    <select id="dropdownlist"></select>

    <br/><br/>

    <button id="buttonSubmit">Submit</button>

</div>

</body>

</html>

No comments:

Post a Comment