我有一个servlet load_plan,其doPost方法使用以下代码加载计划:
int id = Integer.parseInt(request.getParameter("id"));
我有另一个servlet hire_new_plan,它的doGet方法将id发送到load_plan servlet。
hire_new_plan doPost() --> load_plan doGet().
如何从doGet方法发送id,以便我可以使用接收器servlet的doPost方法中的request.getParameter()
捕获它?
我读过有两个问题。
首先,我无法从另一个servlet的doGet方法调用doPost方法。
其次,好像request.setAttribute("id", id)
似乎与int id = Integer.parseInt(request.getParameter("id"));
不匹配。我在接收器servlet中执行。
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
您可以使用RequestDispatcher转发到其他servlet。
HttpURLConnection connection = (HttpURLConnection) new URL("http://localhost:8080/WebAppName/SecondServlet").openConnection();
connection.setRequestMethod("POST");
InputStream response = connection.getInputStream();
// ... Write to OutputStream of your HttpServletResponse
虽然转发相同的请求对象被发送到被调用的servlet。所以你不需要做任何事情。默认情况下它将在该请求对象中可用。
如果你这样做,doGet会被调用另一个servlet。 如果你不能移动你的逻辑,我建议你使用HttpURLConnection对象。你可以像这样以编程方式触发POST请求
{{1}}