如何将JSP的提交按钮映射到servlet?

问题描述 投票:0回答:2

我对JAVA很老,但是对JSP和Servlet的话题却很陌生。我正在尝试通过将JSP中的值放入servlet来执行一些jdbc操作。为此,我编写了一个带有下拉列表和一个提交按钮的JSP。

Jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<div align='left' >
    <div align='left' >
        <label class="text-white mb-3 lead">Which report do you want to generate?</label>
        <select id="reportSelection" data-style="bg-white rounded-pill px-5 py-3 shadow-sm " class="selectpicker w-100" name="reportselection">
            <option>Outage</option>
            <option>DataQuality</option>
            <option>Latency</option>
        </select>

        </head>
        <body>
        <p id = "demo"> </p>
        <script>
            var d = new Date();
            document.getElementById("demo").innerHTML = d;
        </script>
        </body>
    </div>
</div>
</body>

<hr class="colorgraph">
<div class="row">
    <div class="col-xs-12 col-md-6"><input type="submit" value="Submit" class="btn btn-primary btn-block btn-lg register" tabindex="7"></div>
</div>
</body>
</html>

这就是我的servlet类的样子。

@WebServlet("/getdata.do")
public class DataServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        GetTableColumn gt = new GetTableColumn();
        String issue      = request.getParameter("reportSelection");
        String message;
        try {
            if ("Latency".equals(issue)) {
                message = gt.process("latency");
            } else if ("DataQuality".equals(issue)) {
                message = gt.process("DataQuality");
                System.out.println("Data quality");
            } else if ("Outage".equals(issue)) {
                message = gt.process("Outage");
            }
        } catch (SQLException s) {
            s.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

我正在读取Servlet类中的JSP下拉值,并根据收到的值将String传递给方法process。我在网上查看如何配置web.xml文件,如下所示。http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd“版本=“ 4.0”>

<servlet>
    <servlet-name>DataServlet</servlet-name>
    <display-name>DataServlet</display-name>
    <description>Begin servlet</description>
    <servlet-class>com.servlets.DataServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>DataServlet</servlet-name>
    <url-pattern>/parse</url-pattern>
</servlet-mapping>

我正在尝试在IntelliJ上运行代码,这是我在IntelliJ上配置tomcar服务器的方式。enter image description here

运行代码时,我看到页面正在按预期方式生成jsp。

enter image description here

[我不了解的是如何使用onclick配置submit,以便在支持的触发器中单击Submit和Java程序。我已经编写了Java代码,只是通过从方法process中获取输入来从数据库中读取值。运行得很好,并要求我从JSP接受输入并将结果显示回JSP。单击提交按钮时,控制台输出没有任何进展。我想我没有正确映射它。在线上的大多数链接都将JSP和JAVA包含在一起,这更加令人困惑。任何人都可以让我知道如何通过单击submit按钮来触发程序

java jsp servlets
2个回答
0
投票

由于正在使用@WebServlet,因此不需要在web.xml中进行映射。只需在JSP主体内添加以下行:

<form action="getdata.do" method="post">

1
投票

查看您的JSP文件,请注意您的头部和身体标记。我认为在其他体内放置身体并在体内封闭头部标记是错误的。其他情况可能比单击提交按钮发送表单更重要,您应该将其放在标签表单中,类似这样。

  <form action = "getdata.do" method = "POST">
     First Name: <input type = "text" name = "first_name">
     <br />
     Last Name: <input type = "text" name = "last_name" />
     <input type = "submit" value = "Submit" />
  </form>

© www.soinside.com 2019 - 2024. All rights reserved.