2013-01-11 103 views
1

问题是, “请求的资源(/ main_servlet /)不可用。”HTTP状态404错误Java Servlet

下面是源代码:

context.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<Context antiJARLocking="true" path="/main_servlet"/> 

web.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 


    <servlet> 
     <servlet-name>main_servlet</servlet-name> 
     <servlet-class>smart_servlet.main_servlet</servlet-class> 
    </servlet> 

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

    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 

</web-app> 

main_servlet.java:

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package smart_servlet; 

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; 

/** 
* 
* @author Box 
*/ 
public class main_servlet extends HttpServlet { 

    /** 
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. 
    * @param request servlet request 
    * @param response servlet response 
    * @throws ServletException if a servlet-specific error occurs 
    * @throws IOException if an I/O error occurs 
    */ 
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 
     try { 

      out.println("<html>"); 
      out.println("<head>"); 
      out.println("<title>Servlet main_servlet</title>"); 
      out.println("</head>"); 
      out.println("<body>"); 
      out.println("<h1>Servlet main_servlet at " + request.getContextPath() + "</h1>"); 
      out.println("</body>"); 
      out.println("</html>"); 

     } finally {    
      out.close(); 
     } 
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 
    /** 
    * Handles the HTTP <code>GET</code> method. 
    * @param request servlet request 
    * @param response servlet response 
    * @throws ServletException if a servlet-specific error occurs 
    * @throws IOException if an I/O error occurs 
    */ 
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    /** 
    * Handles the HTTP <code>POST</code> method. 
    * @param request servlet request 
    * @param response servlet response 
    * @throws ServletException if a servlet-specific error occurs 
    * @throws IOException if an I/O error occurs 
    */ 
    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    /** 
    * Returns a short description of the servlet. 
    * @return a String containing servlet description 
    */ 
    @Override 
    public String getServletInfo() { 
     return "Short description"; 
    } 
} 

的代码main_servlet.java,context.xml和web.xml只能由NetBeans自动生成。 我真的不知道为什么没有找到源。 非常感谢!

回答

2

尝试使用以下URL访问代码:

http://(servername)/main_servlet/main_servlet 

     where (severname) is the name of the server on which your app is running. 

这是必要的,因为你已经定义了两个应用程序上下文为“/ main_servlet”

或servlet的URL模式 - 一个更好的解决方案是改变应用程序上下文别的东西,如“MyApp的”

<Context antiJARLocking="true" path="/MyApp"/> 

,然后你可以使用URL

http://(servername/MyApp/main_servlet 
+0

谢谢!我解决了它! – user1968907

+0

噢,谢谢。我勾选了它! – user1968907