【问题标题】:Redirecting to a servlet from a JSP on button click单击按钮时从 JSP 重定向到 servlet
【发布时间】:2015-01-08 17:46:35
【问题描述】:

我正在尝试从 JSP 链接到 servlet 。单击带有 name="conf" 的按钮时,我需要重定向到 servlet "/Initial" 。问题是当我使用type="button" 时没有任何反应,而当我使用type="submit" 时,页面被定向到servlet "/Initial" 并在那里执行操作。无法识别问题。

这是我的代码:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="reg.serv.*"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
</head>
<body>
    <form method="post">
        <center>
            <table border="1" width="30%" cellpadding="3">
                <thead>
                    <tr>
                        <th colspan="2">Register Here</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>Username</td>
                        <td><input type="text" class="" id="username" name="username1" value="" /></td>
                    </tr>
                    <tr>
                        <td>Password</td>
                        <td><input type="password" name="password1" id="password" value="" /></td>
                    </tr>
                    <tr>
                        <td>Confirm Password</td>
                        <td><input type="password" name="confirmpassword1" id="confirmpassword" value="" /></td>
                    </tr>
                    <tr>
                        <td>Mobile Number</td>
                        <td><input type="text" class="" id="mob" name="mob1" value="" /></td>
                    </tr>
                    <tr>
                        <td>Email ID</td>
                        <td><input type="text" class="" id="email" name="email1" value=" " /></td>
                    </tr>
                    <tr>
                        <td>Address</td>
                        <td><textarea id="address" name="address1"></textarea></td>
                    </tr>

                    <tr>
                        <td colspan="2">Already registered <a href="Index.jsp">Login Here</a></td>
                    </tr>
                </tbody>

                <tr>
                    <td><input type="button" value="confirm" name="conf" /></td>
                    <td><input type="reset" value="Reset" /></td>
                    <td><input type="button" value="Cancel" name="Cr" onclick="openPage('Initial.jsp')" /></td>
                </tr>
        </table>
    </form>

    <script type="text/javascript">

        function openPage(pageURL) {
            window.location = pageURL;
        }

    </script>

    <%
        String x = request.getParameter("conf");

        if (x != null && x.equals("confirm")) {
            //response.sendRedirect("/Initial");
            RequestDispatcher dispatcher = request.getRequestDispatcher("/Initial");
            dispatcher.forward(request, response);
        }
    %>

</body>
</html>


请帮我 。任何帮助将不胜感激。谢谢你。

【问题讨论】:

  • 是的..@informatik 谢谢...我尝试使用按钮的onclick事件重定向...但只能检索jsp页面而不是servlet
  • 似乎您正在尝试以 PHP 的方式进行操作:混合演示文稿和代码。您的 servlet 代码不应包含在 JSP 文件中。在 JSP 文件中使用 scriptlet 的还有highly discouraged。您要实现的目标似乎非常简单,我怀疑您只是在 Servlets/JSP 世界中不是很有经验。阅读有关 Servlets 的 Stack Overflow 信息页面,并查看简单的 servlet 使用示例。
  • 这里也是最受欢迎的教程之一:Beginning & Intermediate Servlet & JSP Tutorials。希望这些对您有所帮助,因为无论如何您必须自己学习这些简单的东西。不要害怕——没那么可怕))
  • 感谢 @informatik 提供的教程是 jsp 的新手,servlet 和 webconcepts 等在这方面没有太多经验。本教程有助于清除概念。再次感谢您

标签: java javascript jsp servlets


【解决方案1】:

你必须写

<form action=/your_servlet_page_name>

你必须使用

<input type="submit" value="confirm" name="conf"/>

您还必须将您的 servlet 页面映射到 web.xml 文件中,例如

<servlet-mapping>
    <servlet-name>CheckLogin</servlet-name>
    <url-pattern>/CheckLogin</url-pattern>
</servlet-mapping>

【讨论】:

  • 试过@Ram。 Initial/InitialGets error Caused by: java.lang.IllegalArgumentException: The servlet named [Initial] 和 [reg.serv.Initial] 都映射到不允许的 url 模式 [/Initial]...
  • 我使用 Java EE 6 / Servlet 3.0 。审查了此页面stackoverflow.com/tags/servlets/info 并发现不需要在 web.xml 中进行映射。但如果没有它,我无法直接访问我的 servlet。
  • @ReenuRahman 欢迎您。投票给我的答案,以便对所有其他人有所帮助。
【解决方案2】:

<form action = "servlet-name" method = "method in the servlet">
<input type ="submit" value = "val">
</form>

这是一种简单的方法。如果您使用的是我认为 7 及更高版本的最新 jre,则无需在 web.xml 文件中声明 servlet。 @WebServlet("/servlet-url") 可以解决问题。

【讨论】:

    【解决方案3】:

    如果你想使用 type="button" 而不是 type="submit"。您可以在单击按钮时使用 javascript 功能。喜欢

    <script>
    function doSubmit(){
    var actionURL ="MENTION URL YOU WANT TO REDIRECT";
    // perform your operations
    
    myForm.submit(actionURL); OR
    myForm.submit();
    }
    
    </script>
    <form name="myForm">
        <input type="button" name="conf" value="conf" obclick="doSubmit();">
    </form> 
    

    希望对你有所帮助。

    【讨论】:

      【解决方案4】:

      尝试仅更改脚本

      <script type="text/javascript">
       function openPage(pageURL)
       {
       window.location.href = pageURL;
       }
      </script>
      

      【讨论】:

        【解决方案5】:
        function openPage(pageURL) {
                    window.location = pageURL;
                }
        

        在上面的代码 sn-p 中,pageURL 必须是一个绝对 URL,在处理 servlet 的情况下可能会有所不同。所以可以使用下面的代替这个

        location.href = (location.href).substr(0, (location.href).lastIndexOf('xyz.jsp'))+"/abc";
        

        这里的“abc”是我们必须将“xyz.jsp”重定向到的servlet。如果有很多按钮,这甚至可以工作。可以编写相应的函数来重定向到相应的servlet。 它也适用于输入类型为“按钮”或“提交”的情况。

        【讨论】:

          【解决方案6】:

          我不明白你想要做什么,但重定向正在使用: response.sendRedirect(request.getContextPath());

          response.sendRedirect(String url);
          

          【讨论】:

          • 需要将表单中的值传递给servlet“/Initial”...需要使用“按钮”而不是“提交”来传输表单值。我使用了 onclick,但它仅适用于重定向到 jsp 而不是重定向到 servlet
          • 好的,尝试编写一个外部 Servlet 类并使用
          • 我试过 @lolio 仍然没有任何反应,当使用按钮时,当使用提交时发生错误类型状态报告消息/reg1/jsp/初始描述请求的资源不可用。
          • 您是否从 type="button" 更改为 type="submit" ?您的 servlet 是否也映射到 web.xml 中? Ram 已经为你准备好了答案
          • 我试过了。获取错误....原因:java.lang.IllegalArgumentException:名为 [Initial] 和 [reg.serv.Initial] 的 servlet 都映射到不允许的 url 模式 [/Initial]
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-17
          • 2014-07-23
          • 2018-10-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多