在继续之前,我意识到几年前有一个类似的问题( Passing a List from Servlet to JSP )。我意识到可以设置我尝试作为 session 属性传递的列表,但出于好奇,我想知道是否可以使用 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。执行此操作的正确方法是使用 session 并使用 response.sendRedirect或RequestDispatcher.forward方法。但这将忽略之前对 servlet 的 Writer 对象进行的任何调用。
关于java - 使用 PrintWriter 对象将 List 对象从 Java Servlet 发送到 JSP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34919400/