1.页面跳转方式
1.javascript方式跳转
window.location.href = "跳转的地址"
2.html超链接跳转
3.java方式跳转
3.1 转发
概述
由服务器端进行的页面跳转
方法
(1)获取转发器====》RequestDispatcher rd = request.getRequestDispatcher("/跳转的地址")
(2)实现转发====》转发器对象.forward(request,response);
通常简写:request.getRequestDispatcher("/跳转的地址").forward(request,response);
特点
(1)地址栏不发生变化,显示的是上一个页面的地址
(2)请求次数:只有1次请求,因为转发是服务端行为。
(3)根目录:http://localhost:8080/项目地址/,包含了项目的访问地址
(4)请求域中数据不会丢失
3.2 重定向
概述
由浏览器端进行的页面跳转
方法
response.sendRedirect("要跳转的地址");
特点
(1)地址栏:显示新的地址
(2)请求次数:2次
(3)根目录:http://localhost:8080/ 没有项目的名字
(4)请求域中的数据会丢失,因为是2次请求
2.jdbc交互
JDBC
主要功能
与数据库建立连接、执行SQL 语句、处理结果
常用对象
DriverManager
依据数据库的不同,管理JDBC驱动
Connection
负责连接数据库并担任传送数据的任务
PreparedStatement
由 Connection 产生、负责执行SQL语句
ResultSet
负责保存Statement执行后所产生的查询结果
java通过jdbc连接Oracle数据库进行交互的步骤
1、加载JDBC驱动
Class.forName(JDBC驱动类);
2、与数据库建立连接
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","admin");
3、发送SQL语句,并得到返回结果
4、处理返回结果
5、释放资源
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//该页面的作用:获取表单提交的数据以及进行数据库交互
//交互完成后可以根据不同的需求进行页面跳转(lcoation,request,response)
//1.设置编码
request.setCharacterEncoding("utf-8");
//2.获取表单提交的用户和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
String uname = "";//接收查询的用户
String pwd = "";//接收查询的密码
//3.数据库交互
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try{
//1.加载驱动,载入驱动包.jar
//OracleDriver
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.建立连接
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
conn = DriverManager.getConnection(url, "scott", "123");
//3.编写对应的sql语句
String sql = "select * from tb_t281_0328_users where username = ? and password = ?";//登录 查询
//4.通过连接对象调用特定的方法传入sql语句返回执行对象
ps = conn.prepareStatement(sql);
//5.如果有占位符那么通过执行对象给占位符进行赋值
ps.setString(1, username);
ps.setString(2, password);
//6.增加|删除|修改---返回所影响的行数即可 ,查询---返回结果集对象
rs = ps.executeQuery();//根据执行对象调用方法返回结果集
//7.增加|删除|修改--判断所影响的行数即可, 查询--遍历结果集
if(rs.next()){//如果结果集中存在查询到记录
uname = rs.getString(2);
pwd = rs.getString(3);
}
//输出查询的结果
//out.println("用户名: "+uname);
//out.println("<br/>密码: "+pwd);
}catch(Exception e){
e.printStackTrace();
}finally{
//8.操作完毕后----关闭所有的数据库连接对象
try{
if(conn!=null && !conn.isClosed()){
conn.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
}catch(Exception e2){
e2.printStackTrace();
}
}
//页面跳转的判断 根据uname和pwd
if(""!=uname && ""!=pwd){//登录OK
//页面跳转 请求转发
request.getRequestDispatcher("home.jsp").forward(request, response);
}else{//为空 登录失败
out.println("<script>alert('账号或密码错误');location.href='login.jsp'</script>");
}
//4.判断结果跳转到指定的页面去
%>