0

I have mapped the servlet correctly.. but still getting 404 error. Couldn't figure out the mistake.

I have been trying to fetch json data from an api and store the data into mysql table when the user clicks the "Insert Data into table" button. I have been doing it in the terminal(not using any IDE). the url was going perfectly as i expect, but results in 404. trying it to figure out the mistake for past 3 hours...:(!

//this is my java file

package com.kalyan;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class InsertData extends HttpServlet{
    
     public  void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException{
        fetchEmployeeData(); 
        res.setContentType("text/plain");   
        PrintWriter message = res.getWriter();
        message.println("Data inserted in Table");
    }

     public void fetchEmployeeData() {
        try {
            URL url = new URL("https://api.slingacademy.com/v1/sample-data/files/employees.json");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setRequestProperty("Accept", "application/json");
            
            if (conn.getResponseCode() != 200) {
                throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
            }
            
            BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
            String output;
            StringBuilder responseBuilder = new StringBuilder();
            while ((output = br.readLine()) != null) {
                responseBuilder.append(output);
            }
            conn.disconnect();
            String jsonResponse = responseBuilder.toString();
            JSONObject jsonObject = new JSONObject(jsonResponse);
            JSONArray employees = jsonObject.getJSONArray("employees");
            insertEmployeesIntoDB(employees);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

        public void insertEmployeesIntoDB(JSONArray employees) {
        try (       
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/Employees", "myusername", "mypassword")) {
            for (int i = 0; i < employees.length(); i++) {
                JSONObject employee = employees.getJSONObject(i);
        int id = employee.getInt("id");
                String firstName = employee.getString("first_name");
                String lastName = employee.getString("last_name");
                int age = employee.getInt("age");
                String gender = employee.getString("gender");
                String email = employee.getString("email");
                String phone = employee.getString("phone");
                String department = employee.getString("department");
                String jobTitle = employee.getString("job_title");
                int yearsOfExperience = employee.getInt("years_of_experience");
                int salary = employee.getInt("salary");
                
                String sql = "insert into employees (id, first_name, last_name, age, gender, email, phone, department, job_title, years_of_experience, salary) "
                        + "values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
                PreparedStatement stmt = conn.prepareStatement(sql);
        stmt.setInt(1, id);
                stmt.setString(2, firstName);
                stmt.setString(3, lastName);
                stmt.setInt(4, age);
                stmt.setString(5, gender);
                stmt.setString(6, email);
                stmt.setString(7, phone);
                stmt.setString(8, department);
                stmt.setString(9, jobTitle);
                stmt.setInt(10, yearsOfExperience);
                stmt.setInt(11, salary);
                stmt.executeUpdate();
            }
            System.out.println("Table inserted");
        } catch (SQLException e) {
            e.printStackTrace();
        }
     }
   }

>! this is my html file

<!DOCTYPE html>
<html>
<head>
    <title>Make-Request </title>
</head>
<body>
    <button onclick="insertData()">Insert Data into table</button>
    <h1 id="message"></h1>
</body>
<script>
    function insertData() {
  fetch('storedata')
    .then(response => response.text())
    .then(data => showMessage(data))
    .catch(error => console.error(error));
}

     function showMessage(data){
    document.querySelector('#message').textContent = `${data}`;
}
</script>

</html>

>! this is my web.xml file

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    <display-name>InsertData</display-name>
    <servlet>
        <servlet-name>InsertData</servlet-name>
        <servlet-class>com.kalyan.InsertData</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>InsertData</servlet-name>
        <url-pattern>/storedata</url-pattern>
    </servlet-mapping>
</web-app>

Kalyan cs
  • 1
  • 1

0 Answers0