JavaWebApp不断返回相同的结果
我编写了这个web应用程序,输入一个城市的坐标(纬度、经度)(来源:)后,返回美国发生的10次最近地震的列表。现在,我有两个问题: 问题1。JavaWebApp不断返回相同的结果,java,json,servlets,Java,Json,Servlets,我编写了这个web应用程序,输入一个城市的坐标(纬度、经度)(来源:)后,返回美国发生的10次最近地震的列表。现在,我有两个问题: 问题1。 我输入所选城市(如西雅图)的坐标,然后得到正确的结果 我输入第二个城市(例如华盛顿特区)的坐标,得到不同的(正确的)结果 我在第一个城市(如西雅图)输入相同的坐标,结果与前一次第二次搜索相同 我输入了第三、第四、第六等城市的坐标,并不断得到相同的结果 这就像应用程序被卡住了一样(经过2-3次正确的查询?)。有时我会连续得到三个不同的结果,有时是四个,有时只
import java.io.IOException;
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 com.dominikazb.earthquakes.engine.ReadJsonFile;
@WebServlet("/read")
public class ReadLongitudeAndLatitudeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String latitudeOfSearchedCityString = request.getParameter("latitudeOfSearchedCity");
String longitudeOfSearchedCityString = request.getParameter("longitudeOfSearchedCity");
ReadJsonFile.getReadJson().convertJsonToJavaObjects(latitudeOfSearchedCityString, longitudeOfSearchedCityString);
response.sendRedirect("list");
}
}
import java.io.IOException;
import java.util.TreeMap;
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 com.dominikazb.earthquakes.engine.ReadJsonFile;
@WebServlet("/list")
public class PrintEarthquakesServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
TreeMap<Double, String> outputMap = ReadJsonFile.getReadJson().read10closestCities();
request.setAttribute("outputMap", outputMap);
request.getRequestDispatcher("/earthquakesList.jsp").forward(request, response);
}
}
PrintEarthquakesServlet.java
import java.io.IOException;
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 com.dominikazb.earthquakes.engine.ReadJsonFile;
@WebServlet("/read")
public class ReadLongitudeAndLatitudeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String latitudeOfSearchedCityString = request.getParameter("latitudeOfSearchedCity");
String longitudeOfSearchedCityString = request.getParameter("longitudeOfSearchedCity");
ReadJsonFile.getReadJson().convertJsonToJavaObjects(latitudeOfSearchedCityString, longitudeOfSearchedCityString);
response.sendRedirect("list");
}
}
import java.io.IOException;
import java.util.TreeMap;
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 com.dominikazb.earthquakes.engine.ReadJsonFile;
@WebServlet("/list")
public class PrintEarthquakesServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
TreeMap<Double, String> outputMap = ReadJsonFile.getReadJson().read10closestCities();
request.setAttribute("outputMap", outputMap);
request.getRequestDispatcher("/earthquakesList.jsp").forward(request, response);
}
}
earthquakesList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<%@ page isELIgnored="false" %>
<meta charset="UTF-8">
</head>
<body>
<div>
<form action="/read" method="post">
<label>Latitude</label>
<fieldset>
<input type="text"
name="latitudeOfSearchedCity"
id="latitudeOfSearchedCity"
class="form-control"
oninvalid="this.setCustomValidity('Type in latitude in a format 00.000')"
onchange="try{setCustomValidity('')}catch(e){}"
oninput="setCustomValidity(' ')"
pattern="^[-]?(\d+|\d*\.\d+)$"
required="required" />
</fieldset>
<label>Longitude</label>
<fieldset>
<input type="text"
name="longitudeOfSearchedCity"
id="longitudeOfSearchedCity"
class="form-control"
oninvalid="this.setCustomValidity('Type in longitude in a format 00.000')"
onchange="try{setCustomValidity('')}catch(e){}"
oninput="setCustomValidity(' ')"
pattern="^[-]?(\d+|\d*\.\d+)$"
required="required" />
</fieldset>
<fieldset>
<label>Select a city</label>
<select id="countrySelect">
<option>None</option>
<option value="35.084385_-106.650421">Albuquerque</option>
<option value="33.748997_-84.387985">Atlanta</option>
<option value="41.878113_-87.629799">Chicago</option>
<option value="32.776665_-96.796989">Dallas</option>
<option value="39.739235_-104.990250">Denver</option>
<option value="31.761877_-106.485023">El Paso</option>
<option value="29.760427_-95.369804">Houston</option>
<option value="30.332184_-81.655647">Jacksonville</option>
<option value="39.099728_-94.578568">Kansas City</option>
<option value="36.169941_-115.139832">Las Vegas</option>
<option value="34.052235_-118.243683">Los Angeles</option>
<option value="35.149532_-90.048981">Memphis</option>
<option value="43.038902_-87.906471">Milwaukee</option>
<option value="44.977753_-93.265015">Minneapolis</option>
<option value="29.951065_-90.071533">New Orleans</option>
<option value="40.712776_-74.005974">New York City</option>
<option value="28.538336_-81.379234">Orlando</option>
<option value="39.952583_-75.165222">Philadelphia</option>
<option value="33.448376_-112.074036">Phoenix</option>
<option value="40.440624_-79.995888">Pittsburgh</option>
<option value="45.512230_-122.658722">Portland</option>
<option value="38.581573_-121.494400">Sacramento</option>
<option value="29.424122_-98.493629">San Antonio</option>
<option value="32.715736_-117.161087">San Diego</option>
<option value="37.338207_-121.886330">San Jose</option>
<option value="47.606209_-122.33206">Seattle</option>
<option value="38.627003_-90.199402">St. Louis</option>
<option value="32.222607_-110.974709">Tucson</option>
<option value="38.907192_-77.036873">Washington D.C.</option>
</select>
</fieldset>
<br />
<button type="submit">Submit</button>
</form>
</div>
<div class="resultsTable2">
<table>
<thead>
<tr>
<th>Distance</th>
<th>Location</th>
</tr>
</thead>
<tbody>
<c:forEach items="${outputMap}" var="entry">
<tr>
<td><fmt:formatNumber type="number" maxFractionDigits="1"
value="${entry.key}" /> KM</td>
<td><c:out value="${entry.value}" /></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<script src="webjars/jquery/1.9.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$('#countrySelect').on('change', function () {
var val = this.value;
var parts = val.split("_");
$('#latitudeOfSearchedCity').val(parts[0]);
$('#longitudeOfSearchedCity').val(parts[1]);
});
</script>
</body>
</html>
纬度
经度
选择一个城市
没有一个
阿尔伯克基
亚特兰大
芝加哥
达拉斯
丹佛
埃尔帕索
休斯敦
杰克逊维尔
堪萨斯城
拉斯维加斯
洛杉矶
孟菲斯
密尔沃基
明尼阿波利斯
新奥尔良
纽约市
奥兰多
费城
凤凰
匹兹堡
波特兰
萨克拉门托
圣安东尼奥
圣地亚哥
圣何塞
西雅图
圣路易斯
图森
华盛顿特区。
提交
距离
位置
公里
$('#countrySelect')。在('change',函数(){
var val=该值;
var parts=val.split(“”);
$('#latitudeOfSearchedCity').val(部分[0]);
$(#longitudeOfSearchedCity').val(第[1]部分);
});
web.xml
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>PrintEarthquakesServlet</servlet-name>
<servlet-class>com.dominikazb.earthquakes.servlets.PrintEarthquakesServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>ReadLongitudeAndLatitudeServlet</servlet-name>
<servlet-class>com.dominikazb.earthquakes.servlets.ReadLongitudeAndLatitudeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PrintEarthquakesServlet</servlet-name>
<url-pattern>/PrintEarthquakesServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ReadLongitudeAndLatitudeServlet</servlet-name>
<url-pattern>/ReadLongitudeAndLatitudeServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>earthquakesList.jsp</welcome-file>
</welcome-file-list>
</web-app>
Web应用程序创建的原型
打印地震servlet
com.dominikazb.sequences.servlets.PrintEarthquakesServlet
ReadLongitudeAndLatitudeServlet
com.dominikazb.seventures.servlets.ReadLongitudeAndLatitudeServlet
打印地震servlet
/打印地震servlet
ReadLongitudeAndLatitudeServlet
/ReadLongitudeAndLatitudeServlet
earthquakesList.jsp
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dominikazb</groupId>
<artifactId>10closestEarthquakes</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>10closestEarthquakes Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<tomcat.version>7.0.50</tomcat.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.jsimone/webapp-runner -->
<dependency>
<groupId>com.github.jsimone</groupId>
<artifactId>webapp-runner</artifactId>
<version>9.0.27.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>3.3.6</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>1.9.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.10</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
</dependencies>
<build>
<finalName>10closestEarthquakes</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<wtpversion>2.0</wtpversion>
<wtpContextName>todo</wtpContextName>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<verbose>true</verbose>
<source>1.8</source>
<target>1.8</target>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path>
<contextReloadable>true</contextReloadable>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<webappDirectory>${project.build.directory}/${project.artifactId}
</webappDirectory>
<warName>${project.artifactId}</warName>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.github.jsimone</groupId>
<artifactId>webapp-runner</artifactId>
<version>9.0.27.0</version>
<destFileName>webapp-runner.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
4.0.0
com.dominikazb
. 请提供帮助???主要的逻辑错误如下:
distanceAndPlaceMapForAllCities.put(distanceBetweenTheCityAndEarthquakes, place);
因为那张地图永远在增长
将这一行添加到您的方法中
distanceAndPlaceMapForAllCities = new TreeMap<>();
ObjectMapper om = new ObjectMapper();
...
distance和placeMapforallcities=newtreemap();
ObjectMapper om=新的ObjectMapper();
...
您会得到正确的答案,因为对于方法的每次调用,您都会“重置”映射
总之,我在你的代码中看到了一些其他的“错误想法”,比如
- 使用似乎不是很有用的静态字段
- 在两个不同的函数调用之间共享“位置”(在多线程环境中,您可能会遇到问题)
无论如何,我希望能帮助你。第一期,t