我是JSP和相关技术的新手。我需要编写一个带有一些必填字段(包括Captcha)的JSP表单,表单需要验证。成功提交表单后,应该能够通过电子邮件发送到从.txt文件中获取/解析的指定电子邮件地址。
这基本上就是流程。但从技术上讲,我应该如何在JSP / java中完成它?是否有任何好的教程参考我的上述表格要求?我应该如何获取/解析文本文件。最后, 我记得php有一个叫做mail()的函数来做电子邮件,我该怎么办jsp?
非常感谢。
答案 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的更多信息,请参见EL和Java EE 5 tutorial part II chapters 4-9。为了更进一步,您可以随时借助构建在Servlet API之上的任何MVC框架来抽象所有样板内容(请求参数检索,值转换/验证,事件处理,导航等),例如{{3 },Marty Hall's Coreservlets.com tutorials,Sun JSF,等等。
关于验证码,您可以根据自己的喜好使用任何Apache Struts,并按照说明进行操作。通常它们有自己的servlet /过滤器,它在请求或会话范围中存储密钥/切换/信号,用于确定验证码是否匹配。您可以在servlet中访问其结果。
关于邮件,您可以根据自己的喜好使用任何Spring MVC,但是选择仅限于优秀的JavaMail API以及Apache提供的基于JavaMail API的更方便的API。
答案 1 :(得分:0)
在一个问题中有很多问题;这里有一些可能有用的链接(即我们过去曾使用它们):
答案 2 :(得分:0)