RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

问题[servlet]

Martin Hope
dimonpokemon2282
Asked: 2023-10-15 20:01:14 +0000 UTC

404错误;玻璃鱼;小服务程序

  • 5

当我尝试访问 localhost:61687/hello(或类似的)处的 servlet 时,出现 404 错误。

在此输入图像描述

细节:

服务器本身可以正常工作,因为 http://localhost:61687/ 上会出现一个页面,确认了这一点: 在此输入图像描述

端口61687,因为 8080 忙。

使用 gradle 命令收集 .war 文件

./gradle war

使用以下命令从控制台启动服务器:

./asadmin start-domain newDomain1

对于部署,我使用了以下命令

./asadmin deploy --force /Users/dima/Documents/projects/Java/JavaEE/build/libs/JavaEE-1.0-SNAPSHOT.war

Servlet 代码:

package servlets;

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 java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name="firstservlet", urlPatterns = "/hello")
public class servlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        PrintWriter printWriter = resp.getWriter();
        printWriter.write("Hello!");
        printWriter.close();
    }
}

构建.gradle 文件:

plugins {
    id 'java'
    id 'war'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
    compileOnly group: 'org.glassfish', name: 'javax.servlet', version: '3.2-b06'

}

test {
    useJUnitPlatform()
}

我如何尝试修复错误

我尝试了地址http://localhost:61687/JavaEE-1.0-SNAPSHOT/hello - 情况没有改变。

我尝试使用不带包的 servlet 类

尝试使用带有一个参数的注释: @WebServlet("/hello")

servlet
  • 1 个回答
  • 16 Views
Martin Hope
Klaus Köhler
Asked: 2022-06-21 20:39:10 +0000 UTC

Log4j 没有创建日志文件

  • 2

这是一个用于演示的简单记录器调用示例

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@WebServlet(LOGIN_PATH)
public class LoginServlet extends HttpServlet {
    static final Logger logger = LoggerFactory.getLogger(LoginServlet.class);

    public static final String ERROR_ATTRIBUTE = "error";

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        logger.info("Example log from {}", LoginServlet.class.getSimpleName());
        logger.error("Example log from {}", LoginServlet.class.getSimpleName());
        logger.debug("Example log from {}", LoginServlet.class.getSimpleName());
        logger.warn("Example log from {}", LoginServlet.class.getSimpleName());

        req.getRequestDispatcher(LOGIN_VIEW).forward(req, resp);
    }
    }

对于配置,我在资源文件夹中创建了 log4j.properties

# Logger option
log4j.rootLogger = TRACE, console, file

log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.EnhancedPatternLayout
log4j.appender.console.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%X{CorrelationId}] %-5p %X{method} %X{uri} %c{1} - %m%n

# console is set to be a ConsoleAppender.
log4j.appender.file = org.apache.log4j.RollingFileAppender

log4j.appender.file.File = D:\\log\\logging.log
log4j.appender.file.MaxFileSize = 10MB
log4j.appender.file.MaxBackupIndex = 10
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%X{CorrelationId}] %-5p %X{method} %X{uri} %c{1} - %m%n

这是我在 pom xml 中与日志记录相关的依赖项。

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.36</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.21</version>
      </dependency>
  <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
  </dependency>

问题是文件没有创建,我只在控制台看到这个输出 在此处输入图像描述

java servlet
  • 1 个回答
  • 122 Views
Martin Hope
Nick
Asked: 2020-04-04 15:02:12 +0000 UTC

限制对 servlet 应用程序中页面的访问

  • 0

大家好。伙计们可以举例说明在 servlet 应用程序中限制对页面的访问。因此,当我以用户身份登录时,我无法使用 /admin url 转到管理页面。

这是登录 servlet 代码:

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 LoginServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        req.getRequestDispatcher("index.jsp").forward(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter pw = response.getWriter();
        response.setContentType("text/html");

        String user = request.getParameter("userName");
        String pass = request.getParameter("userPassword");

        if (user.equals("admin") && pass.equals("admin")) {
            response.sendRedirect("/admin");
        }
        if (user.equals("user") && pass.equals("user")) {
            response.sendRedirect("/user");
        }
        if (user.equals("page3") && pass.equals("page3")) {
            response.sendRedirect("page3.jsp");
        }
        else
            pw.println("Login Failed...!");
        pw.close();

    }


}
servlet
  • 1 个回答
  • 10 Views
Martin Hope
helloWorld
Asked: 2020-11-09 06:11:49 +0000 UTC

上传文件保存在 TomCat 哪里?

  • 0

需要将图像保存到服务器。可以吃朴实无华的图书馆吗?当我停在 oracle 教程上时。但问题是文件保存在服务器的什么位置,如何创建路径呢?

该示例使用String path = request.getParameter("MyPath");但我未在此处指定返回的null 内容还有另一个选项path = request.getServletContext().getRealPath("");返回项目的父目录。是否可以在服务器上使用此选项?

@MultipartConfig
public class FileUploadServlet extends HttpServlet {

    private final static Logger LOGGER =
            Logger.getLogger(FileUploadServlet.class.getCanonicalName());
    private static final long serialVersionUID = 7908187011456392847L;

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");

        // Create path components to save the file
        final String path = request.getParameter("destination");
        final Part filePart = request.getPart("file");
        final String fileName = getFileName(filePart);

        OutputStream out = null;
        InputStream filecontent = null;
        final PrintWriter writer = response.getWriter();

        try {
            out = new FileOutputStream(new File(path + File.separator
                    + fileName));
            filecontent = filePart.getInputStream();

            int read;
            final byte[] bytes = new byte[1024];

            while ((read = filecontent.read(bytes)) != -1) {
                out.write(bytes, 0, read);
            }
            writer.println("New file " + fileName + " created at " + path);
            LOGGER.log(Level.INFO, "File {0} being uploaded to {1}",
                    new Object[]{fileName, path});

        } catch (FileNotFoundException fne) {
            writer.println("You either did not specify a file to upload or are "
                    + "trying to upload a file to a protected or nonexistent "
                    + "location.");
            writer.println("<br/> ERROR: " + fne.getMessage());

            LOGGER.log(Level.SEVERE, "Problems during file upload. Error: {0}",
                    new Object[]{fne.getMessage()});
        } finally {
            if (out != null) {
                out.close();
            }
            if (filecontent != null) {
                filecontent.close();
            }
            if (writer != null) {
                writer.close();
            }
        }
    }

    private String getFileName(final Part part) {
        final String partHeader = part.getHeader("content-disposition");
        LOGGER.log(Level.INFO, "Part Header = {0}", partHeader);
        for (String content : part.getHeader("content-disposition").split(";")) {
            if (content.trim().startsWith("filename")) {
                return content.substring(
                        content.indexOf('=') + 1).trim().replace("\"", "");
            }
        }
        return null;
    }

    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Servlet that uploads files to a user-defined destination";
    }
}
servlet
  • 2 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5