HTTP状态404错误Java Servlet

时间:2013-01-11 05:21:21

标签: java jsp servlets

问题在于 "请求的资源(/ main_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自动生成。 我真的无法弄清楚为什么找不到来源。 非常感谢你!

1 个答案:

答案 0 :(得分:2)

尝试使用以下网址访问您的代码:

http://(servername)/main_servlet/main_servlet 

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

这是必要的,因为您已将应用程序上下文和servlet URL模式都定义为“/ main_servlet”

或者 - 更好的解决方案是将应用程序上下文更改为“MyApp”等其他内容

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

然后你会使用网址

http://(servername/MyApp/main_servlet
相关问题