Java网站:使用RequestDispatcher发送POST数据



我正处于Java web项目的一个非常基础的阶段,并且一直停留在登录页面上。我使用.jsp进行登录(这对小项目来说是不是不好的做法?(,在输入用户名后,页面应该发送到一个创建基本游戏的servlet,然后发送到另一个显示它的.jsp。

但是,我正在尝试使用RequestDispatcher从login.jsp重定向到servlet,然后从servlet重定向到显示页面(另一个.jsp(,而且我似乎找不到如何使用RequestDisptcher发送POST数据,如果我不能发送POST数据的话,我不知道servlet应该如何响应(servlet只执行GET和POST,对吧?(。

这是我的login.jsp:代码

<%@page contentType="text/html" pageEncoding="UTF-8" %>
<%@page import="login.User" %>
<% 
String username = request.getParameter("username");
if (username != null)
{
session.setAttribute("username", username);
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/classes/create");
dispatcher.forward(request,response);
}
%>  
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Login
</title>
</head>
<body>
<h1>Home</h1>
<h3>Please enter a username to log in:</h3>
<form id="login" method="POST" action="create">
Username: <input type="text" id="username" name="username" />
<br />
<br />
<input type="submit" id="submit" name="submit" value="submit" />
&nbsp;
<input type="button" id="clear" name="clear" value="clear" />
</form>
</body>
</html>

我的servlet有很多代码,这些代码对于我的示例来说可能是不必要的,但是正如前面提到的,我使用的是POST方法。servlet本身似乎也在工作。

有没有办法(或更好的办法(做我在这里想做的事?还是应该通过RequestDispatcher发送GET参数?或者我应该使用一个发送到servlet的.htm登录页吗?我正试图用MVC原理来构建这个项目。

您一直在seesion中保留这些值,因此无需将post调用发送到另一个页面,只需在重定向后读取其他页面中的seesion值即可。

因此在其他JSP中读取会话中的值。确保在登录jsp中填写会话中的所有值