Servlet重定向跳转不了

yixiao1111 2010-08-31 10:04:34
package com.yuan.www;

//import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class servletToJSP extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {


response.setContentType("text/html");
String submitflag = request.getParameter("submitflag");
//编辑部分(edit)

if (submitflag.equals("edit")) {
boolean forward = this.edit(request, response);
if (forward) {
PrintWriter out = response.getWriter();
out
.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>yuan Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.println("编辑成功!");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
} else {
PrintWriter out = response.getWriter();
out
.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.println("编辑失败!");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}

}

try {
// 设置属性并将它提交给ServletUseJsp.jsp
// response.setContentType("text/html;charset=gb2312");
// request.setAttribute("servletName", "ServletToJsp");
//forward

//getServletConfig().getServletContext().getRequestDispatcher("/ServletUseJsp.jsp").forward(request, response);

//sendRedirect
System.out.println(request.getContextPath());
response.sendRedirect(request.getContextPath() + "/ServletUseJsp.jsp");
} catch (Exception e) {
e.printStackTrace();
}

//PrintWriter out = response.getWriter();
}


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

private boolean edit(HttpServletRequest request,
HttpServletResponse response) {
boolean forward = false;
try {
Class.forName("org.gjt.mm.mysql.Driver");
String url = "jdbc:mysql://localhost:3306/user?user=root&password=root&useUnicode=true&characterEncoding=utf-8";
Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();

int id = Integer.valueOf(request.getParameter("id")).intValue();
String name = request.getParameter("name");
String sex = request.getParameter("sex");
int age = Integer.valueOf(request.getParameter("age")).intValue();
String contents = request.getParameter("contents");

String sql = "update user set name ='" + name + "',sex='" + sex
+ "',age=" + age + ",contents='" + contents
+ "' where id = " + id;
stmt.executeUpdate(sql);
if (stmt.executeUpdate(sql) > 0) {
forward = true;
System.out.println("数据修改成功");

} else {
System.out.println("数据修改失败");
}
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return forward;
}

public void init() throws ServletException {
// Put your code here
}

}
...全文
479 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
adan-阿丹 2010-08-31
  • 打赏
  • 举报
回复 1
这么长的代码,懒的去看
humanity 2010-08-31
  • 打赏
  • 举报
回复
是在 edit 时出错了吗?

HTTP 协议工作过程:
1. 似乎你不能直接使用 out.close()。因为连接不是由应用程序控制的,而是由服务器,我们只能给出内容或状态码。
2. HTTP 是请求-应答 模式的通信过程。如果你已经回复了一个 HTML 内容,就不可以再 sendRedirect 了,sendRedirect 消息只能有 HEADER,不可以有 BODY (通信内容不会在 HEADER 后多一个空行再接上 BODY 内容)。大致的意思是,“如果你已经给出了合适的内容作为回应返回给客户端,你就不应该再告诉客户端类似这样的内容:你要的内容在 http:///xxx.com/ayyyy.jsp,我这里没有答复,请去那个 URL 取吧""。



kokobox 2010-08-31
  • 打赏
  • 举报
回复
就不能把代码格式化一下吗

67,513

社区成员

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

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