Java 在jsp中以表格格式显示地图,其中对象为键,Arraylist为值
POJO类:Java 在jsp中以表格格式显示地图,其中对象为键,Arraylist为值,java,sql,object,arraylist,hashmap,Java,Sql,Object,Arraylist,Hashmap,POJO类: public class MapKey { private Integer id; private String name; private Integer status; public MapKey(Integer id, String name,Integer status) { this.id = id; this.name = name; this.status=status
public class MapKey {
private Integer id;
private String name;
private Integer status;
public MapKey(Integer id, String name,Integer status) {
this.id = id;
this.name = name;
this.status=status;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
//All getters and setters
JSP代码:
public class Dashboard {
int requestId;
String loginUser;
int price;
int status;
public int getrequestId() {
return requestId;
}
public void setrequestId(int requestId) {
requestId= requestId;
}
//All getters and setters
预期产出:
MapKey [reqid=123, name=A,status=1]:[Dashboard [reqid=123, NAME=A, PRICE=5,STATUS=2],Dashboard [reqid=123, NAME=A, PRICE=10,STATUS=3],...,..]
MapKey [reqid=456, name=B,status=2]:[Dashboard [reqid=456, NAME=B, PRICE=20,STATUS=3],Dashboard [reqid=456, NAME=B, PRICE=25,STATUS=2],...,..]
我有一个映射,其中key是一个对象,value是List。在映射中,键是我的表头,映射中的值是该表头的表数据。键取决于sql中的数据。它可以根据数据而变化。我想将每个键显示为表头,将其所有相关数据显示为表的行。我用jsp编写了代码来为每个键创建表。我是java开发的新手,这就是我能写的。我需要帮助来实现预期的输出。下面给出的是一个最小的、可验证的示例: Dashboard.java:
123 A 1 ///Table header
123 A 5 2
123 A 10 3
//N no of rows
456 B 2 ///Table header
456 B 20 3
456 B 25 2
//N no of rows
package beans;
public class Dashboard {
int requestId;
String loginUser;
int price;
int status;
public Dashboard(int requestId, String loginUser, int price, int status) {
this.requestId = requestId;
this.loginUser = loginUser;
this.price = price;
this.status = status;
}
public int getRequestId() {
return requestId;
}
public String getLoginUser() {
return loginUser;
}
public int getPrice() {
return price;
}
public int getStatus() {
return status;
}
}
package beans;
public class MapKey {
private Integer id;
private String name;
private Integer status;
public MapKey(Integer id, String name, Integer status) {
this.id = id;
this.name = name;
this.status = status;
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public Integer getStatus() {
return status;
}
}
package servlets;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
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;
import beans.Dashboard;
import beans.MapKey;
@WebServlet("/Report")
public class AppController extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
populateData(request, response);
RequestDispatcher view = request.getRequestDispatcher("my_page.jsp");
view.forward(request, response);
}
public void populateData(HttpServletRequest request, HttpServletResponse response) {
Map<MapKey, List<Dashboard>> map = new LinkedHashMap<>();
map.put(new MapKey(123, "A", 1), List.of(new Dashboard(123, "A", 5, 2), new Dashboard(123, "A", 10, 3)));
map.put(new MapKey(456, "B", 2), List.of(new Dashboard(456, "B", 20, 3), new Dashboard(456, "B", 25, 2)));
request.setAttribute("reportMap", map);
}
}
MapKey.java:
123 A 1 ///Table header
123 A 5 2
123 A 10 3
//N no of rows
456 B 2 ///Table header
456 B 20 3
456 B 25 2
//N no of rows
package beans;
public class Dashboard {
int requestId;
String loginUser;
int price;
int status;
public Dashboard(int requestId, String loginUser, int price, int status) {
this.requestId = requestId;
this.loginUser = loginUser;
this.price = price;
this.status = status;
}
public int getRequestId() {
return requestId;
}
public String getLoginUser() {
return loginUser;
}
public int getPrice() {
return price;
}
public int getStatus() {
return status;
}
}
package beans;
public class MapKey {
private Integer id;
private String name;
private Integer status;
public MapKey(Integer id, String name, Integer status) {
this.id = id;
this.name = name;
this.status = status;
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public Integer getStatus() {
return status;
}
}
package servlets;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
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;
import beans.Dashboard;
import beans.MapKey;
@WebServlet("/Report")
public class AppController extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
populateData(request, response);
RequestDispatcher view = request.getRequestDispatcher("my_page.jsp");
view.forward(request, response);
}
public void populateData(HttpServletRequest request, HttpServletResponse response) {
Map<MapKey, List<Dashboard>> map = new LinkedHashMap<>();
map.put(new MapKey(123, "A", 1), List.of(new Dashboard(123, "A", 5, 2), new Dashboard(123, "A", 10, 3)));
map.put(new MapKey(456, "B", 2), List.of(new Dashboard(456, "B", 20, 3), new Dashboard(456, "B", 25, 2)));
request.setAttribute("reportMap", map);
}
}
AppController.java:
123 A 1 ///Table header
123 A 5 2
123 A 10 3
//N no of rows
456 B 2 ///Table header
456 B 20 3
456 B 25 2
//N no of rows
package beans;
public class Dashboard {
int requestId;
String loginUser;
int price;
int status;
public Dashboard(int requestId, String loginUser, int price, int status) {
this.requestId = requestId;
this.loginUser = loginUser;
this.price = price;
this.status = status;
}
public int getRequestId() {
return requestId;
}
public String getLoginUser() {
return loginUser;
}
public int getPrice() {
return price;
}
public int getStatus() {
return status;
}
}
package beans;
public class MapKey {
private Integer id;
private String name;
private Integer status;
public MapKey(Integer id, String name, Integer status) {
this.id = id;
this.name = name;
this.status = status;
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public Integer getStatus() {
return status;
}
}
package servlets;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
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;
import beans.Dashboard;
import beans.MapKey;
@WebServlet("/Report")
public class AppController extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
populateData(request, response);
RequestDispatcher view = request.getRequestDispatcher("my_page.jsp");
view.forward(request, response);
}
public void populateData(HttpServletRequest request, HttpServletResponse response) {
Map<MapKey, List<Dashboard>> map = new LinkedHashMap<>();
map.put(new MapKey(123, "A", 1), List.of(new Dashboard(123, "A", 5, 2), new Dashboard(123, "A", 10, 3)));
map.put(new MapKey(456, "B", 2), List.of(new Dashboard(456, "B", 20, 3), new Dashboard(456, "B", 25, 2)));
request.setAttribute("reportMap", map);
}
}
包servlet;
导入java.io.IOException;
导入java.util.LinkedHashMap;
导入java.util.List;
导入java.util.Map;
导入javax.servlet.RequestDispatcher;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入bean.Dashboard;
导入beans.MapKey;
@WebServlet(“/Report”)
公共类AppController扩展HttpServlet{
受保护的void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
doPost(请求、响应);
}
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
填充数据(请求、响应);
RequestDispatcher视图=request.getRequestDispatcher(“my_page.jsp”);
视图。转发(请求、响应);
}
public void populateData(HttpServletRequest请求、HttpServletResponse响应){
Map Map=newlinkedhashmap();
地图放置(新地图键(123,“A”,1),列表(新仪表板(123,“A”,5,2),新仪表板(123,“A”,10,3));
地图放置(新地图键(456,“B”,2),列表(新仪表板(456,“B”,20,3),新仪表板(456,“B”,25,2));
setAttribute(“reportMap”,map);
}
}
my_page.jsp:
123 A 1 ///Table header
123 A 5 2
123 A 10 3
//N no of rows
456 B 2 ///Table header
456 B 20 3
456 B 25 2
//N no of rows
package beans;
public class Dashboard {
int requestId;
String loginUser;
int price;
int status;
public Dashboard(int requestId, String loginUser, int price, int status) {
this.requestId = requestId;
this.loginUser = loginUser;
this.price = price;
this.status = status;
}
public int getRequestId() {
return requestId;
}
public String getLoginUser() {
return loginUser;
}
public int getPrice() {
return price;
}
public int getStatus() {
return status;
}
}
package beans;
public class MapKey {
private Integer id;
private String name;
private Integer status;
public MapKey(Integer id, String name, Integer status) {
this.id = id;
this.name = name;
this.status = status;
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public Integer getStatus() {
return status;
}
}
package servlets;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
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;
import beans.Dashboard;
import beans.MapKey;
@WebServlet("/Report")
public class AppController extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
populateData(request, response);
RequestDispatcher view = request.getRequestDispatcher("my_page.jsp");
view.forward(request, response);
}
public void populateData(HttpServletRequest request, HttpServletResponse response) {
Map<MapKey, List<Dashboard>> map = new LinkedHashMap<>();
map.put(new MapKey(123, "A", 1), List.of(new Dashboard(123, "A", 5, 2), new Dashboard(123, "A", 10, 3)));
map.put(new MapKey(456, "B", 2), List.of(new Dashboard(456, "B", 20, 3), new Dashboard(456, "B", 25, 2)));
request.setAttribute("reportMap", map);
}
}
申请人资料
${map.key.id}${map.key.name}${map.key.status}
${item.requestId}${item.logiuser}${item.price}${item.status}
输出:
旁注:遵循例如
PRICE
应该是PRICE
和STATUS
应该是STATUS
。我建议你阅读javadoc for interface@Abra我读了一些文档和教程,但这些都是非常基本的。它离我想做的事情不远了。@ArvindKumarAvinash更新了。请仔细看看。看起来更好,但是您仍然需要将request\u id
更改为requestId
,将login\u user
更改为loginUser
。说到您的问题,您需要创建
。非常感谢您给我这个想法。只需更新一下,映射是在jdbc类中定义的,我从sql db中获取数据。非常欢迎您。您需要在servlet中调用DAO(放置JDBC代码的类)。为了演示,我用示例数据填充了一个Map
对象,在servlet.Ya中,我将检查一次..任何更新或更改我都会在此处发送消息。非常感谢您的帮助。我只运行了一次代码,就出现了此错误。HTTP状态500–内部服务器错误。键入异常报告。消息在[58]行处理[/Dashboard.jsp]时发生异常.Description:服务器遇到意外情况,无法完成请求。行为58 is${item.requestId}${item.loginUser}${item.price}${item.status}@初学者-建议您复制我的代码并运行它。然后,理解它并做出改变以更快地学习。