2011-05-29 56 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