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:
<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>
<select id="dropdownlist"></select>
<br/><br/>
<button id="buttonSubmit">Submit</button>
</div>
</body>
</html>
No comments:
Post a Comment