2

我是 JSP 和 Servlet 的新手。我在以下任务中需要您的建议。我有一个 jsp 页面,它有一个 html 表单,它接受用户的一些信息。

JSP 页面信息.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 属性将保持为空。但我认为这个解决方案不是最优的,因为随着字段数量的增加,这个解决方案会变得有点乏味。而且我认为由于这个原因,它会产生某种冗余代码。所以我想问问专家,有没有其他方法可以做到这一点。我只想在错误或重复消息出现时填写表格,而不是在成功消息出现时填写。

谢谢你!

4

1 回答 1

7

在 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。

小服务程序

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

于 2012-08-27T09:57:45.490 回答