【发布时间】:2016-03-08 08:12:13
【问题描述】:
我想通过任何带有如下结构的链接访问 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);
}
}
【问题讨论】:
-
javax.servlet.ServletRequestWrapper.isAsyncStarted(ServletRequestWrapper.java:403)没有错误,它是一个堆栈跟踪行 - 在日志文件中查看更高的位置,应该有一个实际的错误消息。将其添加到您的问题中。 -
你得到什么样的错误? test.jsp 与之前的调用路径相关,因为您从请求对象中获取了 RequestDispatcher。
-
它没有错误,我看到很多类似这样的跟踪线 javax.servlet.ServletRequestWrapper.isAsyncStarted(ServletRequestWrapper.java:403) 正在运行。
-
为什么说不能用forward呢?您要转发到哪个网址,遇到什么错误?
-
我的意思是我没有在控制台上看到任何错误,但它没有转发到 jsp 页面