使用 servlet 连接数据库

1.项目工程 web.xml 配置

 1 <servlet>
2 <description>This is the description of my J2EE component</description>
3 <display-name>This is the display name of my J2EE component</display-name>
4 <servlet-name>DBServlet</servlet-name>
5 <servlet-class>org.olive.DBServlet</servlet-class>
6 <init-param>
7 <param-name>driverName</param-name>
8 <param-value>com.microsoft.jdbc.sqlserver.SQLServerDriver</param-value>
9 </init-param>
10 <init-param>
11 <param-name>username</param-name>
12 <param-value>sa</param-value>
13 </init-param>
14 <init-param>
15 <param-name>password</param-name>
16 <param-value></param-value>
17 </init-param>
18 <init-param>
19 <param-name>dbName</param-name>
20 <param-value>pubs</param-value>
21 </init-param>
22
23 </servlet>
1 <servlet-mapping>
2 <servlet-name>DBServlet</servlet-name>
3 <url-pattern>/servlet/DBServlet</url-pattern>
4 </servlet-mapping>

2.servlet  java文件

DBServlet.java
 1 package org.olive;
2
3 import java.io.*; //导入java.io包
4 import java.util.*;
5 import java.sql.*;
6 import javax.servlet.*;
7 import javax.servlet.http.*;
8 public class DBServlet extends HttpServlet{ //定义一个继承HttpServlet的公有类
9 ServletConfig config=null; //定义一个ServletConfig对象
10 private String driverName=""; //定义私有字符串常量并初始化
11 private String username=""; //定义的数据库用户名
12 private String password=""; //定义的数据库连接密码
13 private String dbName=""; //定义的数据库名
14 private Connection conn; //初始化连接
15 private Statement stmt; //初始化数据库操作
16 ResultSet rs=null; //初始化结果集
17 public void init(ServletConfig config)throws ServletException{
18 super.init(config); //继承父类的init()方法
19 this.config=config; //获取配置信息
20 driverName=config.getInitParameter("driverName");//从配置文件中获取JDBC驱动名
21 username=config.getInitParameter("username"); //获取数据库用户名
22 password=config.getInitParameter("password"); //获取数据库连接密码
23 dbName=config.getInitParameter("dbName"); //获取要连接的数据库
24 }
25 public void doGet(HttpServletRequest req,HttpServletResponse resp)throws IOException,ServletException{
26
27 resp.setContentType("text/html;charset=GBK"); //设置字符编码格式
28 PrintWriter out=resp.getWriter(); //实例化对象,用于页面输出
29 out.println("<html>"); //实现生成静态Html
30 out.println("<head>");
31 out.println("<meta http-equiv=\"Content-Type\"content=\"text/html;charset=GBK\">");
32 out.println("<title>DataBase Connection</title>");
33 out.println("</head>");
34 out.println("<body bgcolor=\"white\">");
35 out.println("<center>");
36 String url="jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=pubs";
37 try{
38 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
39 conn=DriverManager.getConnection(url,username,password);
40 stmt=conn.createStatement();
41 String sql="use pubs select * from publishers";
42 rs=stmt.executeQuery(sql);
43 out.println("Servlet访问数据库成功");
44 out.println("<table border=1 bordercolorlight=#000000>");
45 out.println("<tr><td width=40>序号</td>");
46 out.println("<td>书名</td>");
47 out.println("<td>城市</td>");
48 out.println("<td>州</td>");
49 out.println("<td>国</td></tr>");
50 while(rs.next()){
51 out.println("<tr><td>"+rs.getString(1)+"</td>");
52 out.println("<td>"+rs.getString(2)+"</td>");
53 out.println("<td>"+rs.getString(3)+"</td>");
54 out.println("<td>"+rs.getString(4)+"</td>");
55 out.println("<td>"+rs.getString(5)+"</td>");
56 out.println("<tr>");
57 }
58 out.println("</table>");
59 rs.close();
60 stmt.close();
61 conn.close();
62
63 }catch(Exception e){
64 e.printStackTrace();
65 out.println(e.toString());
66 }
67 out.println("</center>");
68 out.println("</body>");
69 out.println("</html>");
70 }
71 public void doPost(HttpServletRequest req,HttpServletResponse resp)throws IOException,ServletException{
72 this.doGet(req,resp);
73 }
74 public void destory(){
75 config=null;
76 driverName=null;
77 username=null;
78 password=null;
79 dbName=null;
80 conn=null;
81 stmt=null;
82 rs=null;
83 }
84 }




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我用涂鸦模块做的报警系统

在上次发的涂鸦的文章之后涂鸦的这套宠物SDK设计&#xff0c;真香最近刚好有一个朋友需要做一个DEMO&#xff0c;这个DEMO是和图像识别相关的&#xff0c;我这个朋友在一个烟火报警的设备&#xff0c;大家都知道我们住的小区里面都会有一个监控系统吧&#xff0c;监控系统里面是…

Lnmp环境安装禅道项目管理软件

1、本地环境 CentOS Linux release 7.5.1804 (Core) PHP 7.1.0-dev (cli) mysql Ver 14.14 Distrib 5.7.22 nginx version: nginx/1.11.1 2、下载禅道开源版安装包并安装 神道官网地址&#xff1a;https://www.zentao.net/开源代码下载地址&#xff1a;https://www.zentao.net…

二叉树的非递归操作

这里涉及到二叉树的非递归操作有&#xff1a;先序遍历、中序遍历、后序遍历数据结构树结点&#xff1a;structNode { chardata; Node *left; Node *right; };标志&#xff1a;enumTag{goLeft, goRight, goBack };goLeft指示访问左子树goLeft指示访问右子树&#xf…

UDT源码剖析(二):UDT自带例程recvfile注释

这几天学习了UDT自带的例子&#xff0c;结合源码进行了测试如下&#xff1a; #ifndef WIN32 #include <arpa/inet.h>#include <netdb.h>#else#include <winsock2.h>#include <ws2tcpip.h>#endif#include <fstream>#include <iostream>#…

建立公司

最近标哥说有创业的想法&#xff0c;然后我帮忙搜了下关于创办公司的一些文章&#xff0c;晓宇的这篇文章把创业的过程写了个大概&#xff0c;也分享给大家&#xff0c;如果有创业想法的&#xff0c;按照这样的思路去寻找自己的合伙人。 自从17年4月份开始辞职创业&#xff0c;…

想在创建虚拟机的时候指定ip调研

想调研一下libvit xml能否提供类似的配置选项&#xff1a; xml应该写成这个样子&#xff0c;预先要在宿主机上面创建br0&#xff0c;配置要分配指定ip Using an existing host bridge Since 0.9.4 This shows how to use a pre-existing host bridge "br0". The gues…

UDT源码剖析(三):UDT::startup()过程代码注释

调用路线 UDT::startup()->CUDT::startup()->CUDTUnited::startup() 1 int startup() 2 { 3 return CUDT::startup(); 4 } 1 int CUDT::startup() 2 { 3 return s_UDTUnited.startup(); 4 } 查看源代码 打印帮助1 int CUDTUnited::startup() 2 { 3 // 开启一个…

第五节 CImage和CBmp(二)

由于这个库主要用于VC MFC下开发应用&#xff0c;因此目前可以下载到版本只支持MFC开发。如果您需要标准Win32的库&#xff0c;可以在回复时留下您的邮箱&#xff0c;或跟我联系。Email&#xff1a;wuchunlei163.comQQ&#xff1a;819543772EasyAnalysis图像分析库测试版以及源…

Linux 新系统易用性向 Windows 看齐

大家好&#xff0c;今天是一年一度的高考&#xff0c;不知道各位在多年以前有没有后悔选择电子专业&#xff0c;如果再给你一次机会&#xff0c;你会选择其他专业吗&#xff1f;以下是内容正文&#xff0c;由黄工整理&#xff01;来源 | 网络嵌入式开发&#xff0c;很多工程师都…

深度剖析SOC高性能实时事件关联分析引擎

【引言】安全管理平台&#xff08;SOC&#xff09; 的一项关键技术就是事件关联分析。借助实时的事件关联分析引擎&#xff0c;安全管理平台能够发掘出复杂的海量安全日志和事件背后隐藏的信息&#xff0c;引导安全管理人员发现外 部***和内部违规行为。作为本系列的第五篇文章…

P3165 [CQOI2014]排序机械臂

传送门 就是说要维护一个数据结构资瓷区间反转和查询第\(K\)大&#xff0c;那么splay吧 我们可以把原数组按高度为第一关键字&#xff0c;下标为第二关键字排序&#xff0c;然后直接建出splay 这样的话每次第\(K\)大直接查询编号然后把它转到根节点&#xff0c;那么左子树大小1…

靠,嘉立创打板又降价

说个题外话&#xff0c;我前段时间和同事聊天&#xff0c;我同事是一个项目经理&#xff0c;我跟他说我有朋友在嘉立创&#xff0c;然后随口说了句&#xff0c;我们这个行业应该没有不知道嘉立创的吧&#xff0c;我同事回了一句&#xff0c;什么是嘉立创&#xff0c;然后我愣了…

动态提示的下拉框

<html> <head> <meta http-equiv"Content-Type" content"text/html; charsetgb2312"> <META content"fason,阿信" nameAuthor> <title>动态提示的下拉框</title> <style> a{color:red;text-decoratio…

深度解析Cocoa异步请求和libxml2.dylib教程(1)

深度解析Cocoa异步请求和libxml2.dylib教程是本文要介绍的内容&#xff0c;不多说&#xff0c;直接进入话题&#xff0c;很早就在cocoachina上看到这个框架了,今天终于有机会来使用这个东东了. 我这里写一下,如何往iphone项目中添加这个框架. 步骤如下: 1.下载该framework : ht…

UDT源码剖析(四):UDT的GC线程相关过程代码注释

着UDT::Startup()的启动&#xff0c;GC线程也随之运行了。 GC主要关注的就是UDTSocket的释放&#xff0c;下面我们来看看这个GC线程是怎么实现的。 查看源代码 打印帮助1 #ifndef WIN32 2 void* CUDTUnited::garbageCollect(void* p) 3 #else 4 DWORD WINAPI CUDTUnited:…

那年高考

每年高考&#xff0c;都会让我想起很多事情。我第一次高考前几天&#xff0c;我舅舅和舅娘过来看我&#xff0c;他们拉我到教室后门&#xff0c;我舅说我妈叮嘱他一定来看我&#xff0c;然后跟我说不要给自己太大压力&#xff0c;啰嗦了几分钟&#xff0c;要走的时候硬塞给我10…

vimdiff的简单使用

Vimdiff的使用 1、首先vimdiff是一款高效的文件的比较和合并的工具&#xff0c;它具有以下一些特点&#xff1a;命令行方式的比较工具&#xff1b;简单明了的界面&#xff1b;对比较出来的多处差异之间快速定位&#xff1b;进行文件合并。再使用vimdiff命令之前&#xff0c;我们…

拆解一个比亚迪的车钥匙,这个黑黑的元器件是什么?

今天抽屉突然找到一个比亚迪的车钥匙&#xff0c;寻思着没事拆开看看用什么方案做的。正面照&#xff0c;哪款车型的&#xff0c;不知道了背面照&#xff0c;很简洁&#xff0c;只有一个BYD的Logo接下来就是撬开了&#xff0c;过程非常顺利&#xff0c;之前撬开一个宝马车的钥匙…

分布式事物(同样适用于dubbo事务等分布式事务)

转载于:https://www.cnblogs.com/tian1993/p/10081901.html

一些web开发中常用的、做成cs文件的js代码 - 搜刮来的

using System;using System.Web;using System.Web.UI;namespace COCOWO.COMP{ /// <summary> /// 一些常用的Js调用 /// 创建时间&#xff1a;2006-8-3 /// 创建者&#xff1a;马先光 /// </summary> public class Jscript { …