2011-05-29 57 views
0

嗨 我正在嘗試使用碼頭服務器構建網站。我想打開jsp頁面作爲起始頁面,但我不能讓它從那裏工作。我試過這個例子。我把戰爭文件放在webapps目錄中,我得到了第一個jsp頁面(index.jsp)。但是當我試圖激活形式我得到這個錯誤消息:在碼頭服務器上打開jsp

HTTP ERROR 404

問題訪問/ GrettingServlet。原因:

NOT_FOUND 

這是文件:

的index.jsp

<%@ page language="java" contentType="text/html; charset=windows-1255" 
pageEncoding="windows-1255"%> 
<!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=windows-1255"> 
<title>Insert title here</title> 
</head> 
<body> 
<form action="GrettingServlet" method="POST"> 
    First Name: <input type="text" name="firstName" size="20"><br> 
    Last Name: <input type="text" name="lastName" size="20"> 
    <br><br> 
    <input type="submit" value="Submit"> 
</form> 

</body> 
</html> 

GrettingServlet.java:

package main; 

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 GrettingServlet 
*/ 

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

/** 
* @see HttpServlet#HttpServlet() 
*/ 
public GrettingServlet() { 
    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) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    response.setContentType("text/html;charset=UTF-8"); 
    PrintWriter out = response.getWriter(); 
    String firstName = request.getParameter("firstName").toString(); 
    String lastName = request.getParameter("lastName").toString(); 

    out.println("<html>"); 
    out.println("<head>"); 
    out.println("<title>Servlet GreetingServlet</title>"); 
    out.println("</head>"); 
    out.println("<body>"); 
    out.println("<p>Welcome " + firstName + " " + lastName + "</p>"); 
    out.println("</body>"); 
    out.println("</html>"); 

    out.close(); 
} 


} 

main.java:

package main; 

import java.util.HashMap; 
import org.mortbay.jetty.Connector; 
import org.mortbay.jetty.Server; 
import org.mortbay.jetty.bio.SocketConnector; 
import org.mortbay.jetty.servlet.Context; 
import org.mortbay.jetty.servlet.ServletHandler; 
import org.mortbay.jetty.servlet.ServletHolder; 
import org.mortbay.jetty.webapp.WebAppContext; 
import org.mortbay.util.ajax.Continuation; 

public class Main { 
Server server; 
Context root; 
HelloServlet servlet; 
HashMap <String, Continuation> hash; 
/** 
* @param args 
* @throws Exception 
*/ 
public static void main(String[] args) throws Exception { 
    new Main().start(); 
} 

public void start() throws Exception { 
    hash = new HashMap<String, Continuation>(); 
    server = new Server(80); 
      root = new WebAppContext(server,"C:/Users/sl300/Desktop/jetty/webapps/MyFirstServlet.war","/"); 
    server.start(); 
    server.join(); 

} 

public void addContinuation(String str,Continuation cc){ 
    hash.put(str, cc); 
} 
    } 

有什麼不對?或者我怎麼才能打開jsp?

回答

0

有助於查看您的web.xml文件。似乎是servlet映射的問題。另一種方法是使用一個ServletHandler並將其添加到服務器實例像

GrettingServlet greetingServlet = new GrettingServlet();

ServletHandler servletHandler = new ServletHandler(); servletHandler.addServletWithMapping(greetingServlet, "/your/servlet/path"); server.addHandler(servletHandler);

+0

我試過,但後來他沒有認識到JSP文件。當我嘗試從瀏覽器打開索引頁時,出現此錯誤: HTTP錯誤:404 訪問/時出現問題。原因: NOT_FOUND – fonet 2011-05-29 20:08:14

+0

然後你應該顯示你的web.xml文件。你需要像這樣映射你的servlet:http://www.cs.uga.edu/~kochut/Teaching/x050/web-xml-explicit.html – laufzeit 2011-05-29 20:20:47

+0

它似乎我沒有web.xml文件。它應該在哪裏? – fonet 2011-05-29 21:03:58