一、需要中止jsp,返回结果的时候,需要加上return
1、原因:
使用response.sendRedirect和forward,或者response.setStatus(xxx)返回错误码给前端,想要中止jsp的时候,必须使用return。
因为jsp本质也是一个servlet,jsp 是先被编译成.java 文件,然后被编译成.class 文件,最终由java 虚拟机执行.class 文件,并输出内容返回给页面。到编译生成的work 目录下,打开一个编译后的.java 文件查看
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
try {
xxxx
if (!request.getParameter("token").isEmpty()) {
response.sendRedirect("www.baidu.com");
return; //如果这里不填return,则会继续执行下面的代码,return相当于method里面return返回函数_jspService调用的位置,结束当前的jsp操作
}
response.setStatus(200);
response.setCharacterEncoding("utf-8");
PrintWriter outPrint = response.getWriter();
response.setContentType("application/json; charset=utf-8");
outPrint.print("{\"bodyToken\":\"" + token + "\"}");
outPrint.flush();
outPrint.close();
out.write("\r\n");
out.write("</html>\r\n");
} catch (java.lang.Throwable t) {
xxx
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}