您的位置:程序门 -> java -> web 开发



jsp连接mysql数据库的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


jsp连接mysql数据库的问题[已结贴,结贴人:yuer1985]
发表于:2007-08-16 17:13:46 楼主
前台的html页面接收用户输入的内容:
<!doctype   html   public   "-//w3c//dtd   html   4.01   transitional//en "   "http://www.w3.org/tr/html4/loose.dtd ">
<html>
<head>
<meta   http-equiv= "content-type "   content= "text/html;   charset=gb2312 ">
<title> mysql   调用实例 </title>
</head>

<body>
    <form   method= "post "   action= "/mysql/servlet/insert ">
    学生姓名: <input   type= "text "   name= "name "> <br>
    学生年龄: <input   type= "text "   name= "age "> <br>
    学生介绍: <textarea   name= "introduce "   rows= "5 "> </textarea> <br>
    <input   type= "submit "   value= "提交 ">
    <input   type= "reset "   value= "重填 ">
    </form>
</body>
</html>

后台具体的java程序实现代码:
//   java   document
/*insert.java*/
import   java.io.*;
//导入jdbc相关的类
import   java.sql.*;
//导入mysql的jdbc的相关类
import   org.gjt.mm.mysql.*;
//导入servlet的相关类
import   javax.servlet.*;
import   javax.servlet.http.*;
public   class   insert   extends   httpservlet{

//servlet的dopost方法,来处理用户post表单的请求
    public   void   dopost(httpserletrequest   request,httpservletresponse   response)
    throws   ioexception,servletexception{
     
      //设置输出类型text/html,并且编号gb2312,这样才不会出现中文的乱码
    response.setcontenttype( "text/html;charset=gb2312 ");
    //定义输出对象
    printwriter   out=response.getwriter();
    java.sql.connection   conn=null;
    java.sql.statement   st=null;
    //将用户输入转换为8859-1编码的字节,然后再转换成字符,这样就不会出现中文乱码了
    string   name=new   string(request.getparameter( "name ").getbytes( "8859-1 "));
    string   age=new   string(request.getparameter( "age ").getbytes( "8859-1 "));
    string   introduce=new   string(request.getparameter( "introduce ").getbytes( "8859-1 "));  
    try{
    //查找mysql的jdbc驱动程序,如果找不到会出错
    class.forname( "org.gjt.mm.mysql.driver ");
    //连接数据库
    conn=drivermanager.getconnection( "jdbc:mysql://localhost:3306/person ", "root ", "123 ");
    out.println( "与mysql数据库连接成功! <br> ");
    //生成数据库执行对象
    st=conn.createstatement();
    //执行添加学生的sql语句
    st.EXECutequery( "insert   into   student   values( ' "+name+ " ', ' "+age+ " ', ' "+introduce+ " ') ");
    out.println( "学生添加成功! <br> ");
    //关闭数据库
    conn.close();
    out.println( "数据库关闭成功! <br> ");
          }
     
      //捕获错误
      catch(exception   e)
              {
       
      //打印出错误信息
      out.printin( "发生了如下错误: <br> ");
      out.println(e.getmessage());
              }
          }
      }
发表于:2007-08-16 17:21:221楼 得分:0
???
发表于:2007-08-16 17:24:392楼 得分:0
lz没把问题说清楚~


发表于:2007-08-16 17:25:123楼 得分:0

运行就是这样的错误
type   status   report

message   /mysql/servlet/insert

description   the   requested   resource   (/mysql/servlet/insert)   is   not   available.

是路径设置的问题不?
发表于:2007-08-16 17:30:404楼 得分:5
发表于:2007-08-16 17:36:205楼 得分:0
觉得应该是html里的action没有设置好
可不知道怎么解决
参考手册这样说的:
d:\tomcat\webapps\mysql\index.html
d:\tomcat\webapps\mysql\web-inf\classes\insert.java
然后将mysql的jdbc包拷贝到tomcat的lib目录中

浏览器输入http://localhost:8080/mysql/
html显示正常,提交后出错
发表于:2007-08-16 17:45:046楼 得分:5
你那insert能通过编译吗?
很多错误啊
发表于:2007-08-17 10:20:597楼 得分:0
我也知道编译出错,可是一编译就说javax.servlet和javax.servlet.http软件包不存在.
不知道怎么解决!
发表于:2007-08-17 10:43:188楼 得分:5
classpath里加入serlet-api.jar
发表于:2007-08-17 10:49:309楼 得分:0
现在insert已经可以编译了
//   java   document
/*insert.java*/
import   java.io.*;
//导入jdbc相关的类
import   java.sql.*;
//导入mysql的jdbc的相关类
import   org.gjt.mm.mysql.*;
//导入servlet的相关类
import   javax.servlet.*;
import   javax.servlet.http.*;
public   class   insert   extends   httpservlet{

//servlet的dopost方法,来处理用户post表单的请求
    public   void   dopost(httpservletrequest   request,httpservletresponse   response)
    throws   ioexception,servletexception{
     
      //设置输出类型text/html,并且编号gb2312,这样才不会出现中文的乱码
    response.setcontenttype( "text/html;charset=gb2312 ");
    //定义输出对象
    printwriter   out=response.getwriter();
    java.sql.connection   conn=null;
    java.sql.statement   st=null;
    //将用户输入转换为8859-1编码的字节,然后再转换成字符,这样就不会出现中文乱码了
    string   name=new   string(request.getparameter( "name ").getbytes( "8859-1 "));
    string   age=new   string(request.getparameter( "age ").getbytes( "8859-1 "));
    string   introduce=new   string(request.getparameter( "introduce ").getbytes( "8859-1 "));  
    try{
    //查找mysql的jdbc驱动程序,如果找不到会出错
    class.forname( "org.gjt.mm.mysql.driver ");
    //连接数据库
    conn=drivermanager.getconnection( "jdbc:mysql://localhost:3306/person ", "root ", "123 ");
    out.println( "与mysql数据库连接成功! <br> ");
    //生成数据库执行对象
    st=conn.createstatement();
    //执行添加学生的sql语句
    st.EXECutequery( "insert   into   student   values( ' "+name+ " ', ' "+age+ " ', ' "+introduce+ " ') ");
    out.println( "学生添加成功! <br> ");
    //关闭数据库
    conn.close();
    out.println( "数据库关闭成功! <br> ");
          }
     
      //捕获错误
      catch(exception   e)
              {
       
      //打印出错误信息
      out.println( "发生了如下错误: <br> ");
      out.println(e.getmessage());
              }
          }
      }

但还是不能实现功能,郁闷!
发表于:2007-08-17 11:18:3510楼 得分:5
楼主的面向对像思想还要提高呀,代码看起来比较乱。另外最好不要用servlet,servlet本身比较难以控制,jsp页面编译完后就是个servlet,如果不用框架,可以直接写一个空的jsp页面,里面没有html代码。在这个页面里面调用相关的java操作类。数据库连接,不用连接池,最好写个单态类来得到连接,再写一个操作类,里面有(增,删,改,查)等方法。在jsp页直接调这四个方法执行操作,完成后,跳转到相关操作页面。

还有,lz说功能不能执行,错误信息要报一下。或是说明一下怎么个不能执行法。
发表于:2007-08-17 11:47:3711楼 得分:0
呵呵,菜鸟一个,刚开始学

实现要求:
在index.html页面的文本框中输入一些内容,然后单击"提交"按钮,会出现
"与mysql数据库连接成功!
 学生添加成功!
 数据库关闭成功!"
且能在mysql数据库查看到刚才的添加.

错误显示:
http   status   404   -   /mysql/servlet/insert

--------------------------------------------------------------------------------

type   status   report

message   /mysql/servlet/insert

description   the   requested   resource   (/mysql/servlet/insert)   is   not   available.

路径设置问题,还没找到解决方法.
发表于:2007-08-17 15:41:3112楼 得分:0
不会搞沉帖了吧
发表于:2007-08-17 16:18:3713楼 得分:0
真是不知道怎么办了,这个都成鸡肋了!


快速检索

最新资讯
热门点击