页面跳转
转发
对应request对象
request对象用于客户端向服务器发送请求
request对象常用方法:
request.getRequestDispatcher(String location).forward(request, response);
重定向
对应response对象
response对象用于响应客户请求并向客户端输出信息
response.sendRedirect(String location):将请求重新定位到一个不同的URL
转发和重定向的区别
转发携带信息,重定向不携带信息
较详细的对象方法请回顾上一篇文章
数据库连接
基本步骤
1.jar包,导入驱动包(sqlserver,oracle,mysql),一定要执行 build path
OracleDriver(alt+/)导包语句:oracle.jdbc.driver.OracleDriver
加载驱动:
Class.forName("oracle.jdbc.driver.OracleDriver");
2.编写连接语句
String URL="jdbc:oracle:thin:@localhost:1521:orcl";//orcl中的那一个数据库
3.获得连接
Connection con=DriverManager.getConnection(URL, "scott", "xyf123");
4.获得预编译对象(执行对象)
PreparedStatement ps=con.prepareStatement("select * from xx表 where xx=? ");
给占位符复制
ps.setString(1, xx);
ps.setString(2, xx);....
5.获得结果集
ResultSet rs=ps.executeQuery();
6.判断是否在数据库查到用户输入的数据[登陆验证 页面跳转]
7.关闭连接
在执行数据库连接时需要注意数据库服务是否开启,这里以oracle为例,需要打开服务和监听步骤为下: win+x,再点g启动计算机管理
再点击服务和应用程序
再点击服务
找到OracleOraDb11g_home1TNSListener和OracleServiceORCL,打开即可
JSP主界面main
<%@ 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>
</body>
</html>
登录界面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="get">
<p>
<input type="text" name="username" placeholder="请输入用户名">
</p>
<p>
<input type="password" name="password" 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="org.apache.tomcat.dbcp.dbcp2.DriverManagerConnectionFactory"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//获取用户提交的表单信息
String username=request.getParameter("username");//从请求中取表单数据,将前端的值发给后端
String password=request.getParameter("password");
//1.jar包,导入驱动包(sqlserver,oracle,mysql),一定要执行 build path
//OracleDriver(alt+/)导包语句oracle.jdbc.driver.OracleDriver
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.编写连接语句
String URL="jdbc:oracle:thin:@localhost:1521:orcl";//orcl中的那一个数据库
//3.获得连接
Connection con=DriverManager.getConnection(URL, "scott", "xyf123");
//4.获得预编译对象(执行对象)
PreparedStatement ps=con.prepareStatement("select * from user03 where uname=? and upwd=? ");
//给占位符复制
ps.setString(1, username);
ps.setString(2, password);
//5.获得结果集(结果)
ResultSet rs=ps.executeQuery();
//网络中的数据传输都是字节 文字会乱码
request.setCharacterEncoding("UTF-8");//将请求中的乱码设置为中文
//6.判断是否在数据库查到用户输入的数据[登陆验证 页面跳转]
//登录成功就跳转到主界面
if(rs.next()){//遍历数据库中的结果集
//登陆成功一定要使用转发跳到首页,才会有用户数据
//转发的界面路径不会发生改变:停留再doLogin路径
request.getRequestDispatcher("main.jsp").forward(request, response);
//2,重定向到首页
//response.sendRedirect("main.jsp");//用户数据为null
}else{
//登陆失败跳到登陆页面,不需要原来的用户填写的数据,重定向
response.sendRedirect("login.jsp");
}
//7.关闭连接
if(con!=null&&con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
%>
%>
在登陆成功的情况下,我在doLogin中使用的是转发的跳转界面的方式,所以能够拿到客户端的数据,而且,转发的界面路径不会发生改变(即使跳转到了主界面main但是界面路径还是停留在doLogin界面)
你要尽全力保护你的梦想。那些嘲笑你梦想的人,他们注定失败,他们想把你变成和他们一样。我坚信,只要心中有梦想,我就会与众不同。你也是。