2009-04-21 8 views
0

Je suis en train de terminer le tutoriel à http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=438jQuery ajoute le nom de servlet deux fois à l'URL

Il semble que le servlet tente de publier les données sur http://localhost:8080/WeatherServlet/WeatherServlet ... (WeatherServlet est le nom du servlet - duh).

je la page index.jsp suivante (qui affiche bien)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
      $("#getWeatherReport").click(function(){ 
      $cityName = document.getElementById("cityName").value; 
      $.post("WeatherServlet", {cityName:$cityName}, function(xml) { 
      $("#weatherReport").html(
      $("report", xml).text() 
      );   
      }); 
     }); 

    }); 
</script> 
</head> 
<body> 
<form name="form1" type="get" method="post"> 
Enter City : 
    <input type="text" name="cityName" id="cityName" size="30" /> 
    <input type="button" name="getWeatherReport" id="getWeatherReport" 
    value="Get Weather" /> 
</form> 
<div id="weatherReport" class="outputTextArea"> 
</div> 
</body> 
</html> 

La page suivante WeatherReport.java

package org.ajax.tutorial; 

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class WeatherReport 
*/ 
public class WeatherReport extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

/** 
* @see HttpServlet#HttpServlet() 
*/ 
public WeatherReport() { 
    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 
} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse 
*  response) 
*/ 
public void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

    String city = request.getParameter("cityName"); 
    String report = getWeather(city); 
    response.setContentType("text/xml"); 
    PrintWriter out = response.getWriter(); 
    out.println("<weather><report>" + report + "</report></weather>"); 
    out.flush(); 
    out.close(); 
} 

private String getWeather(String city) { 
    String report; 

    if (city.toLowerCase().equals("trivandrum")) 
     report = "Currently it is not raining in Trivandrum. Average temperature is 20"; 
    else if (city.toLowerCase().equals("chennai")) 
     report = "It’s a rainy season in Chennai now. Better get a umbrella before going out."; 
    else if (city.toLowerCase().equals("bangalore")) 
     report = "It’s mostly cloudy in Bangalore. Good weather for a cricket match."; 
    else 
     report = "The City you have entered is not present in our system. May be it has been destroyed " 
       + "in last World War or not yet built by the mankind"; 
    return report; 
} 

} 

La page web.xml suivante

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" > 
<servlet> 
    <description>Weather Data provider</description> 
    <display-name>Weather Data provider</display-name> 
    <servlet-name>WeatherServlet</servlet-name> 
<servlet-class>ajaxify.WeatherServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>WeatherServlet</servlet-name> 
    <url-pattern>/WeatherServlet</url-pattern> 
    </servlet-mapping> 

</web-app> 

Je suis en train de créer une archive WAR et de la déployer en utilisant les outils intégrés d'Eclipse (pas de fourmi - doute que cela soit important).

Répondre

2

Je pense que le problème est que vous accédez à la page à

http://localhost:8080/WeatherServelet/ 

puis vous faites un courrier à: .post $ ("WeatherServlet", ...

qui est chemin relatif, de sorte que vous finissez par l'affichage à

http://localhost:8080/WeatherServelet/WeatherServelet 

vous devriez essayer de poster sur un chemin absolu:

$.post("/WeatherServlet", ... 
Questions connexes