站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题我不懂,真是不懂,请各位大哥大姐教我一下.

我不懂,真是不懂,请各位大哥大姐教我一下.

摘要: 我不懂,真是不懂,请各位大哥大姐教我一下.


我用serser2000数据库连接池+JavaBean+Servlet 练一点东西,程序如下:1.<form name="form1" id="form1" method="post" action="/MyServlet/registerServlet">(jsp中的)2.package MyServlet;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import sun.security.pkcs11.*;
import com.sun.org.apache.xalan.internal.xsltc.compiler.Pattern;
import java.util.regex.Matcher;
import java.lang.*;
import java.util.regex.*;
import java.sql.*;
import MyJavaBean.Connectionpool;

public class registerServlet extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GBK";
Connectionpool diaoy=new Connectionpool();
//Initialize global variables
public void init() throws ServletException {
}

//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doPost(request,response);
}

//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String name=new String(request.getParameter("username").getBytes("8859_1"));
String password=new String(request.getParameter("password").getBytes("8859_1"));
String pass_confirm=new String(request.getParameter("pass_confirm").getBytes("8859_1"));
String Email=new String(request.getParameter("email").getBytes("8859_1"));
String Sex=new String(request.getParameter("sex").getBytes("8859_1"));
String Address=new String(request.getParameter("address").getBytes("8859_1"));
String Tel=new String(request.getParameter("tel").getBytes("8859_1"));
String Career=new String(request.getParameter("career").getBytes("8859_1"));
String TureName=new String(request.getParameter("turename").getBytes("8859_1"));
int Year=Integer.parseInt("year");
int Month=Integer.parseInt("month");
int Date=Integer.parseInt("date");

response.setContentType(CONTENT_TYPE);
PrintWriter out=response.getWriter();
out.println("");
out.println("<head>用户登录</head>");
out.println("<body>");
out.println("

用户名:"+name+"

");
out.println("

密码:"+password+"

");
out.println("

电子邮箱:"+Email+"

");
out.println("

联系地址:"+Address+"

");
out.println("

真实姓名:"+TureName+"

");
out.println("

性别:"+Sex+"

");
out.println("

电话:"+Tel+"

");
out.println("

职业:"+Career+"

");

String sql_info="insert into zUserWeb(UserName,Pwd,RePwd,Email,Sex,TureName,Address,Tel,Year,Month,Date) values";
sql_info+="('"+name+"','"+password+"','"+pass_confirm+"','"+Email+"','"+Sex+"','"+TureName+"',";
sql_info+="'"+Address+"','"+Tel+"','"+Year+"','"+Month+"','"+Date+"')";
boolean success=addRecord(sql_info);
if(success)
{
out.println("注册成功!
");
}
else
{
out.println("注册失败,请消后再试!
");
}
out.println("

返回

");
out.println("</body>");
}

//Clean up resources
public void destroy() {
}

public boolean checkUser(String name)
{
boolean existed=false;
try {
String sql = "select * from zUserWeb where UserName='" + name + "'";
ResultSet rs = diaoy.executeQuery(sql);
int recordCount=0;
while(rs.next())
{
recordCount++;
}
if(recordCount>0)
{
existed=true;
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
return existed;
}
public boolean checkpass(String password,String pass_confirm)
{
boolean identical=true;
if(!password.equals(pass_confirm))
{
identical=false;
}
return identical;
}


public boolean addRecord(String sql_info)
{
boolean success=false;
try
{
diaoy.executeUpdate(sql_info);
diaoy.close_all();
}
catch(Exception ex)
{
ex.printStackTrace();
}
return success;
}
}
3.JavaBean:package MyJavaBean;

import java.sql.*;
import javax.naming.*;
import javax.sql.DataSource;

public class Connectionpool {
private Connection con=null;
private Statement stmt=null;
ResultSet rs=null;
public Connectionpool() {
}

public ResultSet executeQuery(String sql)throws Exception
{
rs=null;
try
{
Context initCtx=new javax.naming.InitialContext();
Context envCtx=(Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/Myweb");
con=ds.getConnection();
stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
System.out.println("连接成功!");
rs=stmt.executeQuery(sql);
}
catch(SQLException e)
{
throw e;
}
catch(NamingException e)
{
throw e;
}
return rs;
}

public void executeUpdate(String sql)throws Exception
{
stmt=null;
rs=null;
try
{
Context initCtx=new InitialContext();
Context envCtx=(Context) initCtx.lookup("java:comp/env");
DataSource ds=(DataSource)envCtx.lookup("jdbc/Myweb");
con=ds.getConnection();
stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
stmt.executeQuery(sql);
stmt.close();
con.close();
}
catch(SQLException ex)
{
System.err.println("执行SQL语句出错: " + ex.getMessage());
}
}

// 关闭stmt和关闭连接
public void close_all()
{
try{
stmt.close();
con.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
}
为什么出如下错呢:


E:/jJbuilder/jdk1.5/bin/javaw -classpath "E:/jJbuilder/thirdparty/jakarta-tomcat-5.5.9/bin/bootstrap.jar;E:/jJbuilder/jdk1.5/lib/tools.jar" "-Dcatalina.home=E:/jJbuilder/thirdparty/jakarta-tomcat-5.5.9" org.apache.catalina.startup.Bootstrap -config E:/java项目开发/JichuWeb/Tomcat/conf/server8080.xml start
2006-7-15 14:56:43 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2006-7-15 14:56:44 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 3781 ms
2006-7-15 14:56:44 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2006-7-15 14:56:44 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.5.9
2006-7-15 14:56:44 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
2006-7-15 14:56:48 org.apache.catalina.realm.JAASRealm setContainer
信息: Set JAAS app name Catalina
2006-7-15 14:56:49 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2006-7-15 14:56:49 org.apache.catalina.startup.Catalina start
信息: Server startup in 5172 ms
2006-7-15 14:56:59 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet debugjsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:596)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:186)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:124)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:117)
at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:191)
at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:115)
at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:75)
at org.apache.jsp.image_jsp._jspService(org.apache.jsp.image_jsp:132)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)



OMG too many codes...

getOutputStream() has already been called for this response


getOutputStream() has already been called for this response


谢谢,请说清楚点啊~~


就是你的response对象被调用,但是没有释放掉。


真是太感谢了,但是我不知道该怎么释放response,请麻烦一下
教我一下啊~~


response.reset();
我把上面的家进去了,但是,它运行到servlet时就没有反应,也不报错,真是急死人
请大家帮帮我啊,到底是什么原因


↑返回目录
前一篇: java中如何实现按队列执行任务?
后一篇: EJB部署出错: Unable to load a class specified in your ejb-jar.xml