java - 不使用RequestDispatcher forward和Servlet Annotation

标签 java jsp servlets

我想通过具有如下结构的任何链接访问 Servlet 类:http://localhost:8080/loginjsp/Reading/abc 。 “abc”可以改变,这取决于你。 这样我就用了Servlet Annotation

@WebServlet(urlPatterns = "/Reading/*").

但问题是我无法向前使用RequestDispatcher。 我怎样才能同时完成这两个任务?

阅读.Java

package com.servlet;

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

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ReadingTestServlet
 */
@WebServlet(
        urlPatterns = "/Reading/*",
        initParams =
        {
            @WebInitParam(name = "saveDir", value = "D:/FileUpload"),
            @WebInitParam(name = "allowedTypes", value = "jpg,jpeg,gif,png")
        }
)
public class ReadingTestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        PrintWriter out = response.getWriter();
        RequestDispatcher rd=request.getRequestDispatcher("test.jsp");    
            rd.forward(request,response); 
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

最佳答案

我已经尝试过,你是对的,有一个问题。问题是您陷入了无限循环,因为您的调度使 servlet 被再次调用。正向 urlPattern 将匹配 urlPatterns = "/Reading/*" (您正在使用通配符)。将 urlPatterns 中的通配符 '*' 替换为 'abc' 即可工作(我假设您将 'test.jsp' 放在/Reading 目录中)

顺便说一句,考虑使用

getServletConfig().getServletContext().getRequestDispatcher("/absolute/path");

在类似情况下。

关于java - 不使用RequestDispatcher forward和Servlet Annotation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34070652/

相关文章:

java - 如何在 Java 中创建循环并递增索引以用作字符串的一部分?

html - 如何删除列表项的缩进

javascript - 删除版 block 后如何刷新

java - 使用Servlet登录后重定向到index.jsp

tomcat - 如何优雅地终止 Tomcat 中的长查询 REST 请求

java - 在线程之间共享 bin 数组

java - Android 2.2 (level 8) httpclient.execute 一致超时

java - JPanel 从另一个类重绘

Tomcat:在同一网络应用程序中使用 servlet 和 websocket (jsr356)

java - 我应该在我的 Java Web 应用程序中为此创建一个模型和 DAO 吗?