我是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属性将保持为空。但我认为这种解决方案不是最佳的 因为随着字段数量的增加,这种解决方案将变得有点乏味。而且我认为由于这个原因,它会产生一些 一种冗余代码。 所以我想问专家,还有其他方法可以做同样的事情。我只想在错误或重复消息出现时填写表单 当成功的消息来临时。
谢谢!
答案 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的更多内容。