【问题标题】:How to redirect from one JSP page to another fresh page如何从一个 JSP 页面重定向到另一个新页面
【发布时间】:2016-10-25 06:06:45
【问题描述】:

我是 JSP 和 servlet 的新手。我已经编写了简单的 jsp 代码来在单击“注册”按钮时显示注册表单,如下所示。 signup.jsp 看起来像

<!DOCTYPE html>
<html>
<body>
<h2>Welcome </h2>
<img src="abcd.jpg" alt=" " style="width:500px;height:228px;">  
<form name="main"  method="get" action="login.jsp">
        <input type="submit" name="ter" value="SIGN IN" >
 </form>  
</body>
</html>

当我运行这个 signup.jsp 时,会显示图像和“登录”按钮。当我单击此按钮时,登录页面将显示在显示 signup.jsp 的同一页面上。我如何修改 jsp 代码,以便登录详细信息将出现在新页面中,而不是在同一页面上。我的 login.jsp 看起来像

<%@ include file="index.jsp" %>  
<hr/>  

<h3>Login Form</h3>  
<%  
String profile_msg=(String)request.getAttribute("profile_msg");  
if(profile_msg!=null){  
out.print(profile_msg);  
}  
String login_msg=(String)request.getAttribute("login_msg");  
if(login_msg!=null){  
out.print(login_msg);  
}  
 %>  
 <br/>  
<form action="loginprocess.jsp" method="post">  
Email:<input type="text" name="email"/><br/><br/>  
Password:<input type="password" name="pass"/><br/><br/>  
<input type="submit" value="login"/>"  
</form>  

任何人都可以建议我如何使用 JSP 编写它,因为我对 java 脚本或其他技术也完全陌生。

这就是我的 servlet 的样子:

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

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        RequestDispatcher rd = request.getRequestDispatcher("/login.jsp");
        rd.forward(request, response);
    } 
}

当我点击登录时,login.jsp 中提到的字段会显示在同一页面上。我希望它们出现在新页面上。

【问题讨论】:

  • 不确定您想要什么...但首先,如果您可以使用链接转到 login.jsp,因为您根本不使用该表单。据我所知,您使用三个不同的页面(登录、登录、登录过程),所以我不确定我是否理解您的问题...
  • 你可以看看这篇文章,这是一个不用 Java 编写 jsp 的好资源。 stackoverflow.com/questions/3177733/…
  • 如果您“包含”另一个文件,它肯定会显示在同一页面上。删除第一行 "...include file="index.jsp" ..."
  • 谢谢斯特凡。删除包含后,它按预期完美运行。非常感谢。

标签: java html jsp servlets


【解决方案1】:

您需要创建WebServlet 并发布登录请求,然后使用HttpServletRequest,然后当您确定用户信息正确时,将用户转发到必要的页面request.getRequestDispatcher("index.jsp").forward(request, response); 您还需要添加&lt;form action = "login" method = "post"&gt; 这种东西在你的登录表单中,WebServlet 看起来像这样:

@WebServlet("/login")
public class HandleLogin extends HttpServlet {

    public HandleLogin() {
        super();
    }

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

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        ...
        response.sendRedirect("/home.jsp");
    }
} 

【讨论】:

  • 我的 jsp 就像
    这和我的 servlet 有以下代码。
  • @WebServlet("/SignInFunc") @MultipartConfig public class MySignInFunc extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); RequestDispatcher rd=request.getRequestDispatcher("/login.jsp"); rd.forward(请求,响应);当我点击登录时,login.jsp 中提到的字段会显示在同一页面上。我希望它出现在新页面上
  • kala 你可以阅读更多here 关于来自 servlet 的重定向。通常这种response.sendRedirect("/home.jsp") 应该可以工作。
猜你喜欢
  • 2018-03-15
  • 1970-01-01
  • 2013-09-05
  • 2011-08-22
  • 2016-12-14
  • 1970-01-01
  • 1970-01-01
  • 2014-06-24
  • 1970-01-01
相关资源
最近更新 更多