Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在浏览器中获取servlet的结果_Java_Jsp_Servlets - Fatal编程技术网

Java 在浏览器中获取servlet的结果

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

这个问题可能被问了好几次,也可能得到了回答。我已经找了好长时间的答案,但还没有找到。 让我们从头开始

我在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文件,其中包含以下代码

    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:

  • 在运行时由Sun ONE Web服务器servlet创建和管理 引擎

  • 对封装在请求对象中的输入数据进行操作

  • 使用封装在响应对象中的数据响应查询

  • 是可扩展的

  • 在交互之间提供用户会话信息持久性

  • 可以在服务器运行时动态重新加载

  • 可通过URL寻址。应用程序页面上的按钮通常 指向servlet

  • 可以调用其他servlet和/或JSP

  • 您应该使用以下方法:

    关于servlet的解释:

    服务器:端口>IP地址(或主机名)和可选端口号

    上下文根目录>不带前导“/”的上下文路径,用于安装web应用程序

    servlet>仅当web.xml文件中未定义servlet映射时才需要

    servlet名称>web.xml文件中配置的servlet名称(或servlet映射,如果已定义)

    ?name=value>可选的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>