1

The problem is that "The requested resource (/main_servlet/) is not available."

Here are the source code:

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";
    }
}

The code of main_servlet.java, context.xml and web.xml are only auto-generated by NetBeans. I really cannot figure out why the source not found. Thank you so much!

user1968907
  • 13
  • 1
  • 3

1 Answers1

2

Try accessing your code with the following URL:

http://(servername)/main_servlet/main_servlet 

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

This is necessary because you have defined both the application context and the servlet URL pattern as "/main_servlet"

OR - a better solution would be to change the application context to something else like "MyApp"

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

and then you would use the URL

http://(servername/MyApp/main_servlet
EJK
  • 12,332
  • 3
  • 38
  • 55