我必须使用表单从servlet中获取信息,然后通过ServletContext的属性方法将信息(字符串)提供给其他servlet?我丝毫不明白这一点,并且非常欣赏一步一步的细分。这是我的代码。一个servlet采用整数和浮点数,另一个采用名称和姓氏。
First Servlet
package myServlets;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
public class FirstServlet extends GenericServlet {
public String firstName;
public String surname;
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException{
PrintWriter out = res.getWriter();
out.println("<HTML><HEAD><TITLE>");
out.println("ServletResponse");
out.println("</TITLE></HEAD>");
out.println("<BODY>");
out.println("<H1>First name: " + req.getServletContext().getAttribute("firstName") + "</H1><br>");
out.println("<H1>Surname: " + req.getServletContext().getAttribute("surname") + "</H1><br>");
out.println("<H1>Integer: " + req.getServletContext().getAttribute("integer") + "</H1><br>");
out.println("<H1>Floating Point: " + req.getServletContext().getAttribute("float") + "</H1><br>");
out.println("<br><br><br><a href=\"index.html\">Back to the forms! </a>");
out.println("</BODY>");
out.println("</HTML>");
}
}
我的第二个小礼物
package myServlets;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
public class SecondServlet extends GenericServlet {
public String noInteger;
public String noFloat;
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException{
PrintWriter out = res.getWriter();
out.println("<HTML><HEAD><TITLE>");
out.println("ServletResponse");
out.println("</TITLE></HEAD>");
out.println("<BODY>");
out.println("<H1>First name: " + req.getServletContext().getAttribute("firstName") + "</H1><br>");
out.println("<H1>Surname: " + req.getServletContext().getAttribute("surname") + "</H1><br>");
out.println("<H1>Integer: " + req.getServletContext().getAttribute("integer") + "</H1><br>");
out.println("<H1>Floating Point: " + req.getServletContext().getAttribute("float") + "</H1><br>");
out.println("<br><br><br><a href=\"index.html\">Back to the forms! </a>");
out.println("</BODY>");
out.println("</HTML>");
}
}
我的Index.html文件
<html>
<head>
<title>Lab One</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
First Name: <input type="text" name="firstName">
<br>
Surname: <input type="text" name="surname">
<br>
<form action="FirstServlet" method="POST">
<input type ="submit" name="Submit"> </form>
<br>
Integer: <input type="text" name="integer">
<br>
Float: <input type="text" name="float">
<br>
<form action="SecondServlet" method="POST">
<input type ="submit" name="Submit2"> </form>
</body>
</html>
答案 0 :(得分:1)
为什么不将其添加为会话属性
HttpSession session = request.getSession();
String firstName= (String)request.getAttribute("firstName");
session.setAttribute("firstName", firstName);
然后另一个servlet / jsp可以将值读取为
session.getAttribute ("firstName");
为简单起见,您还可以将整个用户类(??)设置为会话属性
编辑,因为您正在使用ServletRequest而不是HttpServletRequest尝试使用以下方法获取servletContext
http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getServletContext()