Http状态404 - /请求的资源不可用

时间:2015-07-23 08:01:31

标签: java tomcat

我是java的新手,我只是尝试从Deployment Descriptor文件(web.xml)中读取初始化参数,但是出现了上述错误?

我的web.xml和附带快照的java文件编码编码。

我的指导结构是

c:\....tomcat\webapps\dd\web-inf\classes

java类文件中没有错误。

enter image description here

成功编译的Java文件代码

import java.io.*; 
import java.net.*; 
import javax.servlet.*;
import javax.servlet.http.*;

public class MyServlet2 extends HttpServlet { 

    String fileName; 
    public void init(ServletConfig config) throws ServletException {
        super.init(config); 
        fileName = config.getInitParameter("logfilename"); 
    } 

    protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException { 
         processRequest(request, response); 
    } 

    protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException { 
         processRequest(request, response); 
    } 

    protected void processRequest(HttpServletRequest request,HttpServletResponse 
response)throws ServletException, IOException { 
          PrintWriter out = response.getWriter(); 
          out.println(fileName); 
          out.close(); 
    } 
}

的web.xml

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app> 
    <servlet> 
    <servlet-name>MyServlet2</servlet-name> 
    <servlet-class>MyServlet2</servlet-class>
        <init-param>
            <param-name>logfilename</param-name>
            <param-value>value1</param-value> 
        </init-param>
    </servlet> 
    <servlet-mapping> 
        <servlet-name>MyServlet2</servlet-name> 
        <url-pattern>/mc11</url-pattern> 
    </servlet-mapping> 
</web-app> 

我的目录和错误页面的其他细节我认为我的web.xml无法正常工作 enter image description here

2 个答案:

答案 0 :(得分:5)

目前我可以看到两个问题......

Servlet初始化参数

您目前有:

//定义param1     参数1     值1    

这不是你如何定义参数。您应该指定包含参数名称的param-name元素,而不是将参数名称用作XML元素名称。

<init-param>
   <param-name>logfilename</param-name>
   <param-value>...</param-value>
</init-param>

另请注意,//不是您在XML中撰写评论的方式 - 如果您想要评论,则应该:

<!-- Define the first parameter -->
<init-param>
   <param-name>logfilename</param-name>
   <param-value>...</param-value>
</init-param>

param-value元素应该是一个提示 - 如果你真的可以指定自己的元素,我预期<logfilename>value in here</logfilename> - 将名称指定为元素名称,但是使用固定元素名称param-value指定的值将是一个奇怪的方案。)

Servlet映射

目前您的映射是:

<servlet-name> FormServlet</servlet-name>
    <url-pattern>/ss/</url-pattern>
</servlet-mapping>

我怀疑地图不匹配http://localhost:8080/dd/ss/s.html,因为你没有任何通配符 - 你可能会发现它与完全匹配 {{1 }}。我不清楚http://localhost:8080/dd/ss/部分的来源,但我认为这是您配置的一个独立部分。你应该试试:

dd

如果这不适用于<!-- I would recommend removing the space from the servlet - name *everywhere*. --> <servlet-name>FormServlet</servlet-name> <url-pattern>/ss/*</url-pattern> </servlet-mapping> ,请查看它是否映射http://localhost:8080/dd/ss/s.html - 可能是您的引擎未按其他方式进行配置。

答案 1 :(得分:0)

代码没有问题,我尝试使用net beans工具并在上面的代码的帮助下完成了任务。之前可能是tomcat中的问题。