2012-05-07 86 views
1

我正在編寫我的第一個JSP頁面,並且正在嘗試連接到Google Weather API。 所以我希望你能耐心等待我。 這是我的JSP頁面:GoogleWeather無法解析爲類型

<%@ page import="controller.GoogleWeather" %> 
<%@ 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>Zipcode - Weather</title> 
     <% 
      if(request.getParameter("zipcode") != null) { 
       GoogleWeather gw = new GoogleWeather(request.getParameter("zipcode")); 
       gw.getWeatherFromServer(); 
      } 
     %> 
    </head> 
    ..... // body goes here. 

這是我的控制器類GoogleWeather.java

package controller; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.ProtocolException; 
import java.net.URL; 
public class GoogleWeather { 
    private float temp_f; 
    private float humidity; 
    private String condition; 
    private String zipcode; 

    public GoogleWeather(String zipcode) { 
     this.zipcode = zipcode; 
    } 

    public void getWeatherFromServer() { 
     HttpURLConnection connection = null; 
      BufferedReader rd = null; 
      StringBuilder sb = null; 
      String line = null; 

      URL serverAddress = null; 

      try { 
       serverAddress = new URL("http://www.google.com/ig/api"); 
       //set up out communications stuff 
       connection = null; 

       //Set up the initial connection 
       connection = (HttpURLConnection)serverAddress.openConnection();connection.setRequestProperty("weather", this.zipcode); 
       connection.setRequestMethod("GET"); 
       connection.setDoOutput(true); 
       connection.setReadTimeout(10000); 

       connection.connect(); 

       //read the result from the server 
       rd = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
       sb = new StringBuilder(); 

       while ((line = rd.readLine()) != null) 
       { 
        sb.append(line + '\n'); 
       } 

       System.out.println(sb.toString()); 

      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (ProtocolException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      finally 
      { 
       //close the connection, set all objects to null 
       connection.disconnect(); 
       rd = null; 
       sb = null; 
       connection = null; 
      } 
    } 

    public float getTemp_f() { 
     return temp_f; 
    } 

    public void setTemp_f(float temp_f) { 
     this.temp_f = temp_f; 
    } 

    public float getHumidity() { 
     return humidity; 
    } 

    public void setHumidity(float humidity) { 
     this.humidity = humidity; 
    } 

    public String getCondition() { 
     return condition; 
    } 

    public void setCondition(String condition) { 
     this.condition = condition; 
    } 
} 

我得到的錯誤和堆棧跟蹤如下。

An error occurred at line: 12 in the jsp file: /Weather.jsp 
GoogleWeather cannot be resolved to a type 
9: <% 
10: 
11: if(request.getParameter("zipcode") != null) { 
12:  GoogleWeather gw = new GoogleWeather(request.getParameter("zipcode")); 
13:  gw.getWeatherFromServer(); 
14: } 
15: 

Stacktrace: 
    at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102) 
    at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331) 
    at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:457) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:378) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340) 
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:644) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

我試圖尋找一對夫婦網上資源,但他們都非常混亂。

+0

你在哪裏部署.class文件?它需要在'/ WEB-INF/classes'中,遵循正常的打包層次結構。 (在這種情況下,所以''/ WEB-INF/classes/controller/GoogleWeather.class'。)(我也不喜歡調用一個「控制器」,但這是一個不同的問題。) –

+0

如何部署類文件在那個特定的文件夾?我正在使用eclipse。 – Brahadeesh

回答

0

在/ WEB-INF/classes文件夾中部署類文件是根據上面的Dave Newton的註釋工作的。