[学习笔记] JSP/Servlet技术之JSP数据交互(二)
# 学习 # · 2020-09-14
JSP内置对象之application
1、application对象:类似于系统中的全局变量,用于同一个应用内的所有用户之间的数据共享。
2、application对象常用的方法:
<%
void setAttribute(String key,Object Value); //将对象储存到application中
Object getAttribute(String key); //通过Key获取application中储存的对象
String getRealPath(String Path); //返回相对路径的真实地址
%>
3、application对象常用方法实例:
<%
Integer count = (Integer)application.getAttribute("count");
if(count != null) {
count = count + 1;
} else {
count = 1;
}
application.setAttribute("count",count);
%>
对象的作用域
1、四个域对象:page域、request域、session域、application域。
2、域对象作用:保存数据和获取数据,用于数据共享。
3、域对象方法:
setAttribute(key,Object); //保存数据
getAttribute(key); //获取数据
removeAttribute(key); //清除数据
4、域对象作用范围:
(1)page域: 只能在当前jsp页面中使用(当前页面)
(2)request域: 只能在同一个请求中使用(转发)
(3)session域: 只能在同一个会话(session对象)中使用(私有的)
(4)application域: 只能在同一个web应用中使用。(全局的)
cookie
1、cookie:最常用的跟踪用户会话的方式。是Web服务器保存在客户端的一系列文本信息。
2、cookie的作用:对特定对象的追踪、实现各种个性化服务、简化登录,但容易泄露信息。
3、创建cookie对象:
Cookie newck = new Cookie(String name, String value);
4、写入cookie:
response.addCookie(newck);
5、cookie对象常用的方法:
void setMaxAge(int expirt); //设置cookie的有效期,以秒为单位
int getMaxAge(); //获取cookie的有效时间
void setValue(String value); //在cookie创建之后为cookie赋予新的值
String getName(); //获取cookie的名称
String getValue(); //获取cookie的值
6、读取cookie:
Cookie[] cks = request.getCookies();
在JSP中访问数据库
1、JDBC连接数据库的步骤:加载JDBC驱动、与数据库建立连接、发送SQL语句、处理返回结果、释放资源。
2、使用步骤:
(1)将MySQL的驱动包添加到项目/WEB-INF/lib目录下
(2)数据访问层:在数据库连接和关闭工具类BaseDao中封装增删改查操作。DAO模式学习传送门
package web;
import java.sql.*;
public class BaseDao {
// 数据库驱动字符串
private String driver = "com.mysql.jdbc.Driver";
// 连接URL字符串
private String url = "jdbc:mysql://localhost:3306/table";
// 数据库用户名
private String user = "root";
// 用户密码
private String password = "123456";
// 数据连接对象
Connection conn = null;
/**
* 获取数据库连接对象
*/
public Connection getConnection() {
if(conn==null) {
//获取连接并捕获异常
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace(); // 异常处理
}
}
return conn; // 返回连接对象
}
/**
* 关闭数据库连接
* @param conn 数据库连接
* @param stmt Statement对象
* @param rs 结果集
*/
public void closeAll(Connection conn,Statement stmt,ResultSet rs) {
// 若结果集对象不为空,则关闭
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 若Statement对象不为空,则关闭
if (stmt != null) {
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 若数据库连接对象不为空,则关闭
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 增、删、改操作的通用方法
* @param sql 预编译的 SQL 语句
* @param param 参数的字符串数组
* @return 影响的行数
*/
public int executeUpdate (String preparedSql, Object[] param) {
PreparedStatement pstsm = null;
int result = 0;
conn = getConnection();
try {
pstsm = conn.prepareStatement(preparedSql);
if (param != null) {
for (int i = 0; i < param.length; i++) {
//为预编译sql设置参数
pstsm.setObject(i + 1, param[i]);
}
}
result = pstsm.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally{
closeAll(conn,pstsm,null);
}
return result;
}
/**
* 查询通用方法
* @param sql
* @param params
* @return
*/
public ResultSet executeQuery(String sql, Object[] params) {
conn = getConnection();
PreparedStatement pstsm = null;
ResultSet rs = null;
try {
pstsm = conn.prepareStatement(sql);
for(int i = 0; i < params.length; i++) {
pstsm.setObject(i + 1, params[i]);
}
rs = pstsm.executeQuery();
} catch (Exception e) {
e.printStackTrace();
} finally{
closeAll(conn,pstsm,rs);
}
return rs;
}
}
(3)表示层:编写JSP页面代码。
<%@ page import="org.news.dao.impl.userimpl" %>
在JSP中使用JavaBean
1、JavaBean:是Java中开发的可以跨平台的重用组件。在JSP程序中常用于封装业务逻辑、数据库操作等。
2、封装数据的JavaBean:
public class Comment {
//将属性声明为私有属性
private String cid; // 用户名
private String cnid; // 邮编
private String ccontent; // 电话
//无参的公有构造方法
public Comment () {}
//公有的设置属性值方法setXxx()
public void setCid(String cid) {
this. cid= cid;
}
//公有的获取属性值方法getXxx()
public String getCid() {
return cid;
}
}
3、在JSP页面中导入JavaBean:
//引入JavaBean
<%@ page import="org.news.bean.*" %>
//使用JavaBean
<%
Comment c = new Comment();
c.setCid(1014);
c.getCauthor();
%>
如无特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:一木林多 - https://www.l5v.cn/archives/111/
如若转载,请注明出处:一木林多 - https://www.l5v.cn/archives/111/
评论