JSP-不确定是否已连接到我的Servlet

问题描述

当我从清单中单击它时,我的特定汽车没有装载到我的JSP上。

package com.carServlets;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

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 javax.servlet.http.HttpSession;

import com.carSalesSystem.Car;

/**
 * Servlet implementation class FindCarByVin
 */
@WebServlet("/FindCarByVin")
public class FindCarByVin extends HttpServlet {
    private static final long serialVersionUID = 1L;
    
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public FindCarByVin() {
        super();
        // Todo Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request,HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request,HttpServletResponse response) throws servletexception,IOException {
        // Todo Auto-generated method stub
        HttpSession session = request.getSession(true);
        ArrayList<Car> inventory = (loadInventory());
        
        String vin = request.getParameter("vin");
        Car tempCar = new Car();
        for (Car find : inventory) {
            
            if (find.getVin().equals("vin")) {
                tempCar = find;
                Date today = new Date();
                Calendar cal = new GregorianCalendar();
                cal.setTime(today);
                cal.add(Calendar.DAY_OF_MONTH,-120);
                Date over120 = cal.getTime();
                
                Date checkDate = null;
                
                try {
                    checkDate = new SimpleDateFormat("yyyy-MM-dd").parse(find.getPurchaseDate());
                } catch (ParseException e) {
                    e.printstacktrace();
                }
                if (checkDate.before(over120)) {
                    session.setAttribute("bid","true");
                } else {
                    session.setAttribute("bid","false");
                }
                break;
            }
        }
        session.setAttribute("car",tempCar);
        Requestdispatcher rs = request.getRequestdispatcher("moreInfo.jsp");
        rs.forward(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request,HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request,IOException {
        // Todo Auto-generated method stub
        doGet(request,response);
    }
    
    public ArrayList<Car> loadInventory() {
        // assign properties
        ArrayList<Car> inventory = new ArrayList<Car>();
        
        // assign properties
        final String path = "/Users/evanchapman/eclipse-workspace/CarDealership/WebContent/InventoryData";
        String fileName = path+"/"+"inventory.txt";
        
        try {
            
            // read from file 
            Scanner input = new Scanner(new File(fileName));
                while (input.hasNextLine()) {
                    String info = input.nextLine();
                    
                    // separate by ' :: ' and create String array
                    String[] data = info.split("  ::  "); 
                    
                    // Each element will be assigned to the properties from our Car class
                    
                    String purchaseDate = data[0];
                    String imageTitle = data[1];
                    String year = data[2];
                    String make = data[3];
                    String model = data[4];
                    String vin = data[5];
                    String mileage = data[6];
                    String askingPrice = data[7];
                    String description = data[8];
                    
                    Car add = new Car(purchaseDate,imageTitle,year,make,model,vin,mileage,askingPrice,description);
                    inventory.add(add);
                }
        }
        catch (FileNotFoundException e) {
            System.out.println("Error reading from file!");
        }
        return inventory;
    }
}

这是与该servlet绑定的JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import ="java.util.ArrayList"%>
<%@ page import ="java.util.List"%>
<%@ page import="com.carSalesSystem.Car"%>

<%ArrayList<Car> inventory = (ArrayList<Car>) request.getAttribute("inventory");%>
<%session.getAttribute("car");%>
<%session.getAttribute("bid");%>

<!doctype html>
<html lang="en">

<head>
  <!-- required Meta tags -->
  <Meta charset="utf-8">
  <Meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">

  <!-- CSS -->
  <link rel="stylesheet" type="text/css" href="styles/bootstrap.css">
  <link rel="stylesheet" type="text/css" href="styles/navbar.css">
  <link rel="stylesheet" type="text/css" href="styles/carSalesSystem.css">

  <title>More Info</title>
</head>

<body>
  <nav class="navbar navbar-expand-sm navbar-dark p-3 px-md-4 mb-3 bg-dark">
    <a class="navbar-brand" href="index.jsp">My Dealership</a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExample03"
      aria-controls="navbarsExample03" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>

    <div class="collapse navbar-collapse" id="navbarsExample03">
      <ul class="navbar-nav mr-sm-1 ml-auto">

        <li class="nav-item">
          <a class="nav-link active" href="inventory.jsp">display Inventory</a>
        </li>
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="#" id="dropdown03" data-toggle="dropdown" aria-haspopup="true"
            aria-expanded="false">Search Inventory</a>
          <div class="dropdown-menu a:hover dropdown-menu-right" aria-labelledby="dropdown03">
            <a class="dropdown-item" href="searchMake.jsp">Search by Make</a>
            <a class="dropdown-item" href="searchModel.jsp">Search by Model</a>
          </div>
        </li>
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="#" id="dropdown03" data-toggle="dropdown" aria-haspopup="true"
            aria-expanded="false">Inventory Control</a>
          <div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdown03">
            <a class="dropdown-item" href="addNew.jsp">Add New Vehicle</a>
            <a class="dropdown-item" href="registerSale.jsp">Register a Sale</a>
          </div>
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="#" id="dropdown03" data-toggle="dropdown" aria-haspopup="true"
            aria-expanded="false">Reports</a>
          <div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdown03">
            <a class="dropdown-item" href="inventoryReport.jsp">Inventory List</a>
            <a class="dropdown-item" href="salesReport.jsp">Sales History</a>
          </div>
        </li>
      </ul>
    </div>
  </nav>

  <section id="showcase">
    <div class="container">
      <h1 class="display-4">${car.year} ${car.make} ${car.model}</h1>
      <p class="lead">More info about the car</p>
    </div>
  </section>
  <div class="container">
    <div class="card-deck mb-3 text-left">
      <div class="card mb-4 shadow-sm">
        <div class="card-body">
          <h2 class="card-title pricing-card-title"> ${car.askingPrice}</h2>
          <div class="img">
            <img src="InventoryData/carPics/${car.imageTitle}" alt="car">
          </div>
        </div>
      </div>
      <div class="card mb-4 shadow-sm">
        <div class="card-body">
          <ul class="list-unstyled mt-3 mb-4">
            <li>Year: ${car.year}</li> 
           <!--  try get year?  -->
            <li>Make: ${car.make}</li>
            <li>Model: ${car.model}</li>
            <li>VIN: ${car.vin}</li>
            <li>Mileage: ${car.mileage}</li>
            <li>Description: ${car.description}</li>
          </ul>


          <c:if test="${bid.equals('true')}">
            <a href="placeBid.jsp?vin=${car.vin}&bid=${bid}&car=${car}" class="btn btn-lg btn-block btn-dark"
              role="button">Place Bid</a>
          </c:if>

          <a href="registerSale.jsp?vin=${car.vin}&askingPrice=${car.askingPrice}" class="btn btn-lg btn-block btn-dark"
            role="button">Purchase</a>
          <a href="inventory.jsp" class="btn btn-lg btn-block btn-dark" role="button">Return to Inventory</a>
        </div>
      </div>
    </div>
  </div>

  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
    integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
    crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
    integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
    crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
    integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
    crossorigin="anonymous"></script>
</body>

<footer class="footer font-small bg-dark">

  <div class="footer text-center py-3">
    <a href="index.jsp"> MyDealership.net</a> &copy 2020 copyright
  </div>

</footer>

</html>

当我单击特定的汽车时,“有关汽车的更多信息”未正确拉出文本文件。出于某种原因,我得到一个404,它停在目录(carPics /)上,没有获取该汽车的特定jpg,也没有显示年份,品牌,型号,年份,里程或描述。我不确定是否需要提供更多信息,但这是应该从中提取信息的文本文件

2019-02-03 :: 1955-Porsche-Spyder.jpg :: 1955 ::保时捷:: Spyder :: 4L455HE8563223 :: 102000 :: 170000 :: 4速手动变速箱,由中置616发动机提供动力。 2019-04-01 :: 2010-Pontiac-GXP.jpg :: 2010 ::庞蒂亚克:: GXP :: 4H8L4493920 :: 110000 :: 2600 ::原始油漆作业,也使用新轮胎。 2019-05-12 :: 2020-Volkswagen-Passat.jpg :: 2020 ::大众::帕萨特:: 949509LH44 :: 0 :: 24000 ::四缸174马力,带有驻车辅助系统。 2019-07-19 :: 2020-Chevrolet-Blazer.jpg :: 2020 ::雪佛兰:: Blazer :: 9394L994H :: 0 :: 30000 ::大胆而精致的外观满足最终两排中型SUV的敏捷性能。 Blazer配备RS和Premier型号上的标准3.6L V6发动机,功能强大又优雅。 2019-11-30 :: 2005-Ford-Mustang.jpg :: 2005 ::福特::野马:: 989L33221 :: 28000 :: 12000 :: V8,5速手动,如新状况,高级皮革座椅。 2020-02-04 :: 1992-Chevrolet-Astro.jpg :: 1992 ::雪佛兰:: Astro :: P993745H :: 220000 :: 400 ::这东西还怎么运行? 2020-05-19 :: :: 1970-Dodge-SuperBee.jpg :: 1970 ::道奇::超级蜂:: 8LH44321 :: 0 :: 60000 ::这是稀有的1970道奇超级蜂,配有440六只装手枪握把4spd变速箱。真正的V代码车,带有广播节目单,是1970年的599辆之一。该发动机的日期代码正确无误,并由著名的Campbell Automotive用轻质铝制进气口进行了改装。还具有新的离合器和驱动轴。具有Dana Sure grip差速器和动力转向。它在Rally车轮上搭配子午线轮胎可以很好地骑乘。 EB3浅蓝色金属色与深蓝色内饰的稀有配色。被认为是原始的58k英里。 2020-06-20 :: 1967-Dodge-Charger.jpg :: 1967 ::道奇::充电器:: 9939489LHH :: 1000 :: 42000 ::新改造的发动机,其中只有15,788台被生产,无锈,全部出厂编号与4桶化油器匹配。 2020-07-29 :: 2015-Honda-Accord.jpg :: 2015 ::本田::雅阁:: 99394L339X :: 100000 :: 10100 ::零事故,无问题,省油36 MPG Hwy / 27 MPG city 。 2019-03-12 :: 1968-Chevrolet-Impala.jpg :: 1968 ::雪佛兰:: Impala :: 225218909H :: 60000 :: 49900 ::配备了通用铝制板条箱引擎大马力427 hp的铝制缸盖。

(看起来比实际文件中的整洁^^)

此外,这是我的Car类,其中包含构造函数,getter / setter等。 我知道我在整个过程中都没有发现一些小错误

package com.carSalesSystem;

public class Car {
    // Class properties
    
    private String purchaseDate;
    private String imageTitle;
    private String make;
    private String model;
    private String year;
    private String vin;
    private String mileage; 
    private String description;
    private String askingPrice;
    
    // Parameterized Constructor 
    public Car(String purchaseDate,String imageTitle,String year,String make,String model,String vin,String mileage,String askingPrice,String description) {
        this.purchaseDate = purchaseDate;
        this.imageTitle = imageTitle;
        this.year = year;
        this.make = make;
        this.model = model;
        this.vin = vin;
        this.mileage = mileage;
        this.askingPrice = askingPrice;
        this.description = description;
    }
    
    // Default Constructor 
    public Car() {
        
    }
    
    
    // Getters and Setters
    public String getPurchaseDate() {
        return purchaseDate;
    }
    public void setPurchaseDate(String purchaseDate) {
        this.purchaseDate = purchaseDate;
    }
    public String getimageTitle() {
        return imageTitle;
    }
    public void setimageTitle(String imageTitle) {
        this.imageTitle = imageTitle;
    }
    public String getMake() {
        return make;
    }
    public void setMake(String make) {
        this.make = make;
    }
    public String getModel() {
        return model;
    }
    public void setModel(String model) {
        this.model = model;
    }
    public String getYear() {
        return year;
    }
    public void setYear(String year) {
        this.year = year;
    }
    public String getVin() {
        return vin;
    }
    public void setVin(String vin) {
        this.vin = vin;
    }
    public String getMileage() {
        return mileage;
    }
    public void setMileage(String mileage) {
        this.mileage = mileage;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public String getAskingPrice() {
        return askingPrice;
    }
    public void setAskingPrice(String askingPrice) {
        this.askingPrice = askingPrice;
    }
    
    
    // Print String to File method
    public String stringToFile() {
        return purchaseDate + "  ::  " + imageTitle + "  ::  " + year + "  ::  " + make + "  ::  " + model + "  ::  " + vin + "  ::  " + mileage + "  ::  " + askingPrice + "  ::  " + description;
    }
    
    // toString method
    @Override
    public String toString() {
        return "Purchase Date = " + purchaseDate + ",Year = " + year + ",Make = " + make + ",Model = " + model + ",VIN = " + vin + ",Mileage = " + mileage + ",Asking Price = " + askingPrice;
    }
    

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)