package package1;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import javax.servlet.ServletConfig;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class RegisterProcessAction
*/
public class RegisterProcessAction extends HttpServlet {
private static final long serialVersionUID = 1L;
private Connection cn = null;
private String drivername = null;
private String url = null;
private String user = null;
private String password = null;
public void init(ServletConfig config) throws ServletException
{
super.init(config);
drivername = config.getInitParameter(“drivername”);
url = config.getInitParameter(“url”);
try{
Class.forName(drivername);
cn = DriverManager.getConnection(url,user,password);
}catch(Exception e){
System.out.println(“取得数据库连接错误:”+e.getMessage());
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String userid = request.getParameter(“userid”);
String password = request.getParameter(“password”);
String repassword = request.getParameter(“repassword”);
String name = request.getParameter(“name”);
if(userid==null||userid.trim().length()==0){
response.sendRedirect(“register.jsp”);
}
if(password==null||password.trim().length()==0){
response.sendRedirect(“register.jsp”);
}
if(repassword==null||repassword.trim().length()==0){
response.sendRedirect(“register.jsp”);
}
if(!password.equals(repassword)){
response.sendRedirect(“register.jsp”);
}
if(name!=null&&name.trim().length()>0){
name = new String(name.getBytes(“UTF-8″));
}
String sql = “insert into register(userid,name,password)values(?,?,?)”;
try{
PreparedStatement ps = cn.prepareStatement(sql);
ps.setString(1, userid);
ps.setString(2, name);
ps.setString(3, password);
ps.executeUpdate();
ps.close();
response.sendRedirect(“success.jsp”);
}catch(Exception e){
System.out.println(“错误:”+e.getMessage());
response.sendRedirect(“register.jsp”);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
public void destroy(){
super.destroy();
try{
cn.close();
}catch(Exception e){
System.out.println(“关闭数据库错误:”+e.getMessage());
}
}
}
运行之后老是出现HTTP Status 500 – Cannot call sendRedirect() after the response has been committed
——————————————————————————–
type Exception report
message Cannot call sendRedirect() after the response has been committed
description The server encountered an internal error (Cannot call sendRedirect() after the response has been committed) that prevented it from fulfilling this request.
exception
java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed
org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:483)
package1.RegisterProcessAction.doGet(RegisterProcessAction.java:45)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.29 logs.
求高手解答!
更多 0 分享到:
相关主题推荐: 数据库 servlet server apache tomcat
相关帖子推荐:
启动apache2.2发生特定错误1怎么解决?winserver2008系统中操作access数据库的问题 Delphi 连接远程服务器的sql server 数据库输入字符串的格式不正确 newRow["goodxiaoji"] = decimal.Parse(w[3]) * decimal.Parse(w[4]);数据库表名称如何写活SQL 表中求同一列不同行的差值myeclispe连接数据库异常怎么在c#中实现DropDownList 绑定一个 “全部” 选项
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理 回复次数:11
leandzgc
关注
leandzgc
leandzgc
等级:Blank
#1 得分:2 回复于: 2012-09-26 00:26:28
500是服务器错误,一般是连接不上数据库或配置哪里写错了,你先注释掉
package1.RegisterProcessAction.doGet(RegisterProcessAction.java:45)这里的代码,然后一步一步的调错试试。
关注CSDN社区微信 投稿有礼了!对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
soton_dolphin
关注
soton_dolphin
soton_dolphin
等级:Blank
#2 得分:10 回复于: 2012-09-26 00:40:13
在每个response.sendRedirect() 调用后面加上return
如果您对CSDN论坛有意见和建议 请直接在本帖指教对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
fangmingshijie
关注
fangmingshijie 版主
花谢尊前不敢香
等级:Blank
6
更多勋章
#3 得分:2 回复于: 2012-09-26 08:44:22
Java code
?
1
2
3
4
5
6
7
ActionForward forward = new ActionForward(“XXX.jsp”);
forward.setRedirect(true);
return forward ;
protected void doGet()最好不要定义void类型的,改成ActionForward 类型,像上面那样重定向。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
ciltr
关注
ciltr
ciltr
等级:Blank
#4 得分:2 回复于: 2012-09-26 11:13:55
sendRedirect无法被重复调用。
你想一下userid和password都为null的时候会发生什么?
对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
sd4000784
关注
sd4000784
该用户被mysql打败了
等级:Blank
#5 得分:10 回复于: 2012-09-26 13:11:23
if(userid==null||userid.trim().length()==0){
response.sendRedirect(“register.jsp”);
}
if(password==null||password.trim().length()==0){
response.sendRedirect(“register.jsp”);
}
if(repassword==null||repassword.trim().length()==0){
response.sendRedirect(“register.jsp”);
}
if(!password.equals(repassword)){
response.sendRedirect(“register.jsp”);
}
其实我不懂你这if的逻辑
如果都进入这些if里面了 都会执行response.sendRedirect(“register.jsp”);
而response.sendRedirect只能执行一次、像#4楼说的无法被重复调用多次
你得把你这个逻辑搞清楚了、
如果都进入了if 你会执行很多次的response.sendRedirect
要么解决像#2楼说的加return ;
要么改你这块的逻辑、
对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
walkman_22
关注
walkman_22
walkman_22
等级:Blank
#6 得分:2 回复于: 2012-09-26 13:32:23
引用 5 楼 的回复:
if(userid==null||userid.trim().length()==0){
response.sendRedirect(“register.jsp”);
}
if(password==null||password.trim().length()==0){
response.sendRedirect(“register.jsp”);
}
if(repassword==nul……
顶楼上。
response重定向之后的代码都会无效的
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
AA5279AA
关注
AA5279AA
失落夏天
等级:Blank
33
#7 得分:8 回复于: 2012-10-05 17:12:07
顶5楼,这里是If判断,即使不符合条件也不影响下一个的判断。
所以即使这些if都不符合条件,最后一样运行,应该加入一个跳出。
对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
yexiongMYBH
关注
yexiongMYBH
yexiongMYBH
等级:Blank
#8 得分:2 回复于: 2012-10-07 12:12:04
你不要用这个response去跳转,应该用的是request。。。具体里面的什么方法,记得不是很清楚。。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
yexiongMYBH
关注
yexiongMYBH
yexiongMYBH
等级:Blank
#9 得分:2 回复于: 2012-10-07 12:12:38
response跳转是不能带参数的,,request跳转还可以带点参数过去。。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
cshy2013
关注
cshy2013
2014cs会员
等级:Blank
#10 得分:0 回复于: 2013-06-13 16:26:32
[s[size=12px]二次ize=人][/size][/size]
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
tan45678
关注
tan45678
糖炒粟子
等级:Blank
#11 得分:0 回复于: 2014-04-17 09:55:18
if-else if-else if – else s这样使用