当前位置: 首页 > 知识库问答 >
问题:

如何用来自servlet的调度数据填充jsp中的html表单?

漆雕伟志
2023-03-14

我不熟悉JSP和Servlet。在接下来的任务中,我需要你的建议。我有一个jsp页面,它有一个html表单,可以接受来自用户的一些信息。

JSP页面info.jsp

<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<%
    if(request.getAttribute("reply")!=null){
        out.println(request.getAttribute("reply"));
    }
%>

<form action="actionservlet" method="post" name="myform">
user Name:<input name="username" type="text" size="10" /><br />
First Name:<input name="username" type="text" size="10" /><br />
Last Name:<input name="username" type="text" size="10" /><br />
Email id:<input name="username" type="text" size="10" /><br />
<input name="submit" type="submit" value="Submit" />
<input name="Reset" type="reset" value="Reset" />

</form>
</body>
</html>

当此客户端输入信息并提交表单时,表单中的数据被设置为actionservlet,检查用户输入的用户名是否已经存在于数据库中。如果用户名已经存在,则它会将数据发送回调用jsp,并带有一个额外的属性“回复”和值作为适当的消息。即,如果输入的用户名已经存在于数据库中,则“用户已经存在”或“用户信息保存成功!”如果数据保存成功。

我想这样做,只要用户输入已经存在的用户名并提交表单,那么在这种情况下,发送回jsp的所有数据都应该填充到各自的文本框中。因此,用户只能输入其他用户名并再次提交此表单。如何完成上述任务。

我正在考虑将jsp scriplet添加到每个textbox的value属性中,并检查是否重播了此消息。如果回复消息涉及重复用户名,则应将值分配给value属性,否则value属性将保持为空。但我认为这个解决方案并不是最优的,因为随着字段数量的增加,这个解决方案会变得有点乏味。而且我认为由于这个原因,它会产生一些冗余代码。所以我想问专家,还有其他方法可以做到这一点吗。我只想在出现错误或重复消息时填写表单,而不是在出现成功消息时填写表单。

非常感谢。

共有1个答案

璩华辉
2023-03-14

在JSP中使用Java代码是一种糟糕的做法,并且Scriptlet已经过时,您应该避免使用它。

JSP 2.0表达式语言是解决方案。下载jstl.jar并将其添加到您的类路径中。

JSP

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<div><b>${reply}</b></div>
<form action="actionservlet" method="post" name="myform">
user Name:<input name="username" type="text" size="10" /><br />
First Name:<input name="firstName" type="text" size="10" value=${firstName}/><br />
Last Name:<input name="lastName" type="text" size="10" value=${lastName}/><br />
Email id:<input name="email" type="text" size="10" value=${email}/><br />
<input name="submit" type="submit" value="Submit" />
<input name="Reset" type="reset" value="Reset" />
</form>

在Servlet中获取参数。执行您想要执行的操作/任务。在Servlet中设置请求属性。将页面转发到JSP。

Servlet:

String firstName = request.getParameter("firstName");
// and so on get other form parameters..
// perform your opeations

request.setAttribute("reply", "User Already Exists"); // Just an example
request.setAttribute("firstName", firstName);
// set other form parameters..

RequestDispatcher dispatcher =
request.getRequestDispatcher("/el/scoped-vars.jsp");
dispatcher.forward(request, response);

如果表达式语言不起作用,请查看此链接的更多信息。

阅读基本表达语言:http://pdf.coreservlets.com/JSP-EL.pdf

 类似资料:
  • 问题内容: 作为HTML表单的一部分,我要创建一个下拉列表,其中将列出数据库中的所有用户名。 我以为以下代码可以解决问题,但下拉列表为空-有人可以帮我解决我做错的事情吗?谢谢。 问题答案: 我的猜测是您有问题,因为在循环之后您没有关闭选择标签。可以做到这一点吗?

  • 问题内容: 我只是在学习Elasticsearch和Javascript,由于易用性,我刚开始使用Google图表。 我正在尝试根据Elasticsearch查询呈现Google图表。由于数据格式不正确,该图表无法呈现。这是我的无效代码: 我遇到的问题是从查询返回的数据不是“字段”,而是整个查询摘要。 有没有办法只保留字段就返回此查询?也许有一种方法可以查询并格式化PHP文件中的数据,然后可以在图

  • 我是JSP、servlet和JavaBean领域的初学者。我正在开发一个JSP文件,其中包含一个HTML表单,用于创建用户组。我正在尝试使用MVC开发这个表单。 此表单包含2个文本框和2个选择框。从这些选择框中,您可以选择多个值—一个包含用户的选择框。每当第一次调用JSP页面时,这个用户选择框就会被从数据库中获取的用户名填充。 每当表单提交时,它都会调用表单动作方法中提到的servlet。这个se

  • 我有一个基于类的视图(IndexView at views.py),它显示了一个包含数据库中存储的所有数据的表。此视图在索引中呈现。html使用获取所有数据。还没有问题。 对我来说,困难的部分是尝试使用表单来完成它,以便能够修改和保存金额列。我对POST部分没有问题,我使用AJAX来保存新值。我遇到的问题是从数据库中获取初始值以填充Django表单(forms.py) 我尝试在表单字段的定义中使用

  • 我正试图从oracle数据库中获取图像。流程是:JSP(读取photo_id)->jsp->,它从HTML图像标记的src属性内部调用Servlet。 getphoto.jsp img标记的src属性中的getPic是servlet。 getPic.java image.java: 表定义: 但是在点击获取照片后,我只是得到了照片id而不是图像。在这里,我不确定servlet是否被解雇。 请帮忙。

  • 假设我有一个整数数组,如和一个简单的字符串,如。我如何循环通过数组和填充每一个值。假设是这样的: 输出: 到目前为止,我已经尝试了以下内容: 但是,它在print语句中给出了。解决这个问题最好的方法是什么?