Почему браузер загружает сервлет как файл, а не обрабатывает логику, или просто не может найти 404?

Я немного новичок в развертывании веб-приложений на реальном сервере, но у меня есть в основном знания о сервлетах и ​​отображении сервлетов. Я знаю, что мне нужно сопоставить сервлет с относительным путем, таким как /Servlet в web.xml, и я могу определить этот шаблон URL в самом сервлете с помощью аннотаций (но не обоих). Теперь, когда я пытаюсь развернуть веб-приложение, я загрузил весь каталог в папку веб-приложений (без создания файла.WAR) в Ubuntu 16.04 с Jetty9, и я думаю (я не прав?), Мой web.xml в порядке, но У меня проблемы с отображением сервлета в файле.jsp, из которого я его вызываю. (Я думаю, это потому, что если я изменяю web.xml, это не влияет ни на что, но при изменении параметра action.jsp формы.jsp это происходит. Когда я вызовите сервлет как форма action="WEB-INF/classes/loginPackage/loginServlet.class", его загружают как файл, в противном случае он возвращает с 404. Когда я устанавливаю ссылку как:

кажется работающим, но возвращается с не найденным без кода ошибки, подобного этому:

НЕ найден экран без кода ошибки

Моя структура файла показана на рисунке.

FileStructure

Вот мой web.xml:

`<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>LoginApp</display-name>
    <description>
        This is a simple web application with a source code organization
        based on the recommendations of the Application Developer's Guide.
    </description>
    <!--loginServlet-->
    <servlet>
        <servlet-name>loginServlet</servlet-name>
        <servlet-class>loginPackage.loginServlet</servlet-class>
    </servlet>
     <servlet-mapping>
        <servlet-name>loginServlet</servlet-name>
        <url-pattern>/loginServlet</url-pattern>
    </servlet-mapping>`

Вот логин.jsp:

 `<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body><p>Hey Friend! If You already a member, please login!</p><br>
        <p>If not, please registrate <a href="registrator.jsp">here</a></p>
        <form action="${pageContext.request.contextPath}/loginServlet" method="post">  
        Name:<input type="text" name="userName"/><br/><br/>  
        Password:<input type="password" name="userPass"/><br/><br/>  
        <input type="submit" value="login"/>  
        <a href="index.html"><input type="button" value="back"/></a>
        </form>  
    </body>
</html>`

Вот сервлет:

`package loginPackage;

import java.io.IOException;  
import java.io.PrintWriter;  

import javax.servlet.RequestDispatcher;  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import javax.servlet.http.HttpSession;

//@WebServlet(urlPatterns = {"/loginServlet"})  
public class loginServlet extends HttpServlet {  
public void doPost(HttpServletRequest request, HttpServletResponse response)  
        throws ServletException, IOException {  

    response.setContentType("text/html");  
    PrintWriter out = response.getWriter();  

    String n=request.getParameter("userName");                  
    String p=request.getParameter("userPass");  


    out.write("This is username: " + n);

    out.close();  
    }  
}  `

Может ли кто-нибудь помочь мне правильно связать сервлет из формы? Или, если вы видите какие-либо проблемы с моей файловой структурой или чем-то еще, пожалуйста, опишите мне решение для этого.

Заранее спасибо!

0 ответов

Другие вопросы по тегам