JSP里加return就会无法编译说Unreachable code

eclipse版本:3.3.2
MyEclipse版本:6.6
tomcat版本:5.5.27
已经是最简单的代码了,在JSP里面,只要加上return,就会报错,去掉return就没问题:
比如:

Java code
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String b=request.getParameter("a");
if("1".equals(b)){
System.out.println("1");
return;
}else{
System.out.println("2");
return;
}
%>
<%!
public void method(){

}
%>

运行的时候,报错:
org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 11 in the jsp file: /index.jsp
Unreachable code
8: System.out.println("2");
9: return;
10: }
11: %>
12: <%!
13: public void method(){
14:

————————————————————————————
启动服务器,访问这个jsp就报错。是不是哪里的配置没对?

你这里
if("1".equals(b)){
System.out.println("1");
return;
}else{
System.out.println("2");
return;
}
两个return就把下面所有的代码都变成“不可到达了”,那自然就要报这个异常,

如果你的jsp就只写这么点应该就不会报异常了

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String b=request.getParameter("a");
if("1".equals(b)){
System.out.println("1");
return;
}else{
System.out.println("2");
return;
}
%>

建议在jsp不要写这样代码,
可用jstl
jsp 加入
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

[code="jsp"]

/c:out
/c:when

/c:out
/c:otherwise
/c:choose[/code]

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String b=request.getParameter("a");
if("1".equals(b)){
System.out.println("1");
return;
}else{
System.out.println("2");
return;
}
%>
这样写,我第一次见过啊。学习啦啊。呵呵

你还是没有搞清楚JSP的运行原理,JSP编译后的代码其实就是servlet,只有一个方法service,就是一个输出html标签的作用,输出完标签之后还要flash数据,就自动return 了,所以说JSP是不能return的。

同意rain2005的观点。单从代码来看,此处加return似乎没有意义。