带有Servlet和JSP的Spices商店

时间:2018-08-13 18:35:34

标签: jsp servlets

你好,我是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>

1 个答案:

答案 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>