繁体   English   中英

使用PrintWriter对象将List对象从Java Servlet发送到JSP?

[英]Send a List object from a Java Servlet to JSP using the PrintWriter object?

在继续之前,我意识到几年前有一个类似的问题( 将列表从Servlet传递到JSP )。 我意识到可以将要传递的列表设置为会话属性,但是出于好奇,我想知道是否可以使用PrintWriter对象将数据发送回JSP页面。

JSP

<script type="text/javascript">
        function getEngineSchemes(engineID) {
            $.get('SchemeTypeServlet', {
                action: "getSchemes",
                engineID: engineID
            },
            function(data, status){

            }).fail(function() {
                alert("Error obtaining schemes for engine with engine id: " + engineID);
            });
        }
    </script>
</body> 

Servlet的

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //Set type of response
    response.setContentType("text/html");
    response.setCharacterEncoding("UTF-8");
    //get parameters that may be passed from client to determine which methods should be called
    String action = request.getParameter("action");

    if(action.equalsIgnoreCase("getSchemesForEngine")) { 
        Integer engineID = Integer.parseInt(request.getParameter("engineID"));
        List<String> schemeNames = getSchemeNamesForEngine(engineID);

        response.getWriter(). //insert code to send object back to JSP
        response.getWriter().flush();
    }       

选项

我认为可能合理的一种解决方案是创建一个JSONObject并按以下方式进行操作:

response.setContentType("application/json");
JSONObject json = new JSONObject();
     for(String name : schemeNames) {
            json.put(engineID, name);
         }
    response.getWriter().write(json.toJSONString());
    response.getWriter().flush();

我还没有测试上面的代码,但是我只是想知道这似乎是解决我的问题的最佳方法,还是让我变得过于复杂? 对于我的问题,也许有一个简单得多的解决方案。

我认为您的想法混乱了。 首先,您无法从servlet向jsp发送文本或任何类型的数据。 正确的方法是使用会话并使用response.sendRedirectRequestDispatcher.forward方法。 但这将忽略对Servlet的Writer对象的任何调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM