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

Par*_*nak 2 forms jsp servlets

我是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>
Run Code Online (Sandbox Code Playgroud)

当该客户端输入信息并提交表单时,表单中的数据被设置为actionservlet,用于检查用户输入的用户名是否已存在于数据库中.如果用户名已经存在,那么它会将数据发送回调用的jsp,并使用"reply"和value作为适当消息的额外属性.如果输入的用户名已存在于数据库中或"用户信息已成功保存!",即"用户已存在" 如果数据保存成功.

我希望做类似的事情每当用户输入已存在的用户名并提交表单时,在这种情况下,发送回jsp的所有数据应该填充到它们各自的文本框中.这样用户只能输入其他用户名并再次提交此表单.如何实现上述任务.

我正在考虑将jsp scriplet添加到每个文本框的value属性中,并检查是否重播该消息.如果回复消息是关于重复的用户名,那么它应该将值赋值给value属性,否则value属性将保持为空.但我认为这个解决方案不是最佳的,因为随着字段数量的增加,这种解决方案将变得有点繁琐.而且我认为由于这个原因,它会产生某种冗余代码.所以我想问专家,还有其他方法可以做同样的事情.我想仅在出现错误或重复消息时填写表单,而不是在成功消息到来时填写表单.

谢谢!

Har*_*hra 5

在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>
Run Code Online (Sandbox Code Playgroud)

在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);
Run Code Online (Sandbox Code Playgroud)

如果表达式语言不起作用,请在此链接上查看更多内容

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