Java 我们可以在servlet中设置多个属性吗

Java 我们可以在servlet中设置多个属性吗,java,servlets,Java,Servlets,通过使用getAttributeNames(),我们可以获得多个属性, 但是我不能使用setAttribute()设置多个属性。我会尽量喜欢这个代码,但它不工作。请检查此项,是否有可能设置多个属性 public class First extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) { try{ Http

通过使用
getAttributeNames()
,我们可以获得多个属性, 但是我不能使用
setAttribute()
设置多个属性。我会尽量喜欢这个代码,但它不工作。请检查此项,是否有可能设置多个属性

public class First extends HttpServlet {
    public void doGet(HttpServletRequest request,HttpServletResponse response) {
        try{
            HttpSession session=request.getSession();
            ServletContext context=request.getServletContext();
            response.setContentType("text/html");
            PrintWriter out=response.getWriter();

            Enumeration en=request.getParameterNames();  
            while(en.hasMoreElements()){
                String str=(String)en.nextElement();

                String param=request.getParameter(str);
                System.out.println("names...."+str+".......values...."+param);

                session.setAttribute("cnr", param);

下面的行将在循环中执行,一个“cnr”不能存储多个值。您必须动态更改名称,以便创建多个会话来存储多个值,或者必须使用任何其他方式,如使用request.setAttribute(如果发送请求时需要值)

希望它能帮助你解决你的问题

session.setAttribute("cnr", param);

问题是,
key
需要是唯一的,因此此行
session.setAttribute(“cnr”,param)
将使用key
cnr
覆盖以前的属性(如果有)

相反,您使用:

session.setAttribute(str, param);//`str` must be unique

您需要动态构造属性名。每次用新值覆盖属性名cnr时

您需要执行以下操作

int i = 0;
while(en.hasMoreElements()){

 session.setAttribute("cnr"+i, param);

 i++;
}

我认为最好的方法是session.setAttribute(param
,param)

您可以存储多个属性,但我在这里看到的是,您正在尝试在会话变量中设置它,您确定需要通过会话,您还可以使用request.setAttribute(attrName,attrValue)设置属性吗但是如果你在下一个请求中需要它。它运行良好。感谢你提供了宝贵的信息。现在运行良好。感谢你提供了宝贵的信息。嗨,Deviledy,你是否应用了我的建议。如果是,请给我一些分数。