2015-06-08 78 views
0

我试图建立一个使用jsp,servlet,Tomcat-6.0.43和eclipse并获取HTTP状态404错误的twitter搜索。任何人都可以请检查我哪里错了。 我的代码:请求的资源不可用错误

first.jsp:

<%@ 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> 
</head> 
<body> 
<form action="ServletValues.java" method="get"> 
Enter Twitter Search Details : <input type="text" name="first"><br> 
<input type="submit"> 
</form> 
</body> 
</html> 

TwitterServlet.java:

import java.io.IOException; 
import java.util.List; 

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

import twitter4j.Status; 
import twitter4j.Twitter; 
import twitter4j.TwitterException; 
import twitter4j.TwitterFactory; 
import twitter4j.auth.AccessToken; 


public class TwitterServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 


    public TwitterServlet() { 

    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String CONSUMER_KEY = "[data]"; 
     String CONSUMER_KEY_SECRET = "[data]"; 
     String AccessToken = "[data]"; 
     String AccessTokenSecret = "[data]"; 
     response.setContentType("text/html"); 
     String input1 = request.getParameter("first"); 

     try{ 
     Twitter twitter = new TwitterFactory().getInstance(); 
      twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_KEY_SECRET); 


      AccessToken oathAccessToken = new AccessToken(AccessToken, AccessTokenSecret); 

      twitter.setOAuthAccessToken(oathAccessToken); 
      List<Status> status = twitter.getUserTimeline(input1); 
      for (Status status2 : status) 
      { 
       System.out.println("---Tweet---"+status2.getText()); 
      }}catch (TwitterException te){ 
       System.out.println("Error occured "+te); 
      } 




     super.doPost(request, response); 
    } 

} 

的web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="WebApp_ID" 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"> 
    <display-name> 
    Twitter12</display-name> 
    <servlet> 
     <description> 
     </description> 
     <display-name> 
     TwitterServlet</display-name> 
     <servlet-name>TwitterServlet</servlet-name> 
     <servlet-class> 
     TwitterServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>TwitterServlet</servlet-name> 
     <url-pattern>/TwitterServlet</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
     <welcome-file>index.htm</welcome-file> 
     <welcome-file>index.jsp</welcome-file> 
     <welcome-file>default.html</welcome-file> 
     <welcome-file>default.htm</welcome-file> 
     <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

Error: HTTP Status 404 - /Twitter12/ServletValues.java

type Status report

message /Twitter12/ServletValues.java

description The requested resource is not available.

+2

表明了你是什么意思'ServletValue的效应初探流。 java' here'

'?把'TwitterServlet'放在'ServletValues,Java'上,而不是' – Babel

+0

这是一个愚蠢的错误。好好工作。谢谢! – Dhruvil

+0

@Dhruvil请注意您的KeySecret和AccessTokenSecret已被泄露。 –

回答

0

在JSP文件表单操作,替换

<form action="ServletValues.java" method="get"> 

随着

<form action="TwitterServlet" method="get"> 

由于您web.xml你的servlet映射模式对于您打算调用的Servlet类,n是TwitterServlet

另外,在你的servlet你只是打印到System.out而你应该写为使用

response.getOutputStream().write("---Tweet---"+status2.getText()); 

,使其在响应

0

更改你的表单动作: ​

<form action="/TwitterServlet" method="get"> 

你的servlet网址是/ TwitterServlet因为你已经定义

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