0

サーブレット プログラムの練習中に、この問題に遭遇しました。そして今、私はどのプロジェクトを作成しても同じ問題に直面しています。私が間違っていることを知りません。私はnetbeans 8.1とグラスフィッシュサーバーを使用しています。エラーは次のとおりです:-

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コード:-

<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>

サーブレット コード:-

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 コード:-

<?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>
4

1 に答える 1

1

サーブレット クラスは、javax.servlet.http.HttpServlet クラスを拡張する必要があります。

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

2 番目のエラーについては、なぜこのエラーが発生するのかはわかりませんが、オブジェクトを挿入するための別の構成である可能性がありますが、この問題を解決するには、引数のないパブリック コンストラクターを作成する必要があります。

public class calc extends the javax.servlet.http.HttpServlet
    {
        public calc() {}
        public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException,ServletException
        {
    .....
于 2014-09-30T18:06:39.737 に答える