JSP数据库操作详解
- 格式:ppt
- 大小:1.94 MB
- 文档页数:97
JSP的网络数据库连接技术及运用之研究JSP技术已经成为了Web应用程序中最广泛使用的技术之一。
而网络数据库连接则是JSP技术中使用最广泛的技术之一。
本文将会探讨JSP技术中网络数据库连接技术的相关内容,同时也会介绍其如何应用于实际项目中。
一、JSP技术概述JSP,即Java Server Pages,它是Sun Microsystems为了简化网站开发而开发的一套技术方案。
JSP技术通过将Java代码嵌入到HTML页面中来实现页面的动态性,同时通过Java Servlet技术来实现Web应用程序的逻辑控制。
JSP技术具有以下优点:1、易于维护:由于JSP技术将Java代码嵌入到HTML页面中,因此页面开发的工作变得更加容易,并且这种技术也使得页面的维护非常方便。
2、灵活性高:JSP技术可以支持Java的强大功能,不仅可以方便地进行页面的开发和维护,还可以很方便地对程序进行扩展。
3、高性能:与ASP、PHP等页面开发技术相比,JSP技术的性能非常高,这也是其在大型网站中得以广泛使用的原因之一。
二、网络数据库连接技术网络数据库连接技术是JSP技术中使用最为广泛的技术之一。
该技术通常使用Java数据库连接(JDBC)技术来实现。
JDBC是Java语言中用于与关系型数据库进行通信的标准API。
通过JDBC技术,JSP开发人员可以完成对数据库的增删改查等操作。
JDBC技术的核心是数据库驱动程序(driver),驱动程序是一个Java库,使得JDBC 可以与各种数据库进行交互。
驱动程序分为两种类型:JDBC-ODBC桥接器(Bridge)和纯Java驱动程序。
JDBC-ODBC桥接器在JDK 8中已被弃用,因此现在的Java应用程序中通常使用纯Java驱动程序。
常见的数据库驱动程序有以下几种:1、Oracle数据库驱动程序(OracleDriver)。
2、MySQL数据库驱动程序(com.mysql.jdbc.Driver)。
福建电脑2012年第12期基于JSP的数据库连接技术浅析张超(南京交通职业技术学院南京江宁211188)【摘要】:为解决JSP开发数据库系统时存在的数据库连接影响系统性能问题、提高数据库的访问效率,本文简单分析了JDBC直接访问数据库技术和数据库连接池技术的工作原理和操作步骤,提出数据库连接池技术的优势。
【关键词】:数据库JDBC连接池1.引言在进行JSP应用程序的开发过程中,不可避免的事情就是与数据库之间的交互,对数据库的连接和管理能显著影响到整个应用程序的伸缩性和健壮性。
目前比较常用的技术是JDBC技术和数据库连接池技术。
2.JDBC直接访问数据库技术JDBC技术是Java数据库连接技术的简称,由一组使用Java语言编写的类和接口组成,可以为多种关系数据库提供统一访问,Sun公司提供了JDBC的借口规范,数据库厂商会根据该接口规范提供针对不同数据库的具体实现---JDBC 驱动。
其工作原理如下图1所示:开发一个JDBC应用程序,基本需要以下步骤:(1)加载JDBC驱动。
使用Class.forName()方法将给定的JDBC驱动类加载到Java虚拟机中。
如果系统中不存在给定的类,则会引发异常,异常类型为ClassNot-FoundException。
关键代码如下:Class.forName(JDBC驱动类);(2)与数据库建立连接DriverManager类是JDBC的管理层,作用于用户和驱动程序之间。
DriverManager类跟踪可用的驱动程序,并在数据库和相应的驱动程序之间建立连接。
当调用getConnection()方法时,DriverManager类首先从已加载的驱动程序列表中找到一个可以接受该数据库URL的驱动程序,然后请求该驱动程序使用相关的URL、用户名和密码连接到数据库中,于是就建立了与数据库的连接,创建连接对象并返回引用。
关键代码如下:Connection con=DriverManager.getConnection (JDBC URL,数据库用户名,密码);(3)发送SQL语句,并得到返回结果。
jsp数据库操作之数据更新代码还是承接那个select.jspupdate.jsp<%--Created by IntelliJ IDEA.User: 长风Date: 2019/9/21Time: 20:03To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" import="java.sql.*" %><html><head><title>数据更新</title></head><body><%!public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";public static final String DBURL = "jdbc:mysql://localhost:3306/webstore?&useSSL=false&serverTimezone=UTC"; public static final String DBUSER = "root";public static final String DBPASS = "123456";%><%Connection conn = null;PreparedStatement pst = null;ResultSet rs = null;String id = null;%><%try {Class.forName(DBDRIVER);conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);request.setCharacterEncoding("utf-8");id = request.getParameter("id");String sql_update = "select * from user_table where id='" + id + "'";//获取你要更新数据的id的数据库信息pst = conn.prepareStatement(sql_update);rs = pst.executeQuery();if (rs.next()) {%><form action="doupdate.jsp?id=<%=rs.getString("id")%>" method="post"><%--切换到doupdate,显⽰要更新的数据信息--%>⽤户名:<input type="text" value="<%=rs.getString("⽤户名")%>" name="user">密码: <input type="text" value="<%=rs.getString("密码") %>" name="psw">⽤户类型:<select name="ty"><option value="管理员">管理员</option><option value="普通⽤户">普通⽤户</option></select><input type="submit" value="修改"><input type="reset" value="取消"></form><%}} catch (Exception e) {out.println(e);}%></body></html>doupdate.jsp:<%--Created by IntelliJ IDEA.User: 长风Date: 2019/9/21Time: 20:03To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" import="java.sql.*" %><html><head><title>数据更新</title></head><body><%!public static final String DBDRIVER="com.mysql.cj.jdbc.Driver";public static final String DBURL="jdbc:mysql://localhost:3306/webstore?&useSSL=false&serverTimezone=UTC"; public static final String DBUSER="root";public static final String DBPASS="123456";%><%Connection conn=null;PreparedStatement pst=null;int rs=0;String ids=null;String user=null;String psw=null;String ty=null;%><%try{Class.forName(DBDRIVER);conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);request.setCharacterEncoding("utf-8");ids=request.getParameter("id");user=request.getParameter("user");psw=request.getParameter("psw");ty=request.getParameter("ty");String sql_update="update user_table set ⽤户名='"+user+"',密码='"+psw+"',⽤户类型='"+ty+"'where id='"+ids+"'"; pst=conn.prepareStatement(sql_update);rs=pst.executeUpdate();if(rs!=0){out.println("更新成功");%><jsp:forward page="select.jsp"></jsp:forward><%--修改之后转到展⽰页⾯--%><%}}catch(Exception e){out.println(e);}%></body></html>运⾏结果更新前更新中:更新后:。
Jsp详解1.简介2.Jsp的运行原理3.Jsp的语法1.Jsp模板元素2.Jsp中的脚本表达式3.Jsp中的脚本片段4.Jsp的声明5.Jsp注释6.Jsp指令1.首先我们来看一下page指令的用法2.下面在来看一下include指令3.最后来看一下taglib指令7.Jsp中内置的9个隐式对象8.JSP标签库1.jspinclude标签2.jspforward标签3.jspparam或者jspparams标签4.jspuseBean标签jspsetProperty标签jspgetProperty标签9.Jsp中怎么排查错误简介:JSP全称是JavaServer Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。
JSP这门技术的最大的特点在于,写jsp就像在写html,但:它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
相比servlet而言,servlet很难对数据进行排版,而jsp除了可以用java代码产生动态数据的同时,也很容易对数据进行排版。
不管是JSP还是Servlet,虽然都可以用于开发动态web资源。
但由于这2门技术各自的特点,在长期的软件实践中,人们逐渐把servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用。
其原因为,程序的数据通常要美化后再输出:让jsp既用java代码产生动态数据,又做美化会导致页面难以维护。
让servlet既产生数据,又在里面嵌套html代码美化数据,同样也会导致程序可读性差,难以维护。
因此最好的办法就是根据这两门技术的特点,让它们各自负责各的,servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示jsp来做。
Jsp的运行原理:目标:Web服务器是如何调用并执行一个jsp页面的?Jsp页面中的html排版标签是如何被发送到客户端的?Jsp页面中的java代码服务器是如何执行的?Web服务器在调用jsp时,会给jsp提供一些什么java对象?思考:JSP为什么可以像servlet一样,也可以叫做动态web资源的开发技术?其实Jsp就是一个Servlet,所以我们要先介绍Servlet的相关技术,当我们第一次访问Jsp 的时候,Jsp引擎都会将这个Jsp翻译成一个Servlet,这个文件存放在Tomcat中的work目录中,这里,我们新建一个MyJsp.jsp页面,然后访问以下,我们看一下翻译后的源码:1.<%@ page language="java"import="java.util.*"pageEncoding="utf-8"%>2.3.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4.01 Transitional//EN">4.<html>5.<head>6.7.<title>My JSP 'MyJsp.jsp' starting page</title>8.9.</head>10.11.<body>12. This is my JSP page. <br>13.</body>14.</html>1.package org.apache.jsp;2.3.import javax.servlet.*;4.import javax.servlet.http.*;5.import javax.servlet.jsp.*;6.import java.util.*;7.8.public final class MyJsp_jsp extends org.apache.jasper.runtime.HttpJspBase9.implements org.apache.jasper.runtime.JspSourceDependent {10.11.private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();12.13.private static java.util.List _jspx_dependants;14.15.private javax.el.ExpressionFactory _el_expressionfactory;16.private org.apache.AnnotationProcessor _jsp_annotationprocessor;17.18.public Object getDependants() {19.return _jspx_dependants;20. }21.22.public void _jspInit() {23. _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();24. _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class .getName());25. }26.27.public void _jspDestroy() {28. }29.30.public void _jspService(HttpServletRequest request, HttpServletResponse response)31.throws java.io.IOException, ServletException {32.33. PageContext pageContext = null;34. HttpSession session = null;35. ServletContext application = null;36. ServletConfig config = null;37. JspWriter out = null;38. Object page = this;39. JspWriter _jspx_out = null;40. PageContext _jspx_page_context = null;41.42.43.try {44. response.setContentType("text/html;charset=utf-8");45. pageContext = _jspxFactory.getPageContext(this, request, response,46.null, true, 8192, true);47. _jspx_page_context = pageContext;48. application = pageContext.getServletContext();49. config = pageContext.getServletConfig();50. session = pageContext.getSession();51. out = pageContext.getOut();52. _jspx_out = out;53.54. out.write("\r\n");55. out.write("\r\n");56. out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");57. out.write("<html>\r\n");58. out.write(" <head>\r\n");59. out.write(" \r\n");60. out.write(" <title>My JSP 'MyJsp.jsp' starting page</title>\r\n");61. out.write(" \r\n");62. out.write(" </head>\r\n");63. out.write(" \r\n");64. out.write(" <body>\r\n");65. out.write(" This is my JSP page. <br>\r\n");66. out.write(" </body>\r\n");67. out.write("</html>\r\n");68. } catch (Throwable t) {69.if (!(t instanceof SkipPageException)){70. out = _jspx_out;71.if (out != null && out.getBufferSize() != 0)72.try { out.clearBuffer(); } catch (java.io.IOException e) {}73.if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);74. }75. } finally {76. _jspxFactory.releasePageContext(_jspx_page_context);77. }78. }79.}我们看到,这个类继承了org.apache.jasper.runtime.HttpJspBase,要想看到这个类的源码,我1./*2. * Licensed to the Apache Software Foundation (ASF) under one or more3. * contributor license agreements. See the NOTICE file distributed with4. * this work for additional information regarding copyright ownership.5. * The ASF licenses this file to You under the Apache License, Version 2.06. * (the "License"); you may not use this file except in compliance with7. * the License. You may obtain a copy of the License at8. *9. * /licenses/LICENSE-2.010. *11. * Unless required by applicable law or agreed to in writing, software12. * distributed under the License is distributed on an "AS IS" BASIS,13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.14. * See the License for the specific language governing permissions and15. * limitations under the License.16. */17.18.package org.apache.jasper.runtime;19.20.import java.io.IOException;21.22.import javax.servlet.ServletConfig;23.import javax.servlet.ServletException;24.import javax.servlet.http.HttpServlet;25.import javax.servlet.http.HttpServletRequest;26.import javax.servlet.http.HttpServletResponse;27.import javax.servlet.jsp.HttpJspPage;28.import javax.servlet.jsp.JspFactory;29.30.import piler.Localizer;31.32./**33. * This is the super class of all JSP-generated servlets.34. *35. * @author Anil K. Vijendran36. */37.public abstract class HttpJspBase38.extends HttpServlet39.implements HttpJspPage40.41.42.{43.44.protected HttpJspBase() {45. }46.47.public final void init(ServletConfig config)48.throws ServletException49. {50.super.init(config);51. jspInit();52. _jspInit();53. }54.55.public String getServletInfo() {56.return Localizer.getMessage("");57. }58.59.public final void destroy() {60. jspDestroy();61. _jspDestroy();62. }63.64./**65. * Entry point into service.66. */67.public final void service(HttpServletRequest request, HttpServletResponse response)68.throws ServletException, IOException69. {70. _jspService(request, response);71. }72.73.public void jspInit() {74. }75.76.public void _jspInit() {77. }78.79.public void jspDestroy() {80. }81.82.protected void _jspDestroy() {83. }84.85.public abstract void _jspService(HttpServletRequest request,86. HttpServletResponse response)87.throws ServletException, IOException;88.}好吧,看到了,继承了HttpServlet类,所以说其实Jsp就是一个ServletJsp的语法:1.JSP模版元素2.JSP表达式3.JSP脚本片段4.JSP注释5.JSP指令6.JSP标签7.JSP内置对象8.如何查找JSP页面中的错误Jsp模板元素JSP页面中的HTML内容称之为JSP模版元素。
JSP 更新、添加与删除操作更新数据库中的数据,可以使用SQL语句的UPDATE、INSERT和DELETE 操作,然后将包含UPDATE、INSERT、DELETE的SQL语句交给Statement对象的executeUpdate()方法执行。
Statement对象用于执行不带参数的简单SQL语句。
在J SP程序中,由于外部环境的变化,后台连接数据库中的数据每隔一段时间,就需要更新。
我们不可能直接打开MySQL数据库进行更新,一般情况下都是借助JSP程序进行更新。
1.数据添加案例现在创建一个案例,演示对数据库完成添加操作。
在JSP中,要完成数据库记录的添加操作,需要两个JSP页面,一个为数据输入页面,一个为处理数据页面。
参数值,并依据这些参数值创建sql添加语句。
变量name在获取name的参照值后,还需要进行编码转换,其语句为“name=new String(name.getBytes("iso-8859-1"))”。
下面使用对象stmt的方法executeUpdate执行相应的sql语句。
将上述两个文件复制到Tomcat服务器运行目录下。
打开IE浏览器,在地址栏中输入http://localhost:8080/JSPExample/MySQLInsert.jsp,单击【转到】,会显示如图6-10所示窗口:图6-10 数据添加输入页面在图6-10中的文本域中,分别输入要添加的信息。
然后单击【提交】按钮,会显示如图6-11所示窗口:图6-11 数据添加成功2.删除和修改数据执行删除与修改操作也非常简单,都可以通过向数据库发送sql语句来完成。
只不过执行的sql语句不同罢了。
下面创建一个案例,演示对MySQL数据库执行数据修改和删除。
打开记事本,创建MySQLGeng.jsp文件,完成数据的修改和删除操作。
其代码如下所示:将上述代码保存,并将文件复制到C:\Tomcat 6.0\webapps\JSPExample目录下。