我遇到了jsp-servlet的问题。你能帮帮忙吗? 有:LoginServlet.java,AddServlet.java,add.jsp,login.jsp。
LoginServlet.java get& check parameters,添加到请求属性:登录并清空HashSet 并转发到add.jsp
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
request.getSession(false);
response.setContentType("text/html;charset=UTF-8");
// Получаем параметры авторизации
String username = request.getParameter("user");
String password = request.getParameter("password");
// Проверяем имя пользователя и пароль
if ("admin".equals(username) && "123".equals(password)) {
request.setAttribute("dreamBasket", new HashSet());
request.setAttribute("user", username);
RequestDispatcher rd = request.getRequestDispatcher(response
.encodeURL("add.jsp"));
rd.forward(request, response);
}
}
add.jsp,输入另一个参数并通过action.post转到AddServlet.java
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
request.getSession(false);
String dr = request.getParameter("dream");
HashSet dreamBasket = (HashSet) request.getAttribute("dreamBasket"); //NP!
if (dr != null) {
dreamBasket.add(dr.toString());
}
}
但是:AddServlet.java无法看到登录和HashSet属性( 如何将login和HashSet值传递给AddServlet.java?
答案 0 :(得分:0)
不,这不是您在Servlet
中获取值的方式。
当您在Servlet
中设置请求范围属性时,您将在JSP
中获取它们,因为您使用forward(request, response);
现在,从JSP发布到Servlet
时,Servlet
容器将创建一个新请求,因此您设置的值将丢失。
侧面注意:只要您不打算在转发的Set
中使用它,我认为没有任何理由创建新的请求范围JSP
。