首先,我想将参数从html发送到Servlet并且它可以工作。 然后我从参数创建一个数组,我想将该数组发送到另一个servlet。然后将其打印在Servlet2中。 这是我的代码:
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//System.out.println("XML servlet called!");
response.setContentType("text/html");
response.getWriter();
//read value from selection
String videoname = request.getParameter("video");
String videoformat = request.getParameter("format");
String videoquality = request.getParameter("quality");
//System.out.println("Name" + videoname);
//System.out.println("format" + videoformat);
//System.out.println("quality" + videoquality);
String [] chain1 = {"v1","f1","q1"};
String [] chain2 = {"v1","f1","q2"};
if (videoname.equals(chain1[0]) && (videoformat.equals(chain1[1])) && (videoquality.equals(chain1[2])) ){
request.setAttribute("chain",chain1);
}
}else if (videoname.equals(chain2[0]) && (videoformat.equals(chain2[1])) && (videoquality.equals(chain2[2])) ){
request.setAttribute("chain",chain2);}
RequestDispatcher dispatch = request.getRequestDispatcher("/Servlet2");
dispatch.forward(request, response);
在Second Servlet中,我的代码是:
String value = (String)request.getAttribute("chain");
System.out.println("Chain is" + value);
我的问题是这不起作用。我有2个问题。 1)如何发送attribiute 2)是否可以在同一个mashin中看到servlet2中的结果?我只是在同一个项目中创建另一个名为Servlet2的类,并在web.xml中定义名称和路径。那是对的吗?
答案 0 :(得分:0)
我认为你遇到了问题,因为你正在修改响应,这应该由Servlet2而不是Servlet1来完成。从代码中删除以下行
response.setContentType("text/html");
response.getWriter();
,因为您没有在Servlet1中处理响应。这应该可以工作,如果没有,修改你的问题,并包括你尝试编译/运行它时得到的错误的完整堆栈跟踪。
答案 1 :(得分:0)
创建Servlet以处理客户端发送的请求。我假设你的servlet2类做了这样的服务。如果在servlet中声明public static
变量,则任何类都可以访问它。因此,您不需要从servlet1将数据发送到客户端,并让客户端将它们发送回servlet2。如果Web服务器中的所有servlet都有公共变量,则可以使用静态变量。如果servlet2的唯一目的是打印您的数据,它不应该是一个servlet,只是一个java类就可以了。
请记住,只会为所有请求创建一个servlet实例。因此,请勿使用实例变量来存储客户端特定数据。尝试使用会话。
This可以帮到你。