![](/img/trans.png)
[英]In java servlets, are ServletContext attributes available to views automatically?
[英]How to make a servlet's received attributes available to other servlets via the ServletContext's attribute mechanism?
我必须使用表单从servlet中获取信息,然后通过ServletContext的attribute方法使信息(字符串)可用于其他servlet? 我丝毫不了解这一点,并且非常感谢您逐步进行分解。 这是我的代码。 一个servlet接受一个整数和一个浮点数,另一个接受一个名字和姓氏。
第一个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>");
}
}
我的第二个Servlet
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>
为什么不将其添加为会话属性
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.