2012-06-24 38 views
0

我创建dynamic web project,并加入2项:和Tomcat运行JSP文件6

  1. index.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="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> 
    
  2. 默认包servlet像这样(被称为GrettingServlet.java) :

    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; 
    
    public class GrettingServlet extends HttpServlet { 
        private static final long serialVersionUID = 1L; 
    
        public GrettingServlet() { 
         super(); 
        } 
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
         // TODO Auto-generated method stub 
        } 
    
        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(); 
        } 
    
    } 
    

我安装了tomcat6这样我就有了Apache Software Foundation文件夹。 终于我想创建这个项目的文件,所以我选择了项目Export>War fileDestination文本我选择了webapps文件夹中的路径C:\Program Files (x86)\Apache Software Foundation\Tomcat 6.0\webapps。 该项目名为MyFirstServlet。并为了看到index.jsp我在浏览器http://localhost:8080/MyFirstServlet/写在服务器上的形式,但我得到的消息

HTTP Status 404 - /MyFirstServlet/ 

type Status report 

message /MyFirstServlet/ 

description The requested resource (/MyFirstServlet/) is not available. 

Apache Tomcat/6.0.35 

servlet映射是这样的:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>MyFirstServlet</display-name> 
    <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> 
    <servlet> 
    <description>new</description> 
    <display-name>GrettingServlet</display-name> 
    <servlet-name>GrettingServlet</servlet-name> 
    <servlet-class>GrettingServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>GrettingServlet</servlet-name> 
    <url-pattern>/GrettingServlet</url-pattern> 
    </servlet-mapping> 
</web-app> 

我检查了Tomcat和它service status : started

可能是什么问题?

+0

请出示在网上你的servlet映射。xml – MaVRoSCy

+0

@MaVRoSCy添加到以下消息中。 – URL87

回答

2

从给定的例子,你预计你的web应用程序部署到您的Tomcat作为MyFirstServlet.war(或展开的目录 - 这没有区别),让您的GrettingServlet映射到应用程序根 - 如果你希望servlet来处理根:

/WEB-INF/web.xml应该具备以下这样:

<servlet> 
    <servlet-name>GrettingServlet</servlet-name> 
    <servlet-class>your.package.GrettingServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

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

注意错字: “Gretting”(在servlet和映射)与 “问候语”(在JSP形式)

使用您的设置,您应该将浏览器指向http://localhost:8080/MyFirstServlet/GrettingServlet以访问该servlet。

如果你的想法是有JSP页面来处理的根,那么你应该浏览要么http://localhost:8080/MyFirstServlet/<yourJSPName>.jsp或有JSP称为index.jspdefault.jsp(看你web.xml<welcome-file-list/>部分)。在这种情况下,我想你的想法是显示一个JSP然后发布到servlet,因此确保你的servlet规范和映射是正确的(web.xml servlet映射和JSP形式action属性)。

+0

我的想法是查看'index.jsp'的html表单。当我改变'web.xml'就像你建议它给出同样的错误。 – URL87

+0

在这种情况下,它看起来像您的Web应用程序没有得到部署。你能检查Tomcat的日志吗? – maksimov

+0

在'Apache软件基金会'中有文件夹'日志',我必须在那里检查?当我写'http:// localhost:8080'时,我看到了Tomcat的欢迎页面。 – URL87

1

只需修改你的web.xml具有以下,它应该工作

<servlet> 
    <servlet-name>GrettingServlet</servlet-name> 
    <servlet-class>GrettingServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>GrettingServlet</servlet-name> 
    <url-pattern>/GreetingServlet</url-pattern> 
</servlet-mapping> 

UPDATE这里是整个WEB.XML

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>MyFirstServlet</display-name> 
    <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> 
    <servlet> 
    <description>new</description> 
    <display-name>GrettingServlet</display-name> 
    <servlet-name>GrettingServlet</servlet-name> 
    <servlet-class>GrettingServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>GrettingServlet</servlet-name> 
    <url-pattern>/GreetingServlet</url-pattern> 
    </servlet-mapping> 
</web-app> 
+0

我改变了servlet和servlet映射标签,就像你写的一样,但我仍然得到相同的消息。 – URL87

+0

我正在运行你的代码,只改变到web.xml,它工作正常 – MaVRoSCy

+0

你可以再次写所有的web.xml和浏览器中写什么?当你运行它时,你会看到2个文本和按钮? – URL87