将ArrayList从servlet传递给JSP
我试图将包含servlet对象的ArrayList传递给JSP。 但
Servlet文件:
request.setAttribute("servletName", categoryList); //categorylist is an arraylist contains object of class category getServletConfig().getServletContext().getRequestDispatcher("/GetCategory.jsp").forward(request,response);
JSP文件:
//category class <% Category category = new Category(); //creating arraylist object of type category class ArrayList list = ArrayList(); //storing passed value from jsp list = request.getAttribute("servletName"); for(int i = 0; i
在servlet代码中,使用指令request.setAttribute("servletName", categoryList)
,将列表保存在请求对象中,并使用名称“servletName”来引用它。
顺便说一句,使用名称“servletName”作为列表是相当混乱的,也许最好称之为“列表”或类似的东西: request.setAttribute("list", categoryList)
无论如何,假设您不更改serlvet代码,并使用名称“servletName”存储列表。 当您到达JSP时,需要从请求中检索列表,为此您只需要request.getAttribute(...)
方法。
<% // retrieve your list from the request, with casting ArrayList list = (ArrayList ) request.getAttribute("servletName"); // print the information about every category of the list for(Category category : list) { out.println(category.getId()); out.println(category.getName()); out.println(category.getMainCategoryId()); } %>
request.getAttribute("servletName")
方法将返回需要转换为ArrayList
Object
ArrayList list =new ArrayList (); //storing passed value from jsp list = (ArrayList )request.getAttribute("servletName");
<% ArrayList list = new ArrayList (); list = (ArrayList ) request.getAttribute("actors"); %> Actor This is Actor Class
Id First Name Last Name <% for(int i = 0; i < list.size(); i++) { Actor actor = new Actor(); actor = list.get(i); //out.println(actor.getId()); //out.println(actor.getFirstname()); //out.println(actor.getLastname()); %> <%=actor.getId()%> <%=actor.getFirstname()%> <%=actor.getLastname()%> <% }; %>
可能的错误是……
1.您从会话中的servelt设置数组列表,而不是在请求中设置。
2.您设置的数组为空。
3.您重定向页面而不是转发它。
你也不应该在jsp中初始化list
和category
。 尝试这个。
for(Category cx: ((ArrayList)request.getAttribute("servletName"))) { out.println( cx.getId()); out.println(cx.getName()); out.println(cx.getMainCategoryId() ); }
public class myActorServlet extends HttpServlet { private static final long serialVersionUID = 1L; private String name; private String user; private String pass; private String given_table; private String tid; private String firstname; private String lastname; private String action; @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); // connecting to database Connection con = null; Statement stmt = null; ResultSet rs = null; PrintWriter out = response.getWriter(); name = request.getParameter("screenName"); user = request.getParameter("username"); pass = request.getParameter("password"); tid = request.getParameter("tid"); firstname = request.getParameter("firstname"); lastname = request.getParameter("lastname"); action = request.getParameter("action"); given_table = request.getParameter("tableName"); out.println(""); out.println(""); out.println("Servlet JDBC "); out.println(""); out.println(""); out.println(""); out.println("Hello, " + name + "
"); out.println("Servlet JDBC
"); ///////////////////////// // init connection object String sqlSelect = "SELECT * FROM `" + given_table + "`"; String sqlInsert = "INSERT INTO `" + given_table + "`(`firstName`, `lastName`) VALUES ('" + firstname + "', '" + lastname + "')"; String sqlUpdate = "UPDATE `" + given_table + "` SET `firstName`='" + firstname + "',`lastName`='" + lastname + "' WHERE `id`=" + tid + ""; String sqlDelete = "DELETE FROM `" + given_table + "` WHERE `id` = '" + tid + "'"; ////////////////////////////////////////////////////////// out.println( "Reading Table Data...Pass to JSP File...Okay
"); ArrayList list = new ArrayList (); // connecting to database try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/javabase", user, pass); stmt = con.createStatement(); rs = stmt.executeQuery(sqlSelect); // displaying records while (rs.next()) { Actor actor = new Actor(); actor.setId(rs.getInt("id")); actor.setLastname(rs.getString("lastname")); actor.setFirstname(rs.getString("firstname")); list.add(actor); } request.setAttribute("actors", list); RequestDispatcher view = request.getRequestDispatcher("myActors_1.jsp"); view.forward(request, response); } catch (SQLException e) { throw new ServletException("Servlet Could not display records.", e); } catch (ClassNotFoundException e) { throw new ServletException("JDBC Driver not found.", e); } finally { try { if (rs != null) { rs.close(); rs = null; } if (stmt != null) { stmt.close(); stmt = null; } if (con != null) { con.close(); con = null; } } catch (SQLException e) { } } out.println("
"); out.close(); } }
这里列出请求中设置的属性名称request.setAttribute("List",list);
和ArrayList list=new ArrayList();
<% ArrayList a=(ArrayList )request.getAttribute("List"); out.print(a); for(int i=0;i