GlassFish无法识别特定的servlet

时间:2019-09-05 16:03:46

标签: java servlets glassfish web.xml

我正在为Uni课程开发的Web应用程序有问题。

使用我称为“注册”的servlet管理网站的注册,用户必须通过网站标头中的链接访问该servlet。

问题是,如果我将servlet命名为“ Register”,GlassFish将拒绝识别它并给我404,但是如果我在同一个包中创建了一个新的servlet,命名为any,然后复制/粘贴了“ Register”的代码”在GlassFish上很好用,一切正常。为什么?我在做什么错了?

我会给servlet一个名字,但是我的webapp将由我的教授开发的某种工具自动检查,所以我不能更改它的名字(坦率地说,我不想,因为我想了解什么我的代码有误,请防止再次出现此错误)。对于这个项目,我正在使用Java 8,NetBeans 8.2和GlassFish 4.1.1。

编辑:我忘了解释我尝试在其他页面(在欢迎文件或其他“主要”页面”中)链接servlet“注册”,但是结果是相同的:404,如果servlet被命名为“注册” ”,如果我更改名称,一切都会很好

这是header.jsp的代码,这是我包含在网站的每个页面中的servlet链接的位置:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<div id="header">
    <div>
        <a href="/ProgettoFPW/index.jsp"><h1>FPWriter</h1></a>
    </div>
    <div>
        <c:if test="${user == null}">
            <h2 style="color: gray">Articoli/Gestione</h2>
        </c:if>
        <c:if test="${user != null}">
            <c:if test="${user.isAuthor() == true}">
                <a href="/ProgettoFPW/pages/articoli.jsp"><h2>I miei articoli</h2></a>
            </c:if>
            <c:if test="${user.isAuthor() == false}">
                <a href="/ProgettoFPW/pages/gestione.jsp"><h2>Le mie valutazioni</h2></a>
            </c:if>
        </c:if>
    </div>
    <div>
        <c:if test="${user == null}">
            <!-- this line gives me problems -->
            <a href="/ProgettoFPW/Register"><h2>Registrazione</h2></a>
        </c:if>
        <c:if test="${user != null}">
            <a href="/ProgettoFPW/pages/profilo.jsp"><h2>Profilo di ${user.getName()}</h2></a>
        </c:if>
        </div>
    <div>
        <c:if test="${user != null}">
            <!-- this line doesn't give me problems, even though it works just like the other one -->
            <a href="/ProgettoFPW/Logout">
                <h2>Logout</h2>
            </a>
        </c:if>
        <c:if test="${user == null}">
            <a href="/ProgettoFPW/pages/login.jsp">
                <h2>
                    Login
                </h2>
            </a>
        </c:if>
    </div>
</div>

请注意,我使用相同的方式来链接“注销” servlet,但这丝毫没有问题。这就是为什么我对此无效的唯一解释是servlet的名称。

这是我的webapp文件夹结构的屏幕截图: https://imgur.com/a/NbHGsiu

这是我的web.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">
    <welcome-file-list>
        <welcome-file>pages/login.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>Login</servlet-name>
        <servlet-class>control.Login</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>Logout</servlet-name>
        <servlet-class>control.Logout</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>Register</servlet-name>
        <servlet-class>control.Register</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Login</servlet-name>
        <url-pattern>/Login</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Logout</servlet-name>
        <url-pattern>/Logout</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Register</servlet-name>
        <url-pattern>/Register</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

你能帮我一下吗?我在这里真的迷路了。如果我的解释缺少某些信息,请告诉我

0 个答案:

没有答案
相关问题