getOutputStream()方法无法实现功能

页面的代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'bj.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <link rel="stylesheet" type="text/css" href="css/112.css">

  </head>
  
  <body>
    <div class="header">
        <!-- 设置菜单 -->
        <div class="menu" onmouseleave="show_menu1()">  
            <div class="menu_title" onclick="show_menu()">
                <p>内容分类</p></div>
        </div>
    </div>
    <br>
    <div class="content">
        <!-- 设置广告栏 -->
        <div class="banner">
            <img src="images/333.png" class="banner_img">
        </div>
        <div class="img_content">
            <ul>
                <li>
                    <img src="images/222.png" class="img_li">
                    <div class="info">
                        <h3>日常保洁</h3>
                        <p>
                            工作时间:7:00-22:00<br>
                            服务:洗碗、扫地、洗衣服<br>
                            服务范围:卧室、客厅、书房、厨房、餐厅、洗手间、阳台<br>
                            ¥ 40元/小时
                        </p>

                        </div>
                </li>
                <li2>
                    <div class="info">
            <br>
<form METHOD="post" ACTION="dobj.jsp">
<input class="input_1" type="text"  name="name" placeholder="姓名"><br>
<input class="input_1" type="text" name="dh" placeholder="电话"><br>
 <input class="input_1" type="text" name="dz" placeholder="地址"><br>
<input class="input_1" type="text" name="sj" placeholder="时间"><br>
<input class="input_1" type="text" name="num" placeholder="服务类型"><br>
<input class="input_1" type="text" name="cs" placeholder="下单数"><br>
<input class="input_2" type="submit" value="确认">
    </form>                
           

                            </div>
                        
                        </div>
                    
                </li2>
            </ul>
            </div>

                
</div>
    
    
</body>
</html>


执行页面的代码


<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'dobj.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>
  
  <body>
    <%
    
  request.setCharacterEncoding("utf-8");
  String id=request.getParameter("id");
  String name=request.getParameter("name");
  String dh=request.getParameter("dh");
  String dz=request.getParameter("dz");
   String sj=request.getParameter("sj");
   String num=request.getParameter("num");
   String cs=request.getParameter("cs");
  Class.forName("com.mysql.jdbc.Driver"); //加载驱动程序类
 Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/jz?useSSL=false","root","root");
PreparedStatement pstmt=con.prepareStatement("insert into dd values(?,?,?,?,?,?,?)");
pstmt.setString(1,id);
pstmt.setString(2,name);
pstmt.setString(3,dh);
pstmt.setString(4,dz);
pstmt.setString(5,sj);
pstmt.setString(6,num);
pstmt.setString(7,cs);
int b=pstmt.executeUpdate();
//将数据存入数据库
if(b!=0){
request.getRequestDispatcher("1111.html?title="+id+"").forward(request,response);
}
%>
  </body>
</html>


错误页提示
```java

HTTP Status 500 -
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has already been called for this response
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:541)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:429)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause

java.lang.IllegalStateException: getOutputStream() has already been called for this response
    org.apache.catalina.connector.Response.getWriter(Response.java:604)
    org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198)
    org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
    org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
    org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:186)
    org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:118)
    org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:77)
    org.apache.jsp.dobj_jsp._jspService(dobj_jsp.java:123)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.

```

是启动报错,还是调用的时候报错

如果是调用报错,调用的地方代码也发出来,不一定是这个页面代码问题需要排查一下

  • 这篇博客: 计算机网络通信之探究Socket通信中的 5、getOutputStream() 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在这里插入图片描述

    功能:返回此套接字的输出流。
    如果此套接字具有关联的通道,则得到的输出流会将其所有操作委托给通道。如果通道为非阻塞模式,则输出流的 write 操作将抛出 IllegalBlockingModeException。
    关闭返回的 OutputStream 将关闭关联套接字。

    由于篇幅有限,关于 JavaSocket 其余的函数的链接我会放在附录里,这里就不过多介绍了