servlet连接mysql的一些

本文详细介绍了如何使用Servlet连接MySQL数据库,从环境配置到实际代码实现,包括Servlet的使用方法、web.xml文件的配置以及如何正确访问和查询数据库。通过实例演示,帮助读者解决在开发过程中可能遇到的问题。
由于实验,需要servlet连接mysql。
由于我之前安装过tomcat,JDK, mysql,所以环境配置不是问题,这里不再赘述。
下面主要是一个servlet连接mysql的一些。
(java忘的差不多了,有些问题不是很好地解释,惭愧,重拾起!!)
首先要掌握servlet的使用(简单的是以下几步):1)编写.java文件,并编译成.class文件;2) 将. class文件 拷贝到安装 tomcat 的文件夹 webapp 下的 ROOT 下的 INF 里的 classes 文件夹中;3)复制web.xml文件,并在 web-app 标签间加入相应的内容;4)重启tomcat, 访问 http://localhost:8080/***** (“**”是java 文件名 访问 .class 文件。

在使用实例时,照猫画虎容易错,因为有很多地方还是需要更改的,如果不知道每一部分的含义,那么改变时就会出错。

 servlet部分:该部分需要嵌入web.xml文件的web-app标签间,因为该程序是在.xml文件中进行 注册和映射其访问路径的,这样servlet程序才可以被servlet引擎加载和被外界访问; 一个元素用于注册一个Servlet,它包含有两个主要的子元素:,分别用于设置Servlet的注册名称和Servlet的完整类名; 一个 元素用于映射一个已注册的 Servlet 的一个对外访问路径,它包含有两个子元素: <</span>url-pattern>,分别用于指定Servlet的注册名称和Servlet的对外访问路径。
(对外访问路径即:输入的URL是何时,就可以访问到对应注册名称的servlet程序)

(为了搞清楚原理,特地查明了web.xml的常用元素及其加载顺序:

<<span id="1f0be0c9-53ef-4215-886f-a233f2eac55d" ginger_software_uiphraseguid="c8c35c06-911f-4dac-a18f-132c931fa7d3" class="GINGER_SOFTWARE_mark">display-name>定义了WEB应用的名字 

<<span id="6ca07312-d2e6-4d2d-9ae2-38f11005436f" ginger_software_uiphraseguid="63401c31-e2a8-4998-9ac6-04a78f4292db" class="GINGER_SOFTWARE_mark">description> 声明WEB应用的描述信息  

<<span id="9d19bbc5-f2c0-4636-8dd5-61d9697b0caa" ginger_software_uiphraseguid="5f8d2cd5-4922-43ba-b889-49156499c453" class="GINGER_SOFTWARE_mark">context-param> context-param元素声明应用范围内的初始化参数。 (包括2个,参数名称param-name和参数值param-value)

<<span id="bc511e73-c14c-4774-a282-4ca84d42cd9b" ginger_software_uiphraseguid="c094a4d2-f53c-4cba-b74a-e43efcc52a28" class="GINGER_SOFTWARE_mark">servlet>在向servlet或JSP页面制定初始化参数或定制URL时,必须首先命名servlet或JSP页面。Servlet元素就是用来完成此项任务的。 

<<span id="241a808b-94b2-4c56-9a3e-09a5b1405042" ginger_software_uiphraseguid="692c21af-bb0d-49d0-826c-26311f677cf5" class="GINGER_SOFTWARE_mark">servlet-mapping>服务器一般为servlet提供一个缺省的URL:http://host/webAppPrefix/servlet/ServletName。

 启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取和两个结点;紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文;然后容器将转换为键值对,并交给servletContext,接下来容器创建中的类实例,创建监听器。

明确:加载顺序与标签在文件中的顺序无关。

其加载顺序是::ServletContext-> listener ->filter -> servlet.


下面是实例(亲测可跑通):

import javax .servlet .*;
import javax .servlet .http .*;
import java . sql .*;
import java . io .*;

public class ServletDemo extends HttpServlet {

private String dbURL="jdbc:mysql://localhost:3306/***"; // 数据库标识名
private String user="root"; // 数据库用户
private String password="root"; // 数据库用户密码
private Connection con;
public void init () {
try {
Class . forName ("sun . jdbc . odbc .JdbcOdbcDriver");   //装载数据库驱动
        con=DriverManager . getConnection ( dbURL ,user ,password); //获取连接
}
catch (Exception ex ){
ex . printStackTrace ();
}
}

public void doGet (HttpServletRequest req ,HttpServletResponse res)   {
try {
    res .setContentType ("text/html"); //设置类型      
       
        //连接并查询数据库
        String sqlStr="select * from ***(DB-name)"; //SQL查询语句
Statement st=con .createStatement (); //获取PreparedStatement对象
ResultSet rs=st . executeQuery ( sqlStr); //执行查询
//在网页中输出查询结果
PrintWriter out = new PrintWriter (res . getOutputStream ()); //获取输出流
    out . println (""); //输出数据
        out . println ("");
        out . println ("");
        out . println ("");
        out . println ("");
out . println ("
");    
    ResultSetMetaData rsmd = rs.getMetaData(); //获取ResultSetMetaData对象
    int colCount = rsmd.getColumnCount(); //获取列数量
    out . println ("");
    for ( int i=0; i<<span id="636e64a3-bff1-4a58-9f0b-c537113dfef5" ginger_software_uiphraseguid="85c1cfef-c864-4dda-99e8-6053dc0bbbb1" class="GINGER_SOFTWARE_mark">colCount; i++ ){
    out.println(""); //获取列标题
    }
    out . println ("</<span id="adfab427-cb4c-44a6-acd5-4d1326bcf262" ginger_software_uiphraseguid="57f6dce3-d211-4663-b14a-cee42fb2c0da" class="GINGER_SOFTWARE_mark">tr>");
    while ( rs .next () ) { //遍历结果
    out . println ("");
    for ( int i=0; i<<span id="4268372c-c7ae-4ff1-9779-5dd6bb2a1be7" ginger_software_uiphraseguid="473a01ea-20f1-46c9-86ef-1be0a6a91a18" class="GINGER_SOFTWARE_mark">colCount; i++) {
    out.println(""); //输出数据
    }
    out . println ("</<span id="83be3f00-71a0-492f-b7c1-dd3026e85ac0" ginger_software_uiphraseguid="1f09cf2f-b3b8-427c-8111-4f4d730f438b" class="GINGER_SOFTWARE_mark">tr>");
    }
    out . println ("
");    
    out . println ("");      

    out .close ();   //关闭输出流
   
  }
  catch (Exception ex ){
ex . printStackTrace ();   //输出出错信息
  }
}
public void destroy () {
try {
con .close (); //关闭连接
} catch (SQLException ex) {
ex . printStackTrace ();
}
}
public static void main(String[] args){
new ServletDemo ();
}
}

在使用之前,得先启动mysql创建数据库,这样查询时才有数据返回。
编译为.class文件,按照之前的步骤进行操作。
配置web.xml文件时:注意servlet元素的更改。
重启tomcat,输入网址进行访问。

若遇到404错误,看你web.xml文件中的url是否正确。

我的问题是代码虽跑通了,但最后的页面是白板,应该返回我查询数据库的各个表项。
估计是java代码部分的输出错误。
恶补java,完善用例ing!

"+rs.getString(i+1)+"
"+rsmd.getColumnLabel(i+1)+"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值