Apache Tomcat выдает ошибку 404, не может найти сервлет

133
06 декабря 2019, 15:30

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
<title>Калькулятор</title>
</head>
<body>
 <h3>Формула:</h3>
 <p><img src="img/formula.png" alt="Мат формула"></p>
 <h3>Введите параметры:</h3>
<form action="/servlet">
 <input type="text" name="a">
 <input type="text" name="b">
 <input type="text" name="c">
 <input type="text" name="d">
 <input type="submit" name="кнопка" value="Вычислить">
</form>
</body>
</html>

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class servlet extends HttpServlet {
@Override
public void doGet (HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");

    try (PrintWriter out = response.getWriter()) {
        String aParam =  request.getParameter("a");
        String bParam =  request.getParameter("b");
        String cParam =  request.getParameter("c");
        String dParam =  request.getParameter("d");
        out.println("<!DOCTYPE html>");
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Решение‚</title>");
        out.println("</head>");
        out.println("<body>");
        if (isNum(aParam) && isNum(bParam) && isNum(cParam) && isNum(dParam)) 
  {
            Double a = Double.parseDouble(aParam);
            Double b = Double.parseDouble(bParam);
            Double c = Double.parseDouble(cParam);
            Double d = Double.parseDouble(dParam);
            double result = Math.pow((2*Math.sin(a) + 
            Math.cos(Math.abs(b*Math.sqrt(c)))),d);
            out.println("<h3>Ответ:<h3>" + result);
        } else {
            response.sendError(400);
        }
        out.println("</body>");
        out.println("</html>");
    }
}
public static boolean isNum(String s) {
    try {
        Double.parseDouble(s);
    } catch(NumberFormatException e) {
        return false;
    } catch(NullPointerException e) {
        return false;
    }
    return true;
}
}

Web.xml :

 <?xml version="1.0" encoding="UTF-8"?>
 <web-app version="2.5" 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_2_5.xsd">
 <servlet>
    <servlet-name>Servlet</servlet-name>
    <servlet-class>WebApplication1.Servlet</servlet-class>
 </servlet>
 <servlet-mapping>
    <servlet-name>Servlet</servlet-name>
    <url-pattern>/Servlet</url-pattern>
 </servlet-mapping>
 <session-config>
    <session-timeout>
        30
    </session-timeout>
 </session-config>
 </web-app>
Answer 1

У вас не найден сервлет(точнее, по пути по которому вы перешли ничего не лежит). Покажите ваш xml.web. Там должно быть что-то такое:

<servlet>
    <servlet-name>servlet</servlet-name>
    <servlet-class>путь_до_сервлета</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>servlet</servlet-name>
    <url-pattern>/servlet</url-pattern>
</servlet-mapping>

Или добавьте аннотацию к классу servlet: @WebServlet(name = "servlet", urlPatterns = "/servlet")

Вот так:

import java.io.PrintWriter;
@WebServlet(name = "servlet", urlPatterns = "/servlet")
public class servlet extends HttpServlet {
READ ALSO
Как запустить Youtube трансляцию и вести ее?

Как запустить Youtube трансляцию и вести ее?

столкнулся с задачейМне нужен создать трансляцию и вести её через Java

154
Решение примеров в веб приложении [закрыт]

Решение примеров в веб приложении [закрыт]

Want to improve this question? Update the question so it focuses on one problem only by editing this post

108
Ошибка слияния манифеста

Ошибка слияния манифеста

После добавления в gradle:

132