如何将 JSP 的提交按钮映射到 servlet?
How to map submit button of a JSP to a servlet to?
我对 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 class 的样子。
@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 class 中的 JSP 下拉值,并根据收到的值将字符串传递给方法 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 服务器的方式。
当我 运行 代码时,我看到页面正在按预期生成 jsp。
我不明白的是如何使用 onclick 配置 submit
以便我单击提交和支持触发器中的 java 程序。我编写了 java 代码只是为了通过从方法 process
获取输入来从数据库中读取值。这 运行 很好,我被要求从 JSP 获取输入并将结果显示回 JSP。
当我点击提交按钮时,我在控制台输出中看不到任何进展。我想我没有正确映射它。
大多数在线链接都包含 JSP 和 JAVA,这更加令人困惑。
谁能告诉我如何通过单击 submit
按钮
来触发该程序
由于您正在使用 @WebServlet
,因此不需要在 web.xml
中进行映射。只需在 JSP 的正文中添加以下行:
<form action="getdata.do" method="post">
看看你的JSP文件,注意你的头部和body标签。我认为你在其他 body 中使用 body 并在 body 中关闭 head 标签是错误的。
其他情况可能比通过单击提交按钮发送表单更重要,你应该把它放在标签表单中,像这样。
<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>
我对 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 class 的样子。
@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 class 中的 JSP 下拉值,并根据收到的值将字符串传递给方法 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 服务器的方式。
当我 运行 代码时,我看到页面正在按预期生成 jsp。
我不明白的是如何使用 onclick 配置 submit
以便我单击提交和支持触发器中的 java 程序。我编写了 java 代码只是为了通过从方法 process
获取输入来从数据库中读取值。这 运行 很好,我被要求从 JSP 获取输入并将结果显示回 JSP。
当我点击提交按钮时,我在控制台输出中看不到任何进展。我想我没有正确映射它。
大多数在线链接都包含 JSP 和 JAVA,这更加令人困惑。
谁能告诉我如何通过单击 submit
按钮
由于您正在使用 @WebServlet
,因此不需要在 web.xml
中进行映射。只需在 JSP 的正文中添加以下行:
<form action="getdata.do" method="post">
看看你的JSP文件,注意你的头部和body标签。我认为你在其他 body 中使用 body 并在 body 中关闭 head 标签是错误的。 其他情况可能比通过单击提交按钮发送表单更重要,你应该把它放在标签表单中,像这样。
<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>