【问题标题】:NoSuchMethodException in Java web serviceJava Web 服务中的 NoSuchMethodException
【发布时间】:2016-03-28 01:44:34
【问题描述】:

我正在创建一个需要添加员工、检索所有员工以及检索单个员工的 Java Web 服务。除了增加员工外,一切都在工作。我得到一个 NoSuchMethodException。我已经浏览了 100 次代码,但似乎没有任何改变。

首先,我有一个带有文本字段的jsp页面来添加员工:

<fieldset>
        <form action="#">
            <legend>Add Staff Members</legend>
            <label>First name: <input type="text" id="forename" /> </label> 
            <br /> 
            <label>Last name: <input type="text" id="surname" /></label>
            <br /> 
            <label>Email: <input type="text" id="email" /></label>
            <br /> 
            <label>Phone Number: <input type="text" id="phone_num" /></label>
            <br /> 
            <label>Address: <input type="text" id="address" /></label>
            <br /> 
            <input type="button" value="Add Staff"
                onclick='addStaffMember("forename", "surname", "email", "phone_num", "address", "staff_result_add")' />
        </form>
        <div id="staff_result_add"></div>
    </fieldset>

当用户单击按钮时,会调用一个 javascript 函数。 js函数如下:

function addStaffMember(firstname, lastname, address, phone_num, email, resultRegion) {
var web_xml_address = "add-staff-member";
var data = "&firstname="
        + getValue(firstname) + "&lastname=" + getValue(lastname) + "&address=" + getValue(address)
        + "&phone_num=" + getValue(phone_num) + "&email=" + getValue(email);
var address = web_xml_address + "?" + data;
ajaxResult(address, resultRegion);

}

然后这会转到我的 web.xml 文件以查找相关的 java 类:

 <servlet>
    <servlet-name>Add Staff Servlet</servlet-name>
    <servlet-class>com.coreservlets.AddStaffMember</servlet-class>
 </servlet>
 <servlet-mapping>
    <servlet-name>Add Staff Servlet</servlet-name>
    <url-pattern>/add-staff-member</url-pattern>
 </servlet-mapping>

这最终会转到我的 Java 方法:

package com.coreservlets;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;



public class AddStaffMember {

public Connection connection;

public AddStaffMember(String dbName, String username, String password)     {
    String url = "jdbc:mysql://mudfoot.doc.stu.mmu.ac.uk:3306/" + dbName;

    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        System.out.println("Connected");
        connection = DriverManager.getConnection(url, username, password);
    } catch (InstantiationException | IllegalAccessException
            | ClassNotFoundException | SQLException e) {
        e.printStackTrace();
        System.out.println("Disconnected");
    }
 }

public void addStaffMember(StaffInfo staff) throws SQLException {
    String query = "insert into staff_info (staff_id, forename, surname, address, phone_number, email) values (?,?,?,?,?,?)";
    try {
        PreparedStatement statement =         connection.prepareStatement(query);
        statement.setInt(1, staff.getStaffID());
        statement.setString(2, staff.getForename( ) );
        statement.setString(3, staff.getSurname( ) );
        statement.setString(4, staff.getLocation( ) );
        statement.setString(5, staff.getPhone( ) );
        statement.setString(6, staff.getEmail( ) );         
        statement.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

}

然后被 servlet 调用执行:

 package com.dunn.servlets;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.coreservlets.AddStaffMember;
import com.coreservlets.StaffInfo;

/**
 * Servlet implementation class AddStaffMemberServlet
 */
@WebServlet("/AddStaffMemberServlet")
public class AddStaffMemberServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public AddStaffMemberServlet() {
    super();
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 *      response)
 */
public void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request,   HttpServletResponse
 *      response)
 */
public void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    String forename = request.getParameter("forename");
    String surname = request.getParameter("surname");
    String address = request.getParameter("address");
    String email = request.getParameter("email");
    String phone = request.getParameter("phone");

    StaffInfo staffMember = new StaffInfo();

    //staffMember.setStaffID(100);
    staffMember.setForename(forename);
    staffMember.setSurname(surname);
    staffMember.setLocation(address);
    staffMember.setPhone(phone);
    staffMember.setEmail(email);

    AddStaffMember addStaffMember = new AddStaffMember("staff_info", "dunnj", "grustpOl8");
    try {
        addStaffMember.addStaffMember(staffMember);
        System.out.println(" Member added ");
    } catch (SQLException e) {
        e.printStackTrace();
        System.out.println(" Errorr ");

    }


}

}

我不知道发生了什么,在网上找不到任何相关的东西!!!

我们将不胜感激!

我得到的错误是:

【问题讨论】:

  • 我不确定,但我认为您会收到错误消息,因为AddStaffMember 类没有无参数构造函数。

标签: java mysql ajax


【解决方案1】:

您的类 AddStaffMember 需要一个无参数构造函数。

【讨论】:

  • 它有一个非参数构造函数
  • 哦,不,对不起!像这样:?公共 AddStaffMember(){ }
  • 实际类,而不是你的 Servlet。
  • 我现在明白了:java.lang.ClassCastException: com.coreservlets.AddStaffMember cannot be cast to javax.servlet.Servlet
  • servlet-class>com.coreservlets.AddStaffMember 应该是 servlet-class>com.coreservlets.AddStaffMemberServlet
猜你喜欢
  • 1970-01-01
  • 2019-11-02
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多