Web前后端数据交互技术 课件 第八章 数据的桥梁-后台数据处理_第1页
Web前后端数据交互技术 课件 第八章 数据的桥梁-后台数据处理_第2页
Web前后端数据交互技术 课件 第八章 数据的桥梁-后台数据处理_第3页
Web前后端数据交互技术 课件 第八章 数据的桥梁-后台数据处理_第4页
Web前后端数据交互技术 课件 第八章 数据的桥梁-后台数据处理_第5页
已阅读5页,还剩97页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

——江西应用技术职业学院web前后端数据交互技术数据的桥梁——后台数据处理第八章教学内容1、认识JDBC2、JDBC连接数据库3、JDBC应用实例4、前后端接口Servlet知识目标技能目标素养目标●掌握JDBC与Servlet的定义●

理解JDBC与Servlet的工作机制(方法与事件)●掌握Socket的操作和应用●能正确理解JDBC与Servlet工作流程●能使用JDBC操作数据库●提升分析问题、解决问题的能力●养成软件开发职业编码规范●培养精益求精的职业工匠精神●能使用Servlet与前端数据交互操作教学重点JDBC与Servlet的定义和工作原理、JDBC与Servlet的方法与事件、JDBC与Servlet操作和应用案例教学难点掌握JDBC连接数据库进行增删改查操作Servlet与前端数据交互处理教学内容教学目标一起进入课程学习吧!——江西应用技术职业学院——江西应用技术职业学院web前后端数据交互技术JDBC操作8.1.101JDBC增加数据JDBC操作实例JDBC连接数据库编写插入的sql语句执行sql语句关闭数据连接,释放资源案例步骤//定义驱动,帐号,密码,连接地址publicstaticfinalStringdriver="com.mysql.cj.jdbc.Driver";//驱动publicstaticfinalStringuser="root";

//帐号publicstaticfinalStringpassword="root";//密码publicstaticfinalStringurl="jdbc:mysql://localhost:3306/sw?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT";publicstaticConnectioncon=null;//加载驱动static{try{Class.forName(driver);}catch(ClassNotFoundExceptione){e.printStackTrace();}}//编写连接的方法publicstaticConnectiongetConnection(){try{con=DriverManager.getConnection(url,user,password);}catch(SQLExceptione){e.printStackTrace();}returncon;}publicstaticvoidmain(String[]args){//执行插入数据的sql语句

Scannerscanner=newScanner(System.in);System.out.println("请输入帐号");Stringusername=scanner.next();System.out.println("请输入密码");Stringpassword=scanner.next();scanner.close();//定义一条插入的sqlStringsql="insertintouser(user_name,pass_word)values('"+username+"','"+password+"')";//定义执行的方法Statementsmt=null;Connectionconn=null;try{conn=getConnection();//获取执行方法smt=conn.createStatement();//执行sqlsmt.execute(sql);//关闭连接smt.close();conn.close();}catch(SQLExceptione){e.printStackTrace();}02JDBC查询数据JDBC操作实例JDBC连接数据库编写查询的sql语句执行sql语句关闭数据连接,释放资源案例步骤//定义驱动,帐号,密码,连接地址publicstaticfinalStringdriver="com.mysql.cj.jdbc.Driver";//驱动publicstaticfinalStringuser="root";

//帐号publicstaticfinalStringpassword="root";//密码publicstaticfinalStringurl="jdbc:mysql://localhost:3306/sw?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT";publicstaticConnectioncon=null;//加载驱动static{try{Class.forName(driver);}catch(ClassNotFoundExceptione){e.printStackTrace();}}//编写连接的方法publicstaticConnectiongetConnection(){try{con=DriverManager.getConnection(url,user,password);}catch(SQLExceptione){e.printStackTrace();}returncon;}publicstaticvoidmain(String[]args){//执行查询数据的sql语句

Scannerscanner=newScanner(System.in);System.out.println("请输入帐号");Stringusername=scanner.next();System.out.println("请输入密码");Stringpassword=scanner.next();scanner.close();//编写查询帐号是张三的sql语句Stringsql="select*fromuserwhereuser_name='"+username+"'andpass_word='"+password+"'";//定义空的连接和执行Connectionconn=null;Statementsmt=null;try{//获取连接conn=getConnection();//获取执行smt=conn.createStatement();//执行查询ResultSetres=smt.executeQuery(sql);

//判断查询结果

if(res.next()){

System.out.println("登录成功");

}

else{

System.out.println("登录失败");

}

//关闭连接

smt.close();

conn.close();

}catch(SQLExceptione){

e.printStackTrace();

}谢谢大家观看——江西应用技术职业学院——江西应用技术职业学院web前后端数据交互技术JDBC操作8.1.301JDBC更新数据JDBC操作实例JDBC连接数据库编写更新的sql语句执行sql语句关闭数据连接,释放资源案例步骤//定义驱动,帐号,密码,连接地址publicstaticfinalStringdriver="com.mysql.cj.jdbc.Driver";//驱动publicstaticfinalStringuser="root";

//帐号publicstaticfinalStringpassword="root";//密码publicstaticfinalStringurl="jdbc:mysql://localhost:3306/sw?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT";publicstaticConnectioncon=null;//加载驱动static{try{Class.forName(driver);}catch(ClassNotFoundExceptione){e.printStackTrace();}}//编写连接的方法publicstaticConnectiongetConnection(){try{con=DriverManager.getConnection(url,user,password);}catch(SQLExceptione){e.printStackTrace();}returncon;}publicstaticvoidmain(String[]args){//执行更新数据的sql语句

Scannerscanner=newScanner(System.in);System.out.println("请输入帐号");Stringusername=scanner.next();System.out.println("请输入密码");Stringpassword=scanner.next();scanner.close();//编写更新的sqlStringsql="updateusersetuser_name='超人'whereid='1'";//定义连接和执行Connectionconn=null;Statementsmt=null;try{//获取连接conn=getConnection();//获取执行smt=conn.createStatement();//执行更新的动作intres=smt.executeUpdate(sql);if(res>0){

System.out.println("更新成功");

}else{

System.out.println("更新失败");

}

smt.close();

conn.close();

}catch(SQLExceptione){

e.printStackTrace();

}02JDBC删除数据JDBC操作实例JDBC连接数据库编写删除的sql语句执行sql语句关闭数据连接,释放资源案例步骤//定义驱动,帐号,密码,连接地址publicstaticfinalStringdriver="com.mysql.cj.jdbc.Driver";//驱动publicstaticfinalStringuser="root";

//帐号publicstaticfinalStringpassword="root";//密码publicstaticfinalStringurl="jdbc:mysql://localhost:3306/sw?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT";publicstaticConnectioncon=null;//加载驱动static{try{Class.forName(driver);}catch(ClassNotFoundExceptione){e.printStackTrace();}}//编写连接的方法publicstaticConnectiongetConnection(){try{con=DriverManager.getConnection(url,user,password);}catch(SQLExceptione){e.printStackTrace();}returncon;}publicstaticvoidmain(String[]args){//执行删除数据的sql语句

Scannerscanner=newScanner(System.in);System.out.println("请输入帐号");Stringusername=scanner.next();System.out.println("请输入密码");Stringpassword=scanner.next();scanner.close();//编写一条sqlStringsql="deletefromuserwhereid='1'";

//定义连接,执行Connectionconn=null;Statementsmt=null;

try{

//获取连接和执行conn=getConnection();smt=conn.createStatement();

//执行删除

intres=smt.executeUpdate(sql);if(res>0){

System.out.println("删除成功");

}else{

System.out.println("删除失败");

}

//关闭连接

smt.close();

conn.close();

}catch(Exceptione){

}

谢谢大家观看——江西应用技术职业学院——江西应用技术职业学院web前后端数据交互技术JDBC操作8.1.301JDBC删除数据JDBC操作实例JDBC连接数据库编写删除的sql语句执行sql语句关闭数据连接,释放资源案例步骤//定义驱动,帐号,密码,连接地址publicstaticfinalStringdriver="com.mysql.cj.jdbc.Driver";//驱动publicstaticfinalStringuser="root";

//帐号publicstaticfinalStringpassword="root";//密码publicstaticfinalStringurl="jdbc:mysql://localhost:3306/sw?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT";publicstaticConnectioncon=null;//加载驱动static{try{Class.forName(driver);}catch(ClassNotFoundExceptione){e.printStackTrace();}}//编写连接的方法publicstaticConnectiongetConnection(){try{con=DriverManager.getConnection(url,user,password);}catch(SQLExceptione){e.printStackTrace();}returncon;}publicstaticvoidmain(String[]args){//执行删除数据的sql语句

Scannerscanner=newScanner(System.in);System.out.println("请输入帐号");Stringusername=scanner.next();System.out.println("请输入密码");Stringpassword=scanner.next();scanner.close();//编写一条sqlStringsql="deletefromuserwhereid='1'";//定义连接,执行Connectionconn=null;Statementsmt=null;try{//获取连接和执行conn=getConnection();smt=conn.createStatement();//执行删除intres=smt.executeUpdate(sql);

if(res>0){

System.out.println("删除成功");

}else{

System.out.println("删除失败");

}

//关闭连接

smt.close();

conn.close();

}catch(Exceptione){

}谢谢大家观看——江西应用技术职业学院——江西应用技术职业学院web前后端数据交互技术数据的桥梁—JDBC8.1目录CONTENTSJDBC连接步骤JDBC各种连接方式的对比JDBC介绍123JDBC的连接实例4什么是JDBC01JDBC的介绍JDBC全称为JavaDataBaseConnectivity(Java数据库连接)连接数据库的桥梁由JAVA语言编写的类和接口的组成可以为多种数据库提供统一的接口介绍02JDBC各种连接方式对比JDBCJDBC+ODBC桥的方式ü需要数据库的ODBC驱动,仅适用于微软的系统JDBC+厂商API的形式

厂商API一般使用C语言编写JDBC+厂商DatabaseConnectionServer+Database的形势ü在JAVA与Database之间架起了一台专门用于连接的服务器(一般由数据库厂商提供)JDBC+Database的连接方式(推荐)ü将Application与数据库分开,开发者只需关心内部逻辑的实现而不需要注重数据库连接的实现连接方式03JDBCJDBC的连接步骤1.加载驱动程序:Class.forName(driverClass);载MySql驱动:Class.forNmae(com.mysql.jdbc.Driver)加载Oracle驱动:Class.forNmae(oracle.jdbc.driver.OracleDriver)2.创建数据库连接:(以MySql为例)Connectionconn=DriverManager.getConnection(URL,USER,PASSWORD);URL:数据库连接地址USER:连接数据库的账号PASSWORD:连接数据库的密码3关闭数据连接conn.close();连接步骤04JDBC连接数据库实例JDBC连接实例

privatestaticfinalStringdriver="com.mysql.jdbc.Driver";

privatestaticfinalStringurl="jdbc:mysql://localhost:3306/ob?useSSL=false&serverTimezone=GMT";

privatestaticfinalStringusername="root";

privatestaticfinalStringpassword="root";

publicstaticConnectioncon=null;

static{try{Class.forName(driver);}catch(ClassNotFoundExceptione){e.printStackTrace();}}

publicstaticConnectiongetConnection(){

try{con=DriverManager.getConnection(url,username,password);}catch(SQLExceptione){e.printStackTrace();}

returncon;

}

publicstaticvoidmain(String[]args){con=getConnection();if(con!=null){System.out.println("连接成功");}else{System.out.println("连接失败");}}谢谢大家观看——江西应用技术职业学院——江西应用技术职业学院web前后端数据交互技术Servlet生命周期8.2.1Servlet销毁Servlet服务Servlet初始化阶段目录CONTENTS123浏览器客户端开始Servlet实例是否存在?装载Servlet类并创建实例调用init(ServletConfig)调用service(ServletRequest,ServletResponse)服务器关闭?调用destroy方法(1)(2)(3)ResponseRequestNY(4)Servlet的生命周期01Servlet的初始化什么时候初始化Servlet?首先容器加载Servlet类创建实例然后调用init方法,初始化ServletServlet初始化的次数?Servlet只初始化一次,init方法也只执行一次初始化的方法publicvoidinit()throwsServletException{super.init();}Servlet初始化Servlet的生命周期02Servlet服务

Servlet服务服务:调用service的方法处理doGet和doPost方法调用服务次数:Service方法可多次调用执行Service方法rotectedvoidservice(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{super.service(req,resp);}Servlet生命周期03Servlet销毁什么时候Servlet被销毁?容器关闭时调用destroy销毁方法销毁次数:当Servlet服务器正常关闭时,执行destroy方法,只执行一次销毁方法destroypublicvoiddestroy(){super.destroy();}Servlet销毁谢谢大家观看——江西应用技术职业学院——江西应用技术职业学院web前后端数据交互技术Servlet应用8.2.3

Servlet

表单数据很多情况下,需要传递一些信息,从浏览器到Web服务器,最终到后台程序。浏览器使用两种方法可将这些信息传递到Web服务器,分别为GET方法和POST方法。GET方法GET方法向页面请求发送已编码的用户信息。页面和已编码的信息中间用?字符分隔,如下所示:/hello?key1=value1&key2=value2

GET方法是默认的从浏览器向Web服务器传递信息的方法,它会产生一个很长的字符串,出现在浏览器的地址栏中。如果您要向服务器传递的是密码或其他的敏感信息,请不要使用GET方法。GET方法有大小限制:请求字符串中最多只能有1024个字符。这些信息使用QUERY_STRING头传递,并可以通过QUERY_STRING环境变量访问,Servlet使用

doGet()

方法处理这种类型的请求。POST方法另一个向后台程序传递信息的比较可靠的方法是POST方法。POST方法打包信息的方式与GET方法基本相同,但是POST方法不是把信息作为URL中?字符后的文本字符串进行发送,而是把这些信息作为一个单独的消息。消息以标准输出的形式传到后台程序,您可以解析和使用这些标准输出。Servlet使用doPost()方法处理这种类型的请求。使用Servlet读取表单数据Servlet处理表单数据,这些数据会根据不同的情况使用不同的方法自动解析:getParameter():您可以调用request.getParameter()方法来获取表单参数的值。getParameterValues():如果参数出现一次以上,则调用该方法,并返回多个值,例如复选框。getParameterNames():如果您想要得到当前请求中的所有参数的完整列表,则调用该方法。

使用URL的GET方法实例下面是一个简单的URL,将使用GET方法向HelloForm程序传递两个值。http://localhost:8080/TomcatTest/HelloForm?name=web前后端交互教程&url=下面是处理Web浏览器输入的

HelloForm.java

Servlet程序。我们将使用

getParameter()

方法,可以很容易地访问传递的信息:

示例代码

@WebServlet("/HelloForm")

public

class

HelloForm

extends

HttpServlet

{

private

static

final

long

serialVersionUID

=

1L;

public

HelloForm()

{

super();

//

TODO

Auto-generated

constructor

stub

}

示例代码

protected

void

doGet(HttpServletRequest

request,

HttpServletResponse

response)

throws

ServletException,

IOException

{

//

设置响应内容类型

response.setContentType("text/html;charset=UTF-8");

PrintWriter

out

=

response.getWriter();

String

title

=

"使用

GET

方法读取表单数据";

//

处理中文

String

name

=new

String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");

}

//

处理

POST

方法请求的方法

public

void

doPost(HttpServletRequest

request,

HttpServletResponse

response)

throws

ServletException,

IOException

{

doGet(request,

response);

}示例代码

protected

void

doGet(HttpServletRequest

request,

HttpServletResponse

response)

throws

ServletException,

IOException

{

//

设置响应内容类型

response.setContentType("text/html;charset=UTF-8");

PrintWriter

out

=

response.getWriter();

String

title

=

"使用

GET

方法读取表单数据";

//

处理中文

String

name

=new

String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");

}

//

处理

POST

方法请求的方法

public

void

doPost(HttpServletRequest

request,

HttpServletResponse

response)

throws

ServletException,

IOException

{

doGet(request,

response);

}谢谢大家观看——江西应用技术职业学院——江西应用技术职业学院web前后端数据交互技术Servlet应用8.2.4

一、Servlet

服务器HTTP响应设置HTTP响应报头的方法下面的方法可用于在Servlet程序中设置HTTP响应报头。这些方法通过

HttpServletResponse

对象可用。

HTTPHeader响应实例您已经在前面的实例中看到setContentType()方法,下面的实例也使用了同样的方法,此外,我们会用

setIntHeader()

方法来设置

Refresh

头。publicclassRefreshextendsHttpServlet{

//处理GET方法请求的方法

publicvoiddoGet(HttpServletRequestrequest,

HttpServletResponseresponse)

throwsServletException,IOException

{

//设置刷新自动加载时间为5秒

response.setIntHeader("Refresh",5);

//设置响应内容类型

response.setContentType("text/html;charset=UTF-8");

//使用默认时区和语言环境获得一个日历

Calendarcale=Calendar.getInstance();

示例代码

//将Calendar类型转换成Date类型

Datetasktime=cale.getTime();

//设置日期输出的格式

SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");

//格式化输出

StringnowTime=df.format(tasktime);

PrintWriterout=response.getWriter();

Stringtitle="自动刷新Header设置-servlet实例";

示例代码

StringdocType=

"<!DOCTYPEhtml>\n";

out.println(docType+

"<html>\n"+

"<head><title>"+title+"</title></head>\n"+

"<bodybgcolor=\"#f0f0f0\">\n"+

"<h1align=\"center\">"+title+"</h1>\n"+

"<p>当前时间是:"+nowTime+"</p>\n");

}

//处理POST方法请求的方法

publicvoiddoPost(HttpServletRequestrequest,

HttpServletResponseresponse)

throwsServletException,IOException{

doGet(request,response);

}

}

HTTPHeader请求实例下面的实例使用HttpServletRequest的getHeaderNames()方法读取HTTP头信息。该方法返回一个枚举,包含与当前的HTTP请求相关的头信息。一旦我们有一个枚举,我们可以以标准方式循环枚举,使用hasMoreElements()方法来确定何时停止,使用nextElement()方法来获取每个参数的名称。

示例代码

publicclassDisplayHeaderextendsHttpServlet{

//处理GET方法请求的方法

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException

{

//设置响应内容类型

response.setContentType("text/html;charset=UTF-8");

PrintWriterout=response.getWriter();

Stringtitle="HTTPHeader请求实例-servlet实例";

StringdocType=

"<!DOCTYPEhtml>\n";

out.println(docType+

"<html>\n"+

"<head><metacharset=\"utf-8\"><title>"+title+"</title></head>\n"+

"<bodybgcolor=\"#f0f0f0\">\n"+

"<h1align=\"center\">"+title+"</h1>\n"+

"<tablewidth=\"100%\"border=\"1\"align=\"center\">\n"+

"<trbgcolor=\"#949494\">\n"+

"<th>Header名称</th><th>Header值</th>\n"+

"</tr>\n");

EnumerationheaderNames=request.getHeaderNames();

示例代码

while(headerNames.hasMoreElements()){

StringparamName=(String)headerNames.nextElement();

out.print("<tr><td>"+paramName+"</td>\n");

StringparamValue=request.getHeader(paramName);

out.println("<td>"+paramValue+"</td></tr>\n");

}

out.println("</table>\n</body></html>");

}

//处理POST方法请求的方法

publicvoi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论