3.19-3.23周总结

本文介绍了JDBC的基础知识,包括如何使用Eclipse链接数据库并进行数据操作,以及JSP的基础概念,如页面指令、静态与动态包含的区别,并探讨了JSP中的跳转指令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本周我们在结束了JAVA基础知识学习的基础上,主要学习了JDBC以及JSP基础知识部分的学习。

学会了用Eclipse链接数据库并进行数据的增删改查,也实现了运用eclipse编写简单的web运用读取数据库信息。

1.JDBC中的通用格式

package daoImpl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @author 青鸟 数据库操作基类
 */
public class DBHelper {
	// 创建连接对象
	Connection conn = null;
	// 创建PreparedStatement对象
	PreparedStatement pstmt = null;
	// 创建结果集ResultSet
	ResultSet rs = null;
	// 数据库驱动
	public final static String DRIVER = "com.mysql.jdbc.Driver";
	// url
	public final static String URL = "jdbc:mysql://localhost:3306/book";
	// 数据库用户名
	public final static String DBNAME = "root";
	// 数据库密码
	public final static String DBPASS = "";

	/**
	 * 获取数据库连接
	 * 
	 * @return
	 * @throws ClassNotFoundException
	 * @throws SQLException
	 *             Connection
	 */
	public Connection getConn() throws ClassNotFoundException, SQLException {
		try {
			// 注册驱动
			Class.forName(DRIVER);
			// 获得数据库连接
			conn = DriverManager.getConnection(URL, DBNAME, DBPASS);
		} catch (Exception e) {
			e.printStackTrace();
		}
		// 返回连接
		return conn;
	}

	/**
	 * 释放资源
	 * 
	 * @param conn
	 *            数据库连接
	 * @param pstmt
	 *            PreparedStatement对象
	 * @param rs
	 *            结果集
	 */
	public void closeAll(Connection conn, PreparedStatement pstmt, ResultSet rs) {

		/* 如果rs不空,关闭rs */
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		/* 如果pstmt不空,关闭pstmt */
		if (pstmt != null) {
			try {
				pstmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		/* 如果conn不空,关闭conn */
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 查询
	 * 
	 * @param sql
	 *            预编译的 SQL 语句
	 * @param param
	 *            预编译的 SQL 语句中的‘?’参数的字符串数组
	 * @return 影响的条数
	 */
	public ResultSet executeQuerySQL(String preparedSql, Object[] param) {

		/* 处理SQL,执行SQL */
		try {
			// 得到数据库连接
			conn = getConn();
			// 得到PreparedStatement对象
			pstmt = conn.prepareStatement(preparedSql);
			if (param != null) {
				for (int i = 0; i < param.length; i++) {
					// 为预编译sql设置参数
					pstmt.setObject(i + 1, param[i]);
				}
			}
			// 执行SQL语句,获取结果集ResultSet
			rs = pstmt.executeQuery();
		} catch (ClassNotFoundException e) {
			// 处理ClassNotFoundException异常
			e.printStackTrace();
		} catch (SQLException e) {
			// 处理SQLException异常
			e.printStackTrace();
		}
		return rs;
	}

	/**
	 * 增、删、改的操作,不能执行查询
	 * 
	 * @param sql
	 *            预编译的 SQL 语句
	 * @param param
	 *            预编译的 SQL 语句中的‘?’参数的字符串数组
	 * @return 影响的行数
	 */
	public int executeSQL(String preparedSql, Object[] param) {
		// 创建连接对象
		Connection conn = null;
		// 创建PreparedStatement对象
		PreparedStatement pstmt = null;
		// 创建并初始化返回值
		int num = 0;

		/* 处理SQL,执行SQL */
		try {
			// 得到数据库连接
			conn = getConn();
			// 得到PreparedStatement对象
			pstmt = conn.prepareStatement(preparedSql);
			if (param != null) {
				for (int i = 0; i < param.length; i++) {
					// 为预编译sql设置参数
					pstmt.setObject(i + 1, param[i]);
				}
			}
			// System.out.println(preparedSql);
			// 执行SQL语句,获得影响行数
			num = pstmt.executeUpdate();
		} catch (ClassNotFoundException e) {
			// 处理ClassNotFoundException异常
			e.printStackTrace();
		} catch (SQLException e) {
			// 处理SQLException异常
			e.printStackTrace();
		} finally {
			// 释放资源
			closeAll(conn, pstmt, null);
		}
		return num;
	}
}

2.JSP:Java Server Page(java服务器页面),是一个动态的网页技术标准。

3.Tomcat 是个 Web 容器,对外提供获取 Web 资源的服务,在其容器中可以管理静态的 Web 资源,除此之外,还可以解析 JSP 文件,将其解析为 Web 静态资源,供浏览器访问,与 Web 服务器相比,它更加的轻量级。

4.Scriptlet

<%%>

可以包裹任意的 Java 代码

<%=%>

直接输出内容,一般其中可以是变量、表达式,注意这种 Scriptlet 后面是没有结束符号 ; 的。

<%!%>

在此内部定义变量、定义方法、定义类等,现在不用了。


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="head.jsp" %>
<h1>content</h1>
<%@include file="foot.jsp" %>

<jsp:include />



5.Page 指令

ContentType 和 pageEncoding

定义页面的流模式和字符编码方式
<%
	String str = "HELLO";
%>
<jsp:include page="head.jsp"></jsp:include>
<h1><%=str %>,CONTENT</h1>
<jsp:include page="foot.jsp"></jsp:include>
<%
	String ageStr = request.getParameter("age");
	String name = request.getParameter("name");
	int age = Integer.valueOf(ageStr);
	if (age < 18) {
%>
	<jsp:forward page="n18.jsp?name=<%=name %>"/>
<%
	} else {
%>
	<jsp:forward page="y18.jsp">
		<jsp:param value="<%=name %>" name="name"/>
	</jsp:forward>
<%
	}
%>

6.

静态包含 include

include 是包含页面的指令,属于静态页面引入。

页面引入的好处在于:可以把多个页面共同的部分抽象出来定义。

<%@include file="head.jsp" %>
<h1>content</h1>
<%@include file="foot.jsp" %>

动态包含

<jsp:include />

<%
	String str = "HELLO";
%>
<jsp:include page="head.jsp"></jsp:include>
<h1><%=str %>,CONTENT</h1>
<jsp:include page="foot.jsp"></jsp:include>

在实际的开发中,我们一般都是用动态的引入。

7.

跳转指令

在之前学习的跳转中,都是客户端浏览器发起的页面跳转,可以 A 标签、Submit按钮提交、或者 JavaScript 脚本去完成。

jsp:forward

使用 jsp:forward 进行服务器端的页面跳转。

<%
	String ageStr = request.getParameter("age");
	String name = request.getParameter("name");
	int age = Integer.valueOf(ageStr);
	if (age < 18) {
%>
	<jsp:forward page="n18.jsp?name=<%=name %>"/>
<%
	} else {
%>
	<jsp:forward page="y18.jsp">
		<jsp:param value="<%=name %>" name="name"/>
	</jsp:forward>
<%
	}
%>

jsp:forward 属于服务器内部的请求跳转,不会在浏览器的地址栏留下任何跳转的痕迹

ps:

地址栏不改变的跳转属于服务器跳转;

地址栏改变的跳转属于客户端跳转;

一般使用服务器端的跳转进行业务逻辑的处理,完成目标视图的输出。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值