咋连接数据库?实现页面跳转?
目录:
一. 页面跳转:
转发与重定向的区别:
二. 数据库连接:
JDBC连接数据库
一. 页面跳转:
转发:
request 对象:
用于客户端向服务器发送请求,
request 对象的 常用方法:
request.getRequestDispatcher(String location).forward(request,response);
转发的大概路径就是这样:
转发是服务器内部行为,共产生了一个请求,转发可以携带(request中的)数据,转发的页面路径不会发生改变。
重定向:
response 对象:
用于响应客户请求并向客户端输出信息,
response 对象的 常用方法:
response.sendRedirect(String location);
重定向的大概路径就是这样:
重定向是客户端行为,共产生了两个请求,重定向不能携带(request中的)数据,重定向的页面路径会发生改变。
两者的区别:
登录页面login:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="doLogin.jsp" method="post">
<p><input name="username" placeholder="请输入用户名"></p>
<p><input name="userpwd" placeholder="请输入密码"></p>
<p>
<button>登录</button>
</p>
</form>
</body>
</html>
服务器doLogin页面:(里面包含连接数据库)
<%@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"%>
<%
//写java语句
//网络中的数据传输用的都是字节 文字会产生乱码的情况
request.setCharacterEncoding("utf-8");//将请求中的字符编码设置为字节
//获取来自前端的数据(request)
String name=request.getParameter("username");
String pwd=request.getParameter("userpwd");
//1导入驱动(sqlserver,oracle,mysql),一定要执行 build path
//OracleDriver 加载oracle驱动类
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.编写连接语句
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//打开oracle服务:开两个(服务,连接) win+x,g
//打开1:OracleServerORCL
//打开2:OracleOraDb11g_home1TNSListener
//3.获得连接
Connection con=DriverManager.getConnection(url,"scott","123");
//4.获得预编译对象(执行对象)
PreparedStatement ps=con.prepareStatement("select * from t_user where user_name=? and user_pwd=?");
//给占位符赋值
ps.setString(1,name);
ps.setString(2,pwd);
//5.获得结果集(结果)
ResultSet rs=ps.executeQuery();
//6.判断【登录验证,页面跳转】
//js中的跳转:location.href='xxx'
//out.print("<script>location.href='home.jsp'</script>");
//使用java进行跳转
//【转发】:你找你爸要钱,你爸没有钱,他就会找你妈要钱,你妈给你爸钱,你爸把钱给你 产生了一个请求 在服务器内部
//【重定向】:你找你爸要钱,你爸没有钱,你爸喊你去找你妈要钱,你妈再给你钱 产生了两个请求 在客户端行为
//区别:
// 1.转发是服务器行为,重定向是客户端行为
// 2.转发可以携带数据(request中的数据),重定向不行
// 3.转发的页面路径不会发生改变,重定向的路径会发生改变
//登录的逻辑:需要跳转界面
if(rs.next()){
request.getRequestDispatcher("home.jsp").forward(request,response);
//【转发】request.getRequestDispatcher("home.jsp").forward(request,response);
//【重定向】response.sendRedirect("home.jsp");
//out.print("yes");//可以输出html语句
}else{
response.sendRedirect("home.jsp");
//out.print("no");
}
//7.关闭资源
if(con!=null&&con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
%>
首页home:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>我是首页</h1>
<h2>欢迎<%=request.getParameter("username") %>老大爷</h2>
<%--<h2><%=request.getParameter("userpwd") %></h2> --%>
</body>
</html>
运行结果如下图所示:(登录页面)
如果登录失败,会重新跳回登录页面,如果登录成功之后,则会跳进这个主页面 :
二. 数据库连接:
JDBC连接数据库:
JDBC 是Java数据库连接技术的简称,
提供连接各种常用数据库的能力
图片解析:
连接数据库:
7个基本步骤如下:
//1导入驱动(sqlserver,oracle,mysql),一定要执行 build path
//OracleDriver 加载oracle驱动类
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.编写连接语句
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//打开oracle服务:开两个(服务,连接) win+x,g
//打开1:OracleServerORCL
//打开2:OracleOraDb11g_home1TNSListener
//3.获得连接
Connection con=DriverManager.getConnection(url,"scott","123");
//4.获得预编译对象(执行对象)
PreparedStatement ps=con.prepareStatement("select * from t_user where user_name=? and user_pwd=?");
//给占位符赋值
ps.setString(1,name);
ps.setString(2,pwd);
//5.获得结果集(结果)
ResultSet rs=ps.executeQuery();
//6.判断【登录验证,页面跳转】
//登录的逻辑:需要跳转界面
if(rs.next()){
request.getRequestDispatcher("home.jsp").forward(request,response);
//【转发】request.getRequestDispatcher("home.jsp").forward(request,response);
//【重定向】response.sendRedirect("home.jsp");
//out.print("yes");//可以输出html语句
}else{
response.sendRedirect("home.jsp");
//out.print("no");
}
//7.关闭资源
if(con!=null&&con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
补充:(小知识点)
导入的驱动包应该放在 lib项目下面:
然后右键,选择 build path:
然后点击牛奶瓶,完成后牛奶瓶就会出现在这里:
以上就是今天的全部内容,感谢观看!