tomcat 500 错误 大家看看这是什么错误,我新手,编译老是出现异常

liuxiao821 2012-05-27 08:24:10
org.apache.jasper.JasperException: java.lang.IllegalStateException: Cannot forward after response has been committed
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:502)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:424)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause

java.lang.IllegalStateException: Cannot forward after response has been committed
org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:709)
org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:680)
org.apache.jsp.check_jsp._jspService(check_jsp.java:164)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
...全文
145 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxiao821 2012-05-27
  • 打赏
  • 举报
回复
代码如下:
<%
String st1= request.getParameter("text1");
String st2= request.getParameter("text2");
String st3=request.getParameter("radio");
boolean flag = false ;
%>
<%

if("3".equals(st3))
{
if("admin".equals(st1)&& "admin".equals(st2))
{ response.sendRedirect("manager.jsp"); }
else
{ response.sendRedirect("index.jsp");}
}
%>
<%
final String DBDRIVER = "com.mysql.jdbc.Driver" ;
// 数据库连接地址
final String DBURL = "jdbc:mysql://localhost:3306/mydata" ;
// 数据库用户名
final String DBUSER = "root" ;
// 数据库连接密码
final String DBPASSWORD = "123456" ;
// 声明一个数据库连接对象
Connection conn = null ;
// 声明一个数据库操作对象
PreparedStatement pstmt = null ;
// 声明一个结果集对象
ResultSet rs = null ;
// 声明一个SQL变量,用于保存SQL语句
String sql = null ;
%>
<%
// 进行数据库操作
try
{
// 编写SQL语句
sql = "SELECT sid FROM student WHERE sid=? and spassword=?" ;
// 加载驱动程序
Class.forName(DBDRIVER) ;
// 连接数据库
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
// 实例化数据库操作对象
pstmt = conn.prepareStatement(sql) ;
// 设置pstmt的内容
pstmt.setString(1,st1) ;
pstmt.setString(2,st2) ;
// 查询记录
rs = pstmt.executeQuery() ;
// 判断是否有记录
if(rs.next())
{
// 如果有记录,则执行此段代码
// 用户是合法的,可以登陆
flag = true ;
}
// 依次关闭
rs.close() ;
pstmt.close() ;
conn.close() ;
}
catch(Exception e)
{}

%>
<%
// 判断用户名及密码
if(flag)
{
// 合法用户
%>
<jsp:forward page="student.jsp">
<jsp:param name="id" value="st1"/>
</jsp:forward>
<%
}
else
{
// 非法用户
%>
<jsp:forward page="ex.jsp"/>
<%
}
%>
古布 2012-05-27
  • 打赏
  • 举报
回复

在check.jsp里面
request.getRequestDispatcher("XXX").forward(request, response);

导致两次分发。从而产生错误。

修改方法是:使这两个request.getRequestDispatcher;不会同时执行。

一般在其后面加上return;

梦断酒醒 2012-05-27
  • 打赏
  • 举报
回复
把check.jsp代码贴出来,这样大家才能帮你。
nanjg 2012-05-27
  • 打赏
  • 举报
回复
建议标准业务逻辑 上struts这样的框架
古布 2012-05-27
  • 打赏
  • 举报
回复
if("admin".equals(st1)&& "admin".equals(st2))
{ response.sendRedirect("manager.jsp"); }
else
{ response.sendRedirect("index.jsp");}
}
%>

========================
上面语句后面又有, <jsp:forward page="。所以会报错。后面的代码放到另一Jsp文件吧

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧