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
}}

解决方案 »

  1.   

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