Java 在浏览器中获取servlet的结果
这个问题可能被问了好几次,也可能得到了回答。我已经找了好长时间的答案,但还没有找到。 让我们从头开始 我在java文件夹中的c:drive-in程序文件中安装了jdk 8 C:\ProgramFiles\java\ 我在C:\Program Files\apache Software Foundation\apache-tomcat-8.0.5中提取了已安装的apache tomcat\ 如上所述,我已经设置了一个指向apache目录的CATALINA_HOME变量和一个指向jdk 8目录的java HOME变量。 路径设置为C:\Program Files\Java\jdk1.8.0\bin; 类路径设置为C:\Program Files\Apache Software Foundation\Apache-tomcat-8.0.5\lib\servlet-api.jar 我运行tomcat buy命令promt和catalina_home/lib/statup.bat,它运行成功,当我键入url localhost:8080时,我可以看到服务器的主页 现在我在catalina_主页中设置了如下文件夹 C:\Program Files\Apache Software Foundation\Apache-tomcat-8.0.5\webapps\ch03\WEB-INF\classes\com\wrox\projsp\ch03\myfirstwebapp(这在我试图阅读的一本wrox出版物中提到过)在“myfirstwebapp”文件夹中,我创建了一个MyFirstServlet.java文件,其中包含以下代码Java 在浏览器中获取servlet的结果,java,jsp,servlets,Java,Jsp,Servlets,这个问题可能被问了好几次,也可能得到了回答。我已经找了好长时间的答案,但还没有找到。 让我们从头开始 我在java文件夹中的c:drive-in程序文件中安装了jdk 8 C:\ProgramFiles\java\ 我在C:\Program Files\apache Software Foundation\apache-tomcat-8.0.5中提取了已安装的apache tomcat\ 如上所述,我已经设置了一个指向apache目录的CATALINA_HOME变量和一个指向jdk 8目录的ja
package com.wrox.projsp.ch03.myfirstwebapp;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
public class MyFirstServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/plain");
PrintWriter out=response.getWriter();
out.println("this is my first servlet");
}
}
之后,我通过输入命令promt“javac MyFirstServlet.java”编译了.java文件,该命令在同一文件夹中创建了一个MyFirstServlet.class文件
http://localhost:8080/ch03/servlet/com.wrox.projsp.ch03.MyFirstServlet
它会给出一个错误,说明“请求的资源不可用”。为什么会这样?
我想我已经做了所有必要的步骤。原因是什么?如果我错过了交流,我会提前道歉。我的写作能力很差。请不要贬低这篇文章,因为我已经付出了很多努力,只有在我没有其他选择的时候才发布这个问题。提前谢谢
type Exception report
message Error instantiating servlet class com.wrox.projsp.ch03.MyFirstServlet
description The server encountered an internal error that prevented it from fulfilling this request.
Exception:
javax.servlet.ServletException: Error instantiating servlet class com.wrox.projsp.ch03.MyFirstServlet
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:74)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:277)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2451)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2440)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:744)
root cause
java.lang.ClassNotFoundException: com.wrox.projsp.ch03.MyFirstServlet
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1328)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1175)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:74)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:277)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2451)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2440)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:744)
如果您没有键入写入url,您的servlet可以在以下位置访问:
http://localhost:8080/ch03/MyFirstServlet
您需要一个从url到servlet的映射。尝试将@WebServlet
注释添加到类:
package com.wrox.projsp.ch03.myfirstwebapp;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
@WebServlet("/myfirstservlet")
public class MyFirstServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/plain");
PrintWriter out=response.getWriter();
out.println("This is my first servlet.");
}
}
编译类文件并将其放入:webapps/ch03/WEB-INF/classes/com/wrox/projsp/ch03/myfirstwebapp/MyFirstServlet.class
重新启动tomcat,并访问url:http://127.0.0.1:8080/ch03/myfirstservlet
在浏览器中获取servlet的结果:
servlet:
ch03
(项目命名)作为url模式。。尝试使用以下URL访问该文件:http://localhost:8080/ch03/MyFirstServlet
您需要在web.xml
文件中正确配置应用程序,如果您想稍后使用Java类并将其用作Servlet
,则必须在web.xml
中定义如下:
MyFirstServlet
com.wrox.projsp.ch03.MyFirstServlet
MyFirstServlet
/MyFirstServlet
url模式定义了以后可以访问的路径。要访问上述代码中的MyFirstServlet
,您需要使用以下url:http://localhost:8080/MyFirstServlet
参考链接:
为什么没有人回答我的问题?我把代码放在文本文件中,你提到的url无法访问它。它是否给出了相同的错误?Tomcat服务器正在运行吗?尝试。仍然没有运行,是的,给出相同的错误。是的,服务器正在运行,它显示http状态404。我想问题在于url映射。我不明白我做的每件事都是正确的。我的服务器也在运行。为什么会出现问题。试试这个:我从来没有使用过Tomcat,不知道你需要放置包。我想它不会工作。这是另一个教程,我需要安装ApacheAnt吗?我必须将tomcat配置为端口80而不是端口8080吗?我在这里做错了什么?
`http://server:port/context_root/servlet/servlet_name?name=value`
<servlet>
<servlet-name>MyFirstServlet</servlet-name>
<servlet-class>com.wrox.projsp.ch03.MyFirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyFirstServlet</servlet-name>
<url-pattern>/MyFirstServlet</url-pattern>
</servlet-mapping>