目录
一,页面的跳转方式
1.js中的跳转
<script>localtion.href='home.jsp'<script>
//注意:一定要写在<script></script>中
2.Java中的跳转
(1)转发(作用于客户端)
转发的作用:在多个页面交互过程中实现请求数据的共享
转发的实现:
- RequestDispatcher对象
- forward()方法
代码如下:
request.getRequestDispatcher("xxx.jsp").forward(request,response);
图解如下:
客户端对服务器发送一个请求,服务器1没有数据,转到服务器2,服务器2再发送给服务器1,然后再响应给客户端。简而言之,就是转发产生一个请求(转发数据可以携带).
(2)重定向
response对象用于响应客户请求并向客户端输出信息
代码如下:
response.sendRedirect("xxx.jsp");
将会请求定位到一个不一样的URL。
图解展示:
客户端向服务器1发送一次请求,服务器1没有数据后,客户端再向服务器2发送一次请求,以此类推,直到拿到数据为止,图上总共发送两次请求。
转发和重定向的区别:
- 转发是在服务器端发挥作用,通过forward方法将提交信息在多个页面间进行传递。
- 转发是在服务器内部控制权的转移,客户端浏览器的地址栏不会显示出转向后的地址
- 重定向是在客户端发挥作用,通过请求新的地址实现页面转向
- 重定向是通过浏览器重新请求地址,在地址栏中可以显示转向后的地址
二,jdbc概念梳理
JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力
JDBC API(与数据库建立连接、执行SQL 语句、处理结果)
DriverManager :依据数据库的不同,管理JDBC驱动
Connection :负责连接数据库并担任传送数据的任务
Statement :由 Connection 产生、负责执行SQL语句
ResultSet:负责保存Statement执行后所产生的查询结果
三,连接数据库
数据库连接步骤:
准备好特定的jar包
并将该jar包放在WEB-INF文件下的lib文件中
注意:在导包前一定要把数据的服务打开,这里我们用的是Oracle
步骤:win+x,g->服务于应用管理->服务->打开以下两个服务
连接数据步骤如下:
//1.导入驱动(SQLserver,oracle,mysql)
<%@page import="oracle.jdbc.driver.OracleDriver"%>
//OracleDriver
//注意:在此之前一定执行build path
Class.forName("oracle.jdbc.driver.OracleDriver");//加载驱动
//2.连接语句
//sqlserver的连接语句
//jdbc:sqlserver:localhost:1433;databasename=ss
String URL="jdbc:oracle:thin:@localhost:1521:orcl";
//3.获得连接
Connection con=DriverManager.getConnection(URL, "scott", "sa123");
//4.获得预编译对象(执行对象)
PreparedStatement ps=con.prepareStatement(sql语句);//?指的是占位符
//5.占位符赋值
ps.setString(占位符位,xx);
//6.获得结果集
ResultSet rs=ps.executeQuery();
//7.判断
if(rs.next()){
request.getRequestDispatcher("xxx.jsp").forward(request, response);
}else{
response.sendRedirect("xxx.jsp");
}
//8.关闭资源
if(con!=null&&!con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
案例:
简单的登录案例,代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<from action="doLogin.jsp" method="post">
<p>
<input name="username" placeholder="请输入名字">
</p>
<p>
<input name="password" placeholder="请输入密码">
</p>
</p>
<button>登录</button>
</from>
</body>
</html>
当然执行之前少不了创建数据库
这里我们使用oracle创建一张简单的表
CREATE TABLE T_USER(
UUID NUMBER PRIMARY KEY,
UNAME VARCHAR2(20) NOT NULL,
UPWD VARCHAR2(20) NOT NULL
)
commit;
注意:这里我们在创建表格之后一定要把数据提交(commit)了。
连接数据库代码:
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//网络中的数据都是字节 如果是文字就会产生乱码的情况
request.setCharacterEncoding("UTF-8");//将请求中的字符全部编码设置为中文
//获取前端数据
String name=request.getParameter("username");//名字
String password=request.getParameter("password");//密码
//导入驱动(SQLserver,oracle,mysql)
//OracleDriver
//注意:在此之前一定执行build path
Class.forName("oracle.jdbc.driver.OracleDriver");//加载驱动
//连接语句
//sqlserver的连接语句
//jdbc:sqlserver:localhost:1433;databasename=ss
String URL="jdbc:oracle:thin:@localhost:1521:orcl";
//获得连接
Connection con=DriverManager.getConnection(URL, "scott", "sa123");
//获得预编译对象(执行对象)
PreparedStatement ps=con.prepareStatement("SELECT * FROM T_USER WHERE UNAME=? AND UPWD=?");//?指的是占位符
//占位符赋值
ps.setString(1,name);
ps.setString(2,password);
//获得结果集
ResultSet rs=ps.executeQuery();
//判断
if(rs.next()){
request.getRequestDispatcher("home.jsp").forward(request, response);
}else{
response.sendRedirect("login.jsp");
}
//关闭资源
if(con!=null&&!con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
%>
首页代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>main</title>
</head>
<body>
<h1>我是首页</h1>
<h2>欢迎 <%request.getParameter("username"); %>login</h2>
</body>
</html>
总结:这期的关键就是熟练数据库的连接的方式!下期给大家带来代码优化!