Я имею форму HTML, которая запрашивает данные пользователя для автобиографии:Не удается получить переменный из Java Servlet
<form action = "processdetails.html" method = "post">
<table>
<tr><td style = "font-weight: bold">Personal Details:</td></tr>
<tr>
<td>Name:</td>
<td><input type = "text" name = "applicant"/></td>
</tr>
<tr>
<td>Mobile No.:</td>
<td><input type = "text" name = "mobile"/></td>
</tr>
<tr>
<td>E-mail:</td>
<td><input type = "text" name = "email"/></td>
</tr>
</table>
<br/>
<input style = "width: 150px" type = "submit" value = "Generate CV"/>
</form>
После нажатия кнопки «Сформировать CV» кнопку, он идет к сервлету, который отображает введенные данные:
@WebServlet("/processdetails.html")
public class ProcessDetailsServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
String applicantName = "";
String mobileNo = "";
String emailAdd = "";
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
if(request.getParameter("applicant") != null) {
applicantName = request.getParameter("applicant");
}
if(request.getParameter("mobile") != null) {
mobileNo = request.getParameter("mobile");
}
if(request.getParameter("email") != null) {
emailAdd = request.getParameter("email");
}
PrintWriter out = response.getWriter();
// other necessary html/css here
out.print("<form action = 'generatepdf.html' method = 'post'>");
out.print("<table>");
out.print("<tr><td style = 'font-weight: bold'>Personal Details:</td></tr>");
out.print("<tr>");
out.print("<td>Name:</td>");
out.print("<td>" + applicantName + "</td>");
out.print("</tr>");
out.print("<tr>");
out.print("<td>Mobile No.:</td>");
out.print("<td>" + mobileNo + "</td>");
out.print("</tr>");
out.print("<tr>");
out.print("<td>E-mail:</td>");
out.print("<td>" + emailAdd + "</td>");
out.print("</tr>");
out.print("</table>");
out.print("<br/>");
out.print("<input style = 'width: 150px' type = 'submit' value = 'Generate PDF'/>");
out.print("</form>");
// other html
out.close();
}
}
После нажатия на кнопку "Создать PDF", он переходит к другой сервлет:
@WebServlet("/generatepdf.html")
public class GeneratePdfServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
generatePdf();
}
protected void generatePdf() {
System.out.println("This is generatePdf().");
ProcessDetailsServlet pds = new ProcessDetailsServlet();
System.out.println("Name: " + pds.applicantName);
}
}
для проверьте, получает ли generatePdf()
данные, я распечатал его на консоли.
Однако applicantName
не печатается:
Почему applicantName
не обращались?
вы столкнулись с проблемой синхронизации потоков –