当前位置:网站首页>Servlet+JDBC+MySQL简单web练习
Servlet+JDBC+MySQL简单web练习
2022-07-04 22:44:00 【左明水】
Servlet+JDBC+MySQL简单web练习
一、Servlet结构
1〉构造函数constructor
2〉init();初始化——〉将web.xml中有关sql的配置和相关连接语句封装到该函数中。
3〉doGet();doPost();将数据库操作的sql语句封装到该函数。
4〉destory();将相关资源释放,如:关闭数据库语句封装到该函数中。
二、JDBC(oop)+Mysql(db开发)
1〉驱动文件包(*.jar)
2〉Connection与db建立连接.
3〉ResultSet(纪录结果集)
4〉get方法获取字段。
5〉释放资源。
三、从基本框架—-〉到流程思想。
实现一和二的资源整合。
四、步骤。
要求:已经在MySQL中建立school数据库、studentinfo(id,name,age)。
1〉建立一个webproject(web应用名myweb)
2〉在webproject中建立一个package(名为web)
3〉在package中建立一个servlet(名为MyServlet)
4〉完成一的转化(封装)
//初始化函数,连接数据库
public void init() throws ServletException {
String url=”jdbc:mysql://localhost:3306/school”;
String user=”root”;
String pwd=”root”;
try{
Class.forName(“com.mysql.jdbc.Driver”);
//加载驱动,这一句也可写为:Class.forName(“com.mysql.jdbc.Driver”).newInstance();
//建立到MySQL的连接
conn = DriverManager.getConnection(url,user, pwd);
}catch(Exception ex){
System.out.println(“Error : ” + ex.toString());
}
}
//定义成员变量
Connection conn;
ResultSet rs;
//对数据库的操作
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//解决中文乱码问题
response.setContentType(“text/html;charset=utf-8”);//使浏览器默认编码为utf-8
//response.setCharacterEncoding(“utf-8”);//也可解决中文乱码
PrintWriter out = response.getWriter();
out.println(“”);
out.println(““);
out.println(” A Servlet“);
out.println(” “);
try{
//执行SQL语句
Statement stmt = conn.createStatement();//创建语句对象,用以执行sql语言
ResultSet rs = stmt.executeQuery(“select * from studentinfo”);
//处理结果集
out.println(“
out.println(““);
out.println(““);
out.println(““);
out.println(““);
out.println(““);
out.println(““);
out.println(““);
out.println(““);
while (rs.next()){
String id=rs.getString(“id”);
String name=rs.getString(“name”);
String age=rs.getString(“age”);
out.println(““);
out.println(““);
out.println(““);
out.println(““);
out.println(““);
}
out.print(“
| “);out.println(“学生信息表”); out.println(“ | ||
|---|---|---|
| “);out.println(“学号1”);out.println(“ | “);out.println(“姓名”);out.println(“ | “);out.println(“年龄”);out.println(“ |
| “);out.println(id);out.println(“ | “);out.print(name);out.println(“ | “);out.println(age);out.println(“ |
}catch(Exception ex){
System.out.println(“Error : ” + ex.toString());
}
out.println(” “);
out.println(““);
out.flush();
out.close();
}
//释放资源
public void destroy() {
super.destroy();
try{
rs.close();//关闭数据库
conn.close();
}catch(Exception ex){
System.out.println(“Error : ” + ex.toString());
}
自动生成的包
package web;
修改后导入的包(编程时系统会自动导入包)
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
完整代码如下:
package web;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Myservlet extends HttpServlet {
//定义成员变量
Connection conn;
ResultSet rs;
public Myservlet() {
super();
}
//初始化函数,连接数据库
public void init() throws ServletException {
String url="jdbc:mysql://localhost:3306/school";
String user="root";
String pwd="root";
try{
Class.forName("com.mysql.jdbc.Driver");
//加载驱动,这一句也可写为:Class.forName("com.mysql.jdbc.Driver").newInstance();
//建立到MySQL的连接
conn = DriverManager.getConnection(url,user, pwd);
}catch(Exception ex){
System.out.println("Error : " + ex.toString());
}
}
//对数据库的操作
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//解决中文乱码问题
response.setContentType("text/html;charset=utf-8");//使浏览器默认编码为utf-8
//response.setCharacterEncoding("utf-8");//也可解决中文乱码
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
try{
//执行SQL语句
Statement stmt = conn.createStatement();//创建语句对象,用以执行sql语言
ResultSet rs = stmt.executeQuery("select * from studentinfo");
//处理结果集
out.println("<TABLE width=500; border=1; cellspacing=0 >");
out.println("<TR>");
out.println("<TH>");out.println("学生信息表"); out.println("</TH>");
out.println("</TR>");
out.println("<TR>");
out.println("<TD>");out.println("学号1");out.println("</TD>");
out.println("<TD>");out.println("姓名");out.println("</TD>");
out.println("<TD>");out.println("年龄");out.println("</TD>");
out.println("</TR>");
while (rs.next()){
String id=rs.getString("id");
String name=rs.getString("name");
String age=rs.getString("age");
out.println("<TR>");
out.println("<TD>");out.println(id);out.println("</TD>");
out.println("<TD>");out.print(name);out.println("</TD>");
out.println("<TD>");out.println(age);out.println("</TD>");
out.println("</TR>");
}
out.print("</TABLE>");
}catch(Exception ex){
System.out.println("Error : " + ex.toString());
}
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
//释放资源
public void destroy() {
super.destroy();
try{
rs.close();//关闭数据库
conn.close();
}catch(Exception ex){
System.out.println("Error : " + ex.toString());
}
}
}
6〉BuildPach——〉AddExternalArchives…
导入下载好的数据库连接包(mysql-connector-java.jar)
7〉保存后,将web应用发布到所配置好的tomcat上。
8〉启动tomcat。
9〉在浏览器URL栏输入http://localhost:8080/web应用名/servlet/servlet名
如:http://localhost:8080/myweb/servlet/Myservlet
10〉在浏览器上显示出:学生信息表。
11〉每次调试程序都要重启tomcat和重新发布到tomcat上。
边栏推荐
猜你喜欢
![[machine learning] handwritten digit recognition](/img/26/cabdc5c92035181d82f6f809e6df0f.png)
[machine learning] handwritten digit recognition

常用技术指标之一文读懂BOLL布林线指标

Redis démarrer le tutoriel complet: Pipeline
![[sword finger offer] questions 1-5](/img/54/b70d5290978e842939db99645c6ada.png)
[sword finger offer] questions 1-5

VIM editor knowledge summary

Serial port data frame

Erik baleog and Olaf, advanced area of misc in the attack and defense world

SHP data making 3dfiles white film

Tweenmax emoticon button JS special effect

EditPlus--用法--快捷键/配置/背景色/字体大小
随机推荐
Gnawing down the big bone - sorting (II)
Attack and defense world misc master advanced zone 001 normal_ png
浅聊一下中间件
Network namespace
Redis démarrer le tutoriel complet: Pipeline
微信公众号解决从自定义菜单进入的缓存问题
How to choose a securities company? Is it safe to open an account on your mobile phone
刷题指南-public
Record: how to scroll screenshots of web pages on Microsoft edge in win10 system?
实战模拟│JWT 登录认证
mamp下缺少pcntl扩展的解决办法,Fatal error: Call to undefined function pcntl_signal()
Redis: redis configuration file related configuration and redis persistence
Redis入门完整教程:Redis Shell
The overview and definition of clusters can be seen at a glance
Redis入門完整教程:Pipeline
【ODX Studio编辑PDX】-0.3-如何删除/修改Variant变体中继承的(Inherited)元素
Redis入门完整教程:键管理
云服务器设置ssh密钥登录
剑指 Offer 67. 把字符串转换成整数
debug和release的区别