你好,我是Servlet和JSP的新手,我正在尝试通过开发一家香料店来学习,现在我正在管理部分,添加了Spices,我正在使用List和ArrayList来添加(ID,名称,图片,简短描述,价格),使用数组,因为我没有很多项目,可能只是20种香料,但我有2个主要问题。 1.运行网站时,我制作了servlet(Spices),在其中可以循环访问Array以显示香料信息并将其显示到ShowSpices.jsp,但是该网站使用的链接为“ http://localhost:8085/Humus/Spices” ”,但当我手动键入所有变量的地址均为NULL时,我想在“ http://localhost:8085/Humus/AdminHumus/ShowSpices.jsp”中显示它们。 2.当我使用3次显示最后一项时,因为我在ArrayList中仅添加了3次,所以显示3次。
感谢您的阅读,希望对您有所帮助,如果您发现我的问题很荒谬,请让我知道,以便我可以从此网站中删除问题。
Spices,java(Servlet) 包Org.Products.Spices;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletConfig;
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(urlPatterns="/Spices",loadOnStartup=1)
public class Spices extends HttpServlet {
private static final long serialVersionUID = 1L;
private String sName;
private int sId;
private double sPrice;
private String sShortDis;
private String sImage;
public Spices() {
super();
}
public void init(ServletConfig config) throws ServletException {
super.init(config);
List<SpicesEntry> se = new ArrayList<>();
se.add(new SpicesEntry(0,"Սեւ հիլ","Գոյություն ունեն առնվազն երկու տեսակի սեւ կարդամայի տեսակներ. Amomum subulatum (նաեւ հայտնի է որպես նեպալ կարամամ) եւ Amomum tsao-ko: Ա. Ենթակետի շերտերը, որոնք հիմնականում օգտագործվում են Հնդկաստանի խոհանոցներում եւ Պակիստանի որոշակի տարածաշրջանային խոհանոցներում, դրանք փոքր են, իսկ Ա-ի մեծ պոչերը:",1200,"BlackCardamom"));
se.add(new SpicesEntry(1,"Արարք","Թփերի բույսը շատ branched է, այլընտրանքային տերեւներով, հաստ ու փայլուն, կլոր օվալով: Ծաղիկները ամբողջական, քաղցր բուրավետ եւ շքեղ են, չորս սպիտակներով եւ չորս սպիտակներով, վարդագույն սպիտակ տերեւներով, եւ շատ երկար մանուշակագույն գույնի շերտերով, եւ սովորաբար սինթեզում սովորաբար բարձրանում են շերտերը:",1850,"CapparisspinosaKapernstrauch"));
se.add(new SpicesEntry(2,"Ռոզմարի","Rosmarinus officinalis- ը Rosmarinus սեռի 2-4 տեսակներից մեկն է: [5] Առավել հաճախ ճանաչված մյուս տեսակներ, սերտորեն կապված են Աֆրիկայի Maghreb եւ Iberia- ի Rosmarinus eriocalyx- ը: Ros marinus- ի անունը դասական լատիներենի գործարանի հին անունն է: Էլիզաբեթ Քենը իր Ֆլորա Դոմստիկայում (1823 թ.) Նշում է, որ «Այս բույսի բուսաբանական անունը լատիներեն բառերից բարդված է, նշանակում է ծովային ցող, եւ իսկապես Rosemary- ը ծաղկում է ամենալավը» [6]: 18-րդ դարի բնական գործիչ եւ հիմնադիր տաքսիստ Carl Linnaeus- ը:",950,"Rosemaryinbloom"));
getServletContext().setAttribute("Spices", se);
}
@SuppressWarnings("unchecked")
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<SpicesEntry> se = (List<SpicesEntry>) getServletContext().getAttribute("Spices");
for(SpicesEntry spice : se) {
sName= spice.getSpiceName();
sId = spice.getSpiceId();
sPrice =spice.getSpicePrice();
sShortDis=spice.getSpiceShortDiscription();
sImage=spice.getSpiceImageLink();
}
request.setAttribute("SpiceName", sName);
request.setAttribute("sId", sId);
request.setAttribute("sPrice", sPrice);
request.setAttribute("sShortDis", sShortDis);
request.setAttribute("sImage", sImage);
//response.sendRedirect("AdminHumus/ShowSpices.jsp");
getServletConfig().getServletContext().getRequestDispatcher("/AdminHumus/ShowSpices.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
SpicesEntry.java
package Org.Products.Spices;
public class SpicesEntry {
private int spiceId;
private String spiceName;
private String spiceShortDiscription;
private double spicePrice;
private String spiceImageLink;
public SpicesEntry(int spiceId, String spiceName, String spiceShortDiscription, double spicePrice,
String spiceImageLink) {
super();
this.spiceId = spiceId;
this.spiceName = spiceName;
this.spiceShortDiscription = spiceShortDiscription;
this.spicePrice = spicePrice;
this.spiceImageLink = spiceImageLink;
}
public SpicesEntry() {
super();
spiceId=00000;
spiceName="";
spiceShortDiscription="";
spicePrice=0.0;
spiceImageLink= "400X200";
}
public int getSpiceId() {
return spiceId;
}
public void setSpiceId(int spiceId) {
this.spiceId = spiceId;
}
public String getSpiceName() {
return spiceName;
}
public void setSpiceName(String spiceName) {
this.spiceName = spiceName;
}
public String getSpiceShortDiscription() {
return spiceShortDiscription;
}
public void setSpiceShortDiscription(String spiceShortDiscription) {
this.spiceShortDiscription = spiceShortDiscription;
}
public double getSpicePrice() {
return spicePrice;
}
public void setSpicePrice(double spicePrice) {
this.spicePrice = spicePrice;
}
public String getSpiceImageLink() {
return spiceImageLink;
}
public void setSpiceImageLink(String spiceImageLink) {
this.spiceImageLink = spiceImageLink;
}
}
ShowSpices.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="Org.Products.Spices.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Admin humus panel</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="AdminHumus/style/Adminstyle.css" rel="stylesheet" type="text/css">
<!--The following script tag downloads a font from the Adobe Edge Web Fonts server for use within the web page. We recommend that you do not modify it.-->
<script
src="http://use.edgefonts.net/montserrat:n4:default;source-sans-pro:n2:default.js"
type="text/javascript"></script>
</head>
<body>
<section class="mainContent">
<div class="productRow">
<!-- Each product row contains info of 3 elements -->
<article class="productInfo">
<!-- Each individual product description -->
<div>
<img alt="sample"
src="<%=request.getContextPath() %>/images/SImages/<%=request.getAttribute("sImage")%>.jpg" width="400px" height="200px">
</div>
<p class="price">
Name :
<%=request.getAttribute("SpiceName")%></p>
<p class="price">
Price :
<%=request.getAttribute("sPrice")%></p>
<p class="price">
ID :
<%=request.getAttribute("sId")%></p>
<p class="productContent">
</p>
<input type="button" name="Delete" value="Delete" class="buyButton">
<input type="button" name="Update" value="Update" class="buyButton">
</article>
</div>
</section>
</body>
</html>
答案 0 :(得分:0)
好了,我解决了主要问题是我在servlet和Jsp文件中循环了相同的List,所以她就是解决方案
public void init(ServletConfig config) throws ServletException {
super.init(config);
List<SpicesEntry> se = new ArrayList<>();
se.add(new SpicesEntry(0,"Սեւ հիլ","Գոյություն ունեն առնվազն երկու տեսակի սեւ կարդամայի տեսակներ. Amomum subulatum (նաեւ հայտնի է որպես նեպալ կարամամ) եւ Amomum tsao-ko: Ա. Ենթակետի շերտերը, որոնք հիմնականում օգտագործվում են Հնդկաստանի խոհանոցներում եւ Պակիստանի որոշակի տարածաշրջանային խոհանոցներում, դրանք փոքր են, իսկ Ա-ի մեծ պոչերը:",1200,"BlackCardamom"));
se.add(new SpicesEntry(1,"Արարք","Թփերի բույսը շատ branched է, այլընտրանքային տերեւներով, հաստ ու փայլուն, կլոր օվալով: Ծաղիկները ամբողջական, քաղցր բուրավետ եւ շքեղ են, չորս սպիտակներով եւ չորս սպիտակներով, վարդագույն սպիտակ տերեւներով, եւ շատ երկար մանուշակագույն գույնի շերտերով, եւ սովորաբար սինթեզում սովորաբար բարձրանում են շերտերը:",1850,"CapparisspinosaKapernstrauch"));
se.add(new SpicesEntry(2,"Ռոզմարի","Rosmarinus officinalis- ը Rosmarinus սեռի 2-4 տեսակներից մեկն է: [5] Առավել հաճախ ճանաչված մյուս տեսակներ, սերտորեն կապված են Աֆրիկայի Maghreb եւ Iberia- ի Rosmarinus eriocalyx- ը: Ros marinus- ի անունը դասական լատիներենի գործարանի հին անունն է: Էլիզաբեթ Քենը իր Ֆլորա Դոմստիկայում (1823 թ.) Նշում է, որ «Այս բույսի բուսաբանական անունը լատիներեն բառերից բարդված է, նշանակում է ծովային ցող, եւ իսկապես Rosemary- ը ծաղկում է ամենալավը» [6]: 18-րդ դարի բնական գործիչ եւ հիմնադիր տաքսիստ Carl Linnaeus- ը:",950,"Rosemaryinbloom"));
getServletContext().setAttribute("Spices", se);
}
@SuppressWarnings("unchecked")
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
List<SpicesEntry> se = (List<SpicesEntry>) getServletContext().getAttribute("Spices");
request.setAttribute("SpiceLoop", se);
request.setCharacterEncoding("UTF-8");
RequestDispatcher view = request.getRequestDispatcher("/AdminHumus/ShowSpices.jsp");
view.forward(request, response);
}
和Jsp文件
<c:forEach var="myS" items="${SpiceLoop}">
<section class="mainContent">
<div class="productRow">
<!-- Each product row contains info of 3 elements -->
<article class="productInfo">
<!-- Each individual pro duct description -->
<div>
<img alt="sample"
src="<%=request.getContextPath()%>/images/SImages/${myS.getSpiceImageLink()}.png"
width="200px" height="200px">
</div>
<br/>
<p class="price">Spice Name : ${myS.getSpiceName()}</p>
<p class="price">Price : ${myS.getSpicePrice()}</p>
<p class="price">ID : ${myS.getSpiceId()} </p>
<p class="productContent"></p><br/>
<input type="button" name="Delete" value="Delete"
class="buyButton">
<input type="button" name="Update" value="Update"
class="buyButton">
</article>
</div>
</section>
</c:forEach>