我创建了一个web应用程序,它使用登录页面、servlet、托管bean和jsp页面。无论我做了什么尝试,我都无法让JSP页面显示servlet中的项名数组,这些项名是使用bean对象的arraylist获取的。我甚至尝试在servlet中创建一个bean对象,然后传递一个字符串变量。我试过同时使用会话和请求,但无法使其工作,下面是我的代码:
servlet:
package xxxx;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class ItemServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ItemInventory iI = new ItemInventory();
String[] itemNames = iI.getNames();
HttpSession session = request.getSession();
session.setAttribute("itemNames", itemNames);
request.setAttribute("itemNames", itemNames);
RequestDispatcher rd = request.getRequestDispatcher("/secureApps/ItemsCatalog.jsp");
rd.forward(request, response);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}
JSP:
<%@page import="xxxx.ItemInventory"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%
String[] itemName = (String[])session.getAttribute("itemNames");
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Item Catalog</title>
</head>
<body>
<h1>Item Catalog</h1>
<Select Name="itemNames">
<% for(int i=0;i < itemName.length; i++){
%>
<option value ="<%= itemName[i]%>"><%= itemName[i]%></option>
<%
}
%>
</select>
${itemBean.itemID}
</body>
</html>
package xxxx;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class ItemBean {
String itemName;
String itemID;
String itemDescription;
String itemPrice;
String itemQuantity;
public ItemBean(){}
public ItemBean(String iD, String name, String description, String price, String quantity){
this.itemID = iD;
this.itemName = name;
this.itemDescription = description;
this.itemPrice = price;
this.itemQuantity = quantity;
}
public String getItemName(){
return itemName;
}
}
ItemInventory类:
package xxxx;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class ItemInventory {
ArrayList <ItemBean> items = new ArrayList<ItemBean>();
public static void main(String[] args){}
public void ItemInventory() throws IOException{
BufferedReader br = new BufferedReader(new FileReader("/catalog.txt"));
String text = null;
while ((text=br.readLine())!=null){
String[] itemArray = text.split(",");
items.add(new ItemBean (itemArray[0], itemArray[1], itemArray[2], itemArray[3], itemArray[4]));
}
br.close();
}
public Integer getSize(){
Integer x = items.size();
return x;
}
public String[] getNames(){
int y = items.size();
String[] itemNames = new String[y];
for (int i = items.size() - 1; i >=0; i--){
itemNames[i] = items.get(i).getItemName();
}
return itemNames;
}
}
帮帮我,我已经干了好几个小时了...
您的Servlet/JSP代码没有任何问题。
在这里,int y=items.size();
将始终返回前面初始化的0
。
你误解了这里的一些概念。创建类的对象时,main()
不会直接执行。因此,在您的例子中,它返回空数组。
public void fillItems(){
try{
BufferedReader br = new BufferedReader(new FileReader("/catalog.txt"));
String text = null;
while ((text=br.readLine())!=null){
String[] itemArray = text.split(",");
// you might want to check array size
items.add(new ItemBean (itemArray[0], itemArray[1], itemArray[2], itemArray[3], itemArray[4]));
}
br.close();
}catch(Exception e){
e.printStackTrace();
}
}
ItemInventory iI = new ItemInventory();
iI.fillItems();
String[] itemNames = iI.getNames();
我需要你的帮助,在这个特殊的问题上,我想传递一个隐藏输入类型的值。jsp程序到servlet程序 我现在做的基本上是这样的 从servlet中我得到了值 它没有打印任何想法。jsp表单方法是post,servlet方法是doPost 有什么想法为什么它不传递参数吗?
问题内容: 我在烧瓶中有一个称为数组的函数,该函数接收一个列表并打印出列表中的项目: 在客户端,我想将名为str的javascript数组传递给该数组。我该怎么办?这就是我现在所拥有的,但是Flask没有读取添加的变量。有任何想法吗? 问题答案: Flask具有一个称为request的内置对象。在请求中有一个称为args的multidict。 您可以用来检索查询字符串的值。 当然,这需要一个get
要将数组参数传递给函数,需指定不带方括号的数组名。例如,如果数组hourlyTemperatures声明如下: int hourlyTemperatures[24]; 则下列函数调用语句: modifyArray(hourlyTemperatutes,24); 将数组 hourlyTemperatures 及其长度传递给函数 modifyArray。将数组传递给函数时,通常也将其长度传递给函数,使
问题内容: 有谁知道如何将C#ASP.NET数组传递给JavaScript数组?示例代码也将很好。 对不起,如果我以前的人含糊不清。这个问题实际上很简单。为了简单起见,我在文件中声明: 现在,我想传递给客户端,并在JavaScript中使用数组中的数据。我该怎么做? 问题答案: 您可以使用ClientScript.RegisterStartUpScript将javascript注入Page_Loa
问题内容: 这个问题已经在这里有了答案 : PHP-将PDO与IN子句数组一起使用 (8个答案) 5年前关闭。 我目前有一个值数组(business_id) 可以说 使用这些值中的每一个从数据库中获取每个business_id的关联行信息的最佳方法是什么。 可以一一查询是我的问题。显然,你可以做 问题答案: 通常的SQL注入警告仍然适用,您可能需要先循环遍历id以进行验证或转义。另外,如果希望使用
问题内容: 如何将整个数组传递给方法? 如何正确执行此操作? 问题答案: 你做这个: 只需将其作为其他任何变量传递即可。 在Java中,数组是通过引用传递的。