Search code examples
javaservletsnetbeansglassfishnetbeans-8.1

error while executing servlet programs


while practising servlet programs i encountered this problem. and now i am facing this same problem in whichever project i create . dont know what i am doing wrong. i am using netbeans 8.1 and glass fish server . the error is :-

HTTP Status 500 - Internal Server Error
type Exception report
messageInternal Server Error
descriptionThe server encountered an internal error that prevented it from      
fulfilling this request.
exception javax.servlet.ServletException: Error instantiating servlet class calc
root cause
com.sun.enterprise.container.common.spi.util.InjectionException: Error creating managed object for class: class calc

root cause

java.lang.NoSuchMethodException: calc.<init>()

note The full stack traces of the exception and its root causes are available in the   
GlassFish Server Open Source Edition 4.1 logs.
GlassFish Server Open Source Edition 4.1 

html code:-

<html>
    <head>
       <title>TODO supply a title</title>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
       <form method="get" action="http://localhost:8080/calculator/calc">
           <label for="no1">Enter the number one</label>
           <input type="text" id="no1" name="no1"/><br><br>
           <label for="no2">Enter the number two</label>
           <input type="text" id="no2" name="no2"/><br><br>
           <select name="opr">
               <option>addition</option>
               <option>subtraction</option>
               <option>multiplication</option>
               <option>Division</option>
           </select>
           <input type="submit" value="submit"/>
           <input type="reset" value="reset"/>

       </form>
    </body>
</html>

servlet code:-

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
class calc extends HttpServlet
{
    public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException,ServletException
    {
       PrintWriter pw=res.getWriter();
       float result=0;
       float a=Float.parseFloat(req.getParameter("no1"));
       float b=Float.parseFloat(req.getParameter("no2"));
       String opr=req.getParameter("opr");
       if(opr.equals("addition"))
       {
           result=a+b;
       }
       if(opr.equals("subtraction"))
       {
           result=a-b;
       }
       if(opr.equals("multiplication"))
       {
           result=a*b;
       }
       if(opr.equals("division"))
       {
           result=a/b;
       }
       pw.println("the answer is "+result);
    }
}

xml code:-

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <servlet>
       <servlet-name>calc</servlet-name>
       <servlet-class>calc</servlet-class>
    </servlet>
    <servlet-mapping>
       <servlet-name>calc</servlet-name>
       <url-pattern>/calc</url-pattern>
    </servlet-mapping>
    <session-config>
       <session-timeout>
           30
       </session-timeout>
    </session-config>
    <welcome-file-list>
       <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

Solution

  • Your serlvet class must extend the javax.servlet.http.HttpServlet class,

    public class calc extends the javax.servlet.http.HttpServlet
    {
        public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException,ServletException
        {
        .....
    

    For your second error, I,m not sure why are you getting this error could be another config for inject objects, but to solve this problem you must create a public constructor with no arguments.

    public class calc extends the javax.servlet.http.HttpServlet
        {
            public calc() {}
            public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException,ServletException
            {
        .....