jsp动作:<jsp:include page="" flush=“true”>
jsp指令:<%@include file=“a.jsp”%>
动作是在页面被访问时导入的,指令是在编译时导入的;
在指令中会编译为一个servlet类文件,在动作中会分为两个所以效率稍慢;
<jsp:forward page="" >
跳转后,地址栏不变;
page只能是web应用中的文件;
jsp指令:page、include、taglib
jsp动作:include、forward、param等等
JSP元素可以分为三大类:JSP指令元素、JSP动作元素、JSP脚本元素。
一、JSP指令元素仅仅是在“翻译”阶段使用的,即把JSP翻译成Servlet。
jsp内置对象:request、response、session、application、out、page、config;
request:
request.getRemoteAddress()获取用户IP
request.getParameter(“name”)获取参数
request.setCharacterEncoding(“utf-8”)
请求头:
accept:客户端能接收的MIME类型
accept-language:浏览器的首选语言
user-agent:客户端程序的相关信息;浏览器版本、系统版本等;
host:服务器的主机号和端口号;
ua-cpu:CPU类型
connection:判断客户是否可以持续性地连接HTTP
accept-encoding:客户端能处理的编码类型;
cookies:会话信息
response:
response.sendRedirect(url)设置页面重定向
servlet生命周期:初始化(init())、运行、消亡
JSP和servlet的区别:
1、servlet是Java代码、jsp是页面代码;
2、servlet的运行速度更快;
3、servlet需要手动编译,jsp由服务器自动编译
JSP有四个作用域
1:page (其作用域在当前页面,操作只在当前页面有效);
2:request (它代表用户的请求,从发送HTTP请求到服务器,一直到服务器返回数据被称为一个完整的用户请求 “也叫请求周期”,在此过程中用户可能通过forward方式跳转多个页面,而放入request中的变量可以在 跳转的页面间随意使用);
3:session (当一个用户进入浏览器页面时,被称为一个会话的开始,当用户关闭浏览器离开,标志着一个会话的结 束。session就是用来存放服务器查询出来的数据,用户可以在自己的这个会话中随意获取session中的数 据);
4:application(放在application中的变量在整个应用中都有效,与前三个作用域不同的是,它是不分用户的,就是说如 果一个用户在application中添加了变量,那么其它用户同样可以获取该变量,它是全局性的);
EL标签:${ 参数名 }
作用:
1、访问jsp中不同域的对象;
2、访问javabean中的属性;
3、访问集合元素;
4、支持简单的运算符操作;
pageContext.setAttribute("name","ben");
request.setAttribute("name","ben");
session.setAttribute("name","ben");
application.setAttribute("name","ben");
${pageScope.name}
${requestScope.name}
${sessionScope.name}
${applicationScope.name}
算数运算符:加减乘除、求模%
逻辑运算符:and && or || not !
关系运算符:eq == ne != lt < gt > le <= ge >=
pageContext变量:用于取得其他相关用户的请求或页面的详细信息,等同于jsp中的PageContext对象;
${pageContext.request.requestURL}取得请求的URL
${pageContext.request.contextPath}取得服务应用的名称
${pageContext.request.method}取得HTTP的提交方法
${pageContext.request.protocol}取得使用的协议
${pageContext.request.remoteUser}取得登录用户名称
${pageContext.request.remoteAddr}取得登录用户IP
${pageContext.session.new}判断session是否为新的会员
${pageContext.session.id}判断session的ID号
JDBC(java database connectivity)是java访问数据库的一种规范,一组标准的java接口和类
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://127.0.0.1:3306/test";
//通过DriverManager获取连接
Connection conn=DriverManager.getConnection(url,"root","hello");
System.out.println("conn:"+conn);
//准备操作数据库
//Statement:用于执行静态SQL语句并返回它所生产结果的对象
Statement stm=conn.createStatement();
String sql="insert into test.new_table(t1,t2) values('t11','t22');";
Boolean ret =stm.execute(sql);
conn.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
package com.wzh.JDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/*
* 连接工厂
* 从面向对象的角度来说,凡是连接相关操作都给这个对象处理
*/
public class ConnectionFactory {
private static final String URL="jdbc:mysql://127.0.0.1:3306/test";
private static final String USER="root";
private static final String PASSWORD="hello";
private static final String DRIVER="com.mysql.jdbc.Driver";
/**
* 获取数据库连接
* @return 成功返回 java.sql.Connection
* 失败返回NULL
* */
public static Connection GetConnection(){
try {
Class.forName(DRIVER);
return DriverManager.getConnection(URL,USER,PASSWORD);
} catch (Exception e) {
System.out.println("%%%%%%%%%%%% 获取连接错误 %%%%%%%%%%%%%%");
e.printStackTrace();
return null;
}
}
/**
* 关闭数据库资源
* @param conn
* @param stm
* @param rs
*/
public static void Close(Connection conn,Statement stm,ResultSet rs)
{
try {
if(conn!=null) conn.close();
if(stm!=null) stm.close();
if(rs!=null) rs.close();
} catch (Exception e) {
System.out.println("%%%%%%%%%%%% 关闭连接错误 %%%%%%%%%%%%%%");
e.printStackTrace();
}
}
}
Statement 用法:
Connection conn=null;
Statement stm=null;
ResultSet rs=null;
try {
//加载驱动
conn= ConnectionFactory.GetConnection();
System.out.println("conn:"+conn);
//准备操作数据库
//Statement:用于执行静态SQL语句并返回它所生产结果的对象
stm=conn.createStatement();
String sql="select * from new_table";
rs =stm.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getString("t1"));
System.out.println(rs.getBoolean("boo"));
}
System.out.println(rs);
conn.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally{
ConnectionFactory.Close(conn, stm, rs);
}
PreparedStatement 用法:
Connection conn=null;
PreparedStatement stm=null;
ResultSet rs=null;
try {
//加载驱动
conn= ConnectionFactory.GetConnection();
System.out.println("conn:"+conn);
//准备操作数据库
//Statement:用于执行静态SQL语句并返回它所生产结果的对象
String sql="select * from new_table where t1=? and t2=?";
stm=conn.prepareStatement(sql);
stm.setString(1, "1");
stm.setString(2, "aa");
System.out.println("sql:"+sql);
rs =stm.executeQuery();
while(rs.next()){
System.out.println(rs.getString("t1"));
System.out.println(rs.getBoolean("boo"));
}
System.out.println(rs);
conn.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally{
ConnectionFactory.Close(conn, stm, rs);
}
来源:CSDN
作者:锭伟
链接:https://blog.csdn.net/weixin_43482275/article/details/103473261