Java 将servlet值传递给jsp页面

Java 将servlet值传递给jsp页面,java,jsp,servlets,Java,Jsp,Servlets,我正在尝试根据从另一个下拉列表中选择的上一个值将值添加到下拉列表中。我能够从servlet调用java类,并将值返回到servlet,但不会传递到jsp页面 jsp页面部分(index.jsp) 在servlet中 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String region

我正在尝试根据从另一个下拉列表中选择的上一个值将值添加到下拉列表中。我能够从servlet调用java类,并将值返回到servlet,但不会传递到jsp页面

jsp页面部分(index.jsp)

在servlet中

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String region = request.getParameter("region");
        String secretKey = request.getParameter("secret_key");
        String accessKey = request.getParameter("access_key");




            List<String> vpcs = RunEc2Command.getVPCForUSer(AWS_ACCESS_KEY, AWS_SECRET_KEY, region);

            if(vpcs != null && vpcs.size() > 0) {
                                request.setAttribute("vpclist", vpcs);
            }

        request.getRequestDispatcher("/index.jsp").forward(request, response);
    }
}
protectedvoiddopost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
字符串region=request.getParameter(“region”);
String secretKey=request.getParameter(“secret_key”);
字符串accessKey=request.getParameter(“access_key”);
List vpcs=RunEc2Command.getVPCForUSer(AWS\u访问密钥、AWS\u机密密钥、区域);
if(vpcs!=null&&vpcs.size()>0){
request.setAttribute(“vpclist”,vpcs);
}
request.getRequestDispatcher(“/index.jsp”).forward(请求,响应);
}
}
在同一个index.jsp页面中,我试图在index.jsp本身的下拉框中显示列表值

          <select id="vpc" name="vpc" class="form-control" placeholder="Choose VPC"  >
                                        <option value="" default selected>Select VPC</option>

                                            <c:forEach items="${vpclist}" var="vpcs">    
                                                 <option>
                                                   ${vpcs}
                                                 </option>
                                            </c:forEach> 
                                    </select> 

选择专有网络
${vpcs}

从区域下拉框中选择值后,我需要在drop dron框中获取VPC的值。提前感谢您的帮助。

目前,servlet中的工作流适用于同步请求,这要求servlet在HTTP响应中返回整个HTML,以便浏览器呈现。然而,在我看来,您的目的不是为了获得VPC列表而查询servlet,而是尝试使用AJAX异步设置查询


因此,我的建议是让servlet以某种格式(例如JSON)返回VPC列表。在
success
回调中,您应该修改DOM以插入收到的列表

JSP中有一个尾随的
-->
。AJAX回调对它收到的响应没有任何作用。它必须将现有的选择框替换为响应中接收到的选择框。我已经删除了尾随框。它仍然不起作用。准确定义“不起作用”。你期望会发生什么,然后会发生什么?@JB Nizet。我将从JSP页面的下拉框中选择一个值,在选择该值时,我必须根据先前选择的值在另一个下拉框中获取值。问题是我无法填充下拉框中的值。您是否阅读了我之前的评论:“AJAX回调对它接收到的响应没有任何作用。它必须用响应中接收到的响应替换现有的选择框。”。您是否至少验证了AJAX请求已发送、服务器已正确处理并返回了相应的HTML?使用console.log()。使用JavaScript调试器。使用浏览器开发工具的“网络”选项卡查看发出的请求和收到的响应。我不知道JSON。你能告诉我怎么做吗?你需要构造列表的JSON表示(使用标准的JEE JSON API),并使用
response
对象将此类JSON发送回浏览器。如何访问jsp页面中的JSON数组并放入下拉框我担心你会混淆服务器端和客户端计算。AJAX请求是在客户端发出的,必须在客户端处理,这意味着您应该在jsp页面的
success
回调中处理从servlet返回的JSON。如果您能够详细解释这一点,这将非常有帮助。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String region = request.getParameter("region");
        String secretKey = request.getParameter("secret_key");
        String accessKey = request.getParameter("access_key");




            List<String> vpcs = RunEc2Command.getVPCForUSer(AWS_ACCESS_KEY, AWS_SECRET_KEY, region);

            if(vpcs != null && vpcs.size() > 0) {
                                request.setAttribute("vpclist", vpcs);
            }

        request.getRequestDispatcher("/index.jsp").forward(request, response);
    }
}
          <select id="vpc" name="vpc" class="form-control" placeholder="Choose VPC"  >
                                        <option value="" default selected>Select VPC</option>

                                            <c:forEach items="${vpclist}" var="vpcs">    
                                                 <option>
                                                   ${vpcs}
                                                 </option>
                                            </c:forEach> 
                                    </select>