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

时间:2012-08-27 08:29:32

标签: jsp servlets html-form

我是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添加到每个文本框的value属性中,并检查是否重播此消息。如果回复消息是关于 重复用户名然后它应该将值赋值给value属性,否则value属性将保持为空。但我认为这种解决方案不是最佳的 因为随着字段数量的增加,这种解决方案将变得有点乏味。而且我认为由于这个原因,它会产生一些 一种冗余代码。     所以我想问专家,还有其他方法可以做同样的事情。我只想在错误或重复消息出现时填写表单 当成功的消息来临时。

谢谢!

1 个答案:

答案 0 :(得分: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>

在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);

如果表达式语言不起作用,请查看此link的更多内容。

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