gpt4 book ai didi

java - 从 Java 代码调用 servlet

转载 作者:行者123 更新时间:2023-12-02 05:52:18 24 4
gpt4 key购买 nike

我目前正在尝试使用 jsp 和 servlet 完成登录系统。我的注册和登录验证正在工作。

我希望在登录后链接到欢迎页面以显示用户个人资料信息。我有一个response.sendRedirect(welcome.jsp),仅用于测试目的,它在登录servlet成功登录后进行重定向。

现在,为了在此欢迎页面上显示配置文件信息,我将使用 servlet 从数据库收集信息,并使用打印器将其呈现给浏览器。如何从 loginservlet 成功调用此 servlet 来运行 doPost() 方法?或者有更好的方法吗?

感谢您的宝贵时间。

(为了简单起见,我只是想让一个基本的网页首先出现,以确保它正常工作,一旦我开始工作,数据库方面就不会有任何问题)

登录服务器:

package logon;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

public LoginServlet() {
super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


try
{
System.out.println("In the Login Servlet");
User user = new User();
user.setEmail(request.getParameter("email"));
user.setPassword(request.getParameter("password"));
LoginDAO.login(user);
if(user.isValid())
{
HttpSession session = request.getSession(true);
session.setAttribute("currentSessionUser",user);
session.setAttribute("currentSessionUserEmail", user.getEmail());
response.sendRedirect("WelcomeServlet");

}else
response.sendRedirect("LoginFailure.html");
} catch (Throwable exc)
{
System.out.println(exc);
}

}

}

欢迎 Servlet:

package logon;

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

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

@WebServlet("/WelcomeServlet")
public class WelcomeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

public WelcomeServlet() {
super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.print("<html>"+"<head>"+"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">");
out.print("<title>Welcome</title>");
out.print("</head>"+"<body>");
out.print("Welcome to the welcome page!!!");
out.print("</body>"+"</html>");

}
}

最佳答案

您无法使用 POST 进行重定向,只能使用 GET。由于您只是在 WelcomeServlet 中显示 HTML,因此请将代码从 doPost 移动到 doGet,或者使一个调用另一个,这只会使它们都执行相同的操作。

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
doPost(request, response);
}

此外,使用 JSP 比在 servlet 中out.print 一堆 HTML 更好。请参阅info page for servlets .

另外,显然您的欢迎页面需要从 session 中读取属性 currentSessionUser 并确保其不null 以查看用户是否真正登录。否则,如果用户知道欢迎页面的地址,他们就可以绕过您现在拥有的登录检查。

关于java - 从 Java 代码调用 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23436973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com