如何创建一个带有验证和邮件表单详细信息的jsp表单给管理员?

时间:2010-01-04 09:14:41

标签: java jsp

我是JSP和相关技术的新手。我需要编写一个带有一些必填字段(包括Captcha)的JSP表单,表单需要验证。成功提交表单后,应该能够通过电子邮件发送到从.txt文件中获取/解析的指定电子邮件地址。

这基本上就是流程。但从技术上讲,我应该如何在JSP / java中完成它?是否有任何好的教程参考我的上述表格要求?我应该如何获取/解析文本文件。最后, 我记得php有一个叫做mail()的函数来做电子邮件,我该怎么办jsp?

非常感谢。

3 个答案:

答案 0 :(得分:3)

JSP只是一种视图技术,它提供了一个模板来编写客户端标记/样式/脚本语言,例如HTML / CSS / JS代码,同时还可以借助taglib等标记库来动态控制页面流。 {3}}并借助JSTL访问后端数据。在你的特殊情况下,一个简单的vanilla HTML表单已经足够了。

<form action="servletname" method="post">
    <input type="text" name="foo"><br>
    <input type="text" name="bar"><br>
    <input type="submit"><br>
</form>

要控制,预处理和/或后处理请求和响应,最好的方法是使用Servlet。基本上只需扩展HttpServlet并实现doGet()预处理数据或doPost()来对数据进行后处理。 servlet可以映射到web.xml中的某个url-pattern。 HTML表单操作网址应与此url-pattern匹配。

如果您想使用相同的表单重新显示提交的页面和任何错误消息,那么您可以使用EL:

<form action="servletname" method="post">
    <input type="text" name="foo" value="${param.foo}" ${not empty messages.succes ? 'disabled' : ''}>
    <span class="error">${messages.foo}</span><br>
    <input type="text" name="bar" value="${param.bar}" ${not empty messages.succes ? 'disabled' : ''}>
    <span class="error">${messages.bar}</span><br>
    <input type="submit">
    <span class="succes">${messages.succes}</span><br>
</form>

${messages}基本上是Map<String, String>,它放在servlet的请求范围内。例如:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Map<String, String> messages = new HashMap<String, String>();
    request.setAttribute("messages", messages);

    String foo = request.getParameter("foo");
    String bar = request.getParameter("bar");

    if (foo == null || foo.trim().isEmpty()) {
        messages.put("foo", "Please enter this field");
    }

    if (bar == null || bar.trim().isEmpty()) {
        messages.put("bar", "Please enter this field");
    }

    if (messages.isEmpty()) {
        YourMailer.send(createTemplate(foo, bar), mailto);
        messages.put("succes", "Mail successfully sent!");
    }

    // At end, forward request to JSP page for display:
    request.getRequestDispatcher("pagename.jsp").forward(request, response);
}

有关JSP / Servlet的更多信息,请参见ELJava EE 5 tutorial part II chapters 4-9。为了更进一步,您可以随时借助构建在Servlet API之上的任何MVC框架来抽象所有样板内容(请求参数检索,值转换/验证,事件处理,导航等),例如{{3 },Marty Hall's Coreservlets.com tutorialsSun JSF,等等。

关于验证码,您可以根据自己的喜好使用任何Apache Struts,并按照说明进行操作。通常它们有自己的servlet /过滤器,它在请求或会话范围中存储密钥/切换/信号,用于确定验证码是否匹配。您可以在servlet中访问其结果。

关于邮件,您可以根据自己的喜好使用任何Spring MVC,但是选择仅限于优秀的JavaMail API以及Apache提供的基于JavaMail API的更方便的API。

答案 1 :(得分:0)

在一个问题中有很多问题;这里有一些可能有用的链接(即我们过去曾使用它们):

Kaptcha:http://code.google.com/p/kaptcha/

JavaMail:http://java.sun.com/products/javamail/

答案 2 :(得分:0)

尝试使用骨架应用AppFuse。它提供从基本到高级的不同框架。这是关于验证码集成的article