我需要在我的servlet中包含jsp文件的内容。我试过这个。
out_str = "<jsp:include page=\"jsp/agentMenu.jsp\"/>";
这里out_str是一个String类型变量。
但这不起作用。
已编辑:我正在使用帖子请求并获得回复。根据该结果显示内容将有所不同。
private void initCall(String urlParameters) {
String result = "";
try {
//result = sendPostRequest(urlParameters);
result = "0#04#Succesfully Login";
System.out.println(result); //for debugging
String[] out_array = splitResult(result);
if (Integer.parseInt(out_array[0]) == 0) { //success
System.out.println("SUCCESS");
switch (Integer.parseInt(out_array[1])) {
case 1:
out_str = "<html>\n"
+ "<body align=\"center\">\n"
+ "<center><h2>RobiCash</h2>\n"
+ "<p>Invalid PIN<p></center>\n"
+ "<a href=\"jsp/login.jsp\">Exit</a>"
+ "</body>\n"
+ "</html>";
break;
case 2:
out_str = "<html>\n"
+ "<body align=\"center\">\n"
+ "<center><h2>RobiCash</h2>\n"
+ "<p>Invalid Mobile Number<p></center>\n"
+ "<a href=\"jsp/login.jsp\">Exit</a>"
+ "</body>\n"
+ "</html>";
break;
case 3:
out_str = "<html>\n"
+ "<body align=\"center\">\n"
+ "<center><h2>RobiCash</h2>\n"
+ "<p>System Error<p></center>\n"
+ "<a href=\"jsp/login.jsp\">Exit</a>"
+ "</body>\n"
+ "</html>";
break;
case 4: //Agent
System.out.println("AGENT");
//out_str.concat("<%@ include file=\"jsp/agentMenu.jsp\" %>");
out_str = <jsp:include page="jsp/agentMenu.jsp" />;
/*out_str = "<html>\n"
+ "<body align=\"center\">\n"
+ "<h2>RobiCash</h2>\n"
+ "<h3>Agent Main Menu</h3>\n"
+ "<table align=\"center\">\n"
+ "<tr><td>1:</td><td><a href=\"agent_2.htm\">Top-Up/Recharge (P2)</a></td></tr> \n"
+ "<tr><td>2:</td><td><a href=\"jsp/billPayment.jsp\">Bill Payment</a></td></tr>\n"
+ "<tr><td>3:</td><td><a href=\"agent_2.htm\">Bill Check</a></td></tr>\n"
+ "<tr><td>4:</td><td><a href=\"agent_3.htm\">Cash IN (P2)</a></td></tr>\n"
+ "<tr><td>5:</td><td><a href=\"agent_4.htm\">Cash OUT (P2)</a></td></tr>\n"
+ "<tr><td>6:</td><td><a href=\"agent_5.htm\">Customer Registration</a></td></tr>\n"
+ "<tr><td>6:</td><td><a href=\"agent_6.htm\">My Balance</a></td></tr>\n"
+ "<tr><td>7:</td><td><a href=\"agent_7.htm\">More</a></td></tr>\n"
+ "<tr><td>8:</td><td><a href=\"jsp/login.jsp\">Exit</a></td></tr>\n"
+ "</table>\n"
+ "</body>\n"
+ "</html>\n";*/
break;
case 5: //DSR
break;
case 6: //Distributor
break;
case 7: //Master Distributor
break;
default:
break;
}
} else { //fail
}
} catch (Exception e) {
e.printStackTrace();
}
response = ServletActionContext.getResponse();
response.setContentType("text/html");
PrintWriter printWriter = null;
try {
printWriter = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
StringBuffer _bf = new StringBuffer();
_bf.append(out_str);
printWriter.write(_bf.toString());
printWriter.flush();
printWriter.close();
}
任何建议都将不胜感激。
提前谢谢
答案 0 :(得分:1)
RequestDispatcher rd = request.getRequestDispatcher(“jsp/agentMenu.jsp”);
rd.include(request, response);
您可以使用上面的代码。
答案 1 :(得分:1)
问题是因为你正在将字符串写入Servlet响应。您使用PrintWriter.write()
作为响应编写的内容被视为HTML字符串或简单字符串并写入您的响应或浏览器,它不会被浏览器作为JSP执行。
对于语句out_str = "<%@ include file=\"jsp/agentMenu.jsp\" %>"
,您必须解释或执行JSP页面才能使其生效。因此,这被视为简单的HTML字符串,并且无法导致结果JSP内容,这是您想要的输出。
请在当前回复中包含您可以使用RequestDispatcher的任何其他内容,如下所示。
RequestDispatcher rd = request.getRequestDispatcher("jsp/agentMenu.jsp");
rd.include(request, response);
将上述行包含在case:4
条件中。
答案 2 :(得分:0)
out_str = <jsp:include page="jsp/agentMenu.jsp" />;
我认为这应该有效。否则,请再次检查路径或使用Request Dispatcher。
答案 3 :(得分:0)
已编辑:我正在使用帖子请求并获得回复。根据该结果显示内容将有所不同。
您的内容可能会动态变化,使用请求调度程序无任何问题。作为初学者你需要遵循的事情。
service
类分开。request
或session
范围RequestDispatcher
或pageRedirect
访问控制器的视图\ EL
或JSTL
互联网上有simple example here和很多参考资料。
希望这会有所帮助!!