include指令
文件引用指令include,可可以将一些可以重用的内容写入一个单独的文件中,然后通过include指令引入文件,从而缓解代码的冗余问题,并且修改时也更加方便。
<% @include File="应用文件路径"%>
application内置对象
application对象代表Web应用
同一个application对象中,用户之间数据共享
Web应用启动时由服务器创建,应用程序停止即销毁
application对象常用方法
方法名称 | 说明 |
void setAttribute(String Key,Object value) | 以key/value的形式将对象存储到application中 |
Object getAttribute(Stringg key) | 通过key获取application中储存的对象 |
String getRealPath(String path) | 返回相对路径的真实路径 |
<%
int count;
if (application.getAttribute("count")==null){
count=1;
}else {
count=(Integer)application.getAttribute("count");
count++;
}
out.print("你是第"+count+"个注册本网站的人");
//存入
application.setAttribute("count",count);
%>
欢迎来到首页
JSP常用内置对象的作用
out | 用于向客户端输出数据 |
request | 主要用于处理客户端请求的数据信息 |
response | 用于响应客户端请求并向客户端输出信息 |
session | 用于记录会话状态的相关信息 |
application | 类似于系统的全局变量,用于实现web应用中的资源共享 |
JSP对象的作用域
page: 只用于当前页面
request: 请求 当前页面+跨页面(转发的方式)
session :会话层级 只要不关浏览器 不到期都可以使用
application: 只要不停止服务器都可以使用
page
作用域范围:当前页面
作用域对象:pageContext对象
<% String pageName="pageOne";
pageContext.setAttribute("pageName",pageName);
System.out.println("pageName:"+pageContext.setAttribute("pageName",pageName));
request.getRequestDispatcher("two.jsp").forward(request,response);
%>
request
作用域范围:当前请求
作用域对象:request对象
Integer countPage=(Integer)request.getAttribute("countPage");
if(countPage==null){
countPage=1;
}else{
counntPage++;
}
request.getAttribute("countPage",countPage);
session
作用域范围:当前会话
作用域对象:session对象
application
作用域范围:当前Web应用
作用域对象:application对象
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="one.jsp"%>
<html>
<head>
<title>引入</title>
</head>
<body>
<h1><%="Hello World!"%></h1>
<br>
<a href="one.jsp">欢迎进入网站</a>
<%
//page作用域:当前页面
pageContext.setAttribute("pc","page");
//request作用域:一次请求
request.setAttribute("req","request");
//session作用域:一次会话
session.setAttribute("sess","session");
//application作用域:当前应用程序
application.setAttribute("app","application");
request.getRequestDispatcher("two.jsp").forward(request,response);
%>
<div>
page作用域中的值:<%=pageContext.getAttribute("pc")%>
</div>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>页面</title>
</head>
<body>
<%
//获取count的值
Integer count=(Integer) application.getAttribute("count");
if(count!=null){//不是第一次访问
count+=1;
}else{//第一次访问
count=1;
}
application.setAttribute("count",count);
%>
<a href="one.jsp">该网站被访问<%=(Integer) application.getAttribute("count")%></a>
</body>
</html>
使用JDBC链接数据库
第一步:加载JDBC驱动
使用Class.forName( )方法加载JDBC驱动类到Java虚拟机中
第二步:与数据库建立连接
调用DriverManager 类的getConnection()方法,获取数据库连接
第三步:发送SQL语句,得到返回结果
第四步:处理返回结果
第五步:数据库访问结束后,进行资源释放
// 加载MySQL数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 定义数据库连接信息
String url = "jdbc:mysql://125.74.233.192:3306/fruitdb?characterEncoding=utf-8";
String user = "root";
String password = "123456";
// 建立数据库连接
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println("connection = " + connection);
// 定义查询条件
String fname = "西瓜' or 1=1 or fname='";
String sql = "select * from t_fruit where fname = '" + fname + "'";
System.out.println("sql = " + sql);
// 创建Statement对象
Statement statement = connection.createStatement();
// 执行查询语句
ResultSet resultSet = statement.executeQuery(sql);
// 处理查询结果
if (resultSet.next()) {
System.out.println(resultSet.getInt(1)); // 获取第一列的整数值
System.out.println(resultSet.getString("fname")); // 获取"fname"列的字符串值
System.out.println(resultSet.getInt(3)); // 获取第三列的整数值
System.out.println(resultSet.getInt("fcount")); // 获取"fcount"列的整数值
System.out.println(resultSet.getString("remark")); // 获取"remark"列的字符串值
}
JavaBean封装数据
JavaBean是可以跨平台的重用组件,本质是一个特殊的Java类
javabean特点
①JavaBean的功能分类
封装数据
封装业务
②JavaBean的规范
提供无参的公有构造方法
实现Serializable接口
属性私有
属性的getter、setter方法公有
③JavaBean的优势
解决代码重复编写,减少代码冗余
功能区分明确
提高了代码的维护性