在继续之前,我意识到几年前有一个类似的问题(Passing a List from Servlet to 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();
我还没有测试过上面的代码,但我只是想知道这是否是我问题的最佳解决方案,或者我是否过于复杂?也许对我的问题有一个更简单的解决方案。
答案 0 :(得分:0)
我认为你脑子里的东西搞砸了。首先,您不能将文本或任何类型的数据从servlet发送到jsp。正确的方法是使用会话并使用response.sendRedirect或RequestDispatcher.forward方法。但是这将忽略之前对servlet的Writer对象所做的任何调用。