<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%@ page import="java.util.Scanner" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
欢迎来到我的主页
<%
request.setCharacterEncoding("utf-8");//设置编码
//获取超链接上携带的参数
String username = request.getParameter("username");
out.println("用户名为: "+username);
/* 获取jslocation对象.href中携带的参数 */
String result = request.getParameter("result");
out.println("
result = "+result);
%>
① 转发
概述 : 由服务端进行的页面跳转
方式 :
(1)获取转发器====》RequestDispatcher rd = request.getRequestDispatcher("/跳转的地址")
(2)实现转发====》转发器对象.forward(request,response);
通常简写:request.getRequestDispatcher("/跳转的地址").forward(request,response);
特点 :
(1)地址栏不发生变化,显示的是上一个页面的地址
(2)请求次数:只有1次请求,因为转发是服务端行为。
(3)根目录:http://localhost:8080/项目地址/,包含了项目的访问地址
(4)请求域中数据不会丢失
② 重定向
概述 : 由浏览器端进行的页面跳转
方法 : response.sendRedirect("要跳转的地址");
特点 :
(1)地址栏:显示新的地址
(2)请求次数:2次
(3)根目录:http://localhost:8080/ 没有项目的名字
(4)请求域中的数据会丢失,因为是2次请求
③ 注意事项
(1) 什么时候使用转发,什么时候使用重定向?
如果要保留请求域中的数据,使用转发,否则使用重定向。
以后访问数据库,增删改使用重定向,查询使用转发。
(2) 转发或重定向后续的代码是否还会运行?
无论转发或重定向后续的代码都会执行
④ 重定向和转发的区别
与数据库建立连接,执行SQL语句,处理结果
① DriverManager
依据数据库的不同,管理JDBC驱动
② Connection
负责连接数据库并担任传送数据的任务
③ PreparedStatement
由 Connection 产生、负责执行SQL语句
④ ResultSet
负责保存Statement执行后所产生的查询结果
① 加载JDBC驱动
Class.forName(JDBC驱动类);
② 与数据库建立连接
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","admin");
③ 发送SQL语句,并得到返回结果
④ 处理返回结果
⑤ 释放资源
//Oracle数据库
create table tb_user(
uuid number primary key,
uname varchar2(100),
upwd varchar2(100),
usex varchar2(2),
uhobby varchar2(100),
uaddress varchar2(100)
)
insert into tb_user values(1,'小哈','123','男','打游戏','湖南');
insert into tb_user values(2,'小席','123','女','打小哈','湖南');
insert into tb_user values(3,'小话','123','男','打小席','湖南');
commit;
select * from tb_user
//注册页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
//中转页面
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//设置编码
request.setCharacterEncoding("utf-8");
//获取数据
String uname=request.getParameter("uname");
String upwd=request.getParameter("upwd");
String usex = request.getParameter("usex");
String uhobby = request.getParameter("uhobby");
String uaddress=request.getParameter("uaddress");
//进行oracle数据库交互
//定义5个变量存储用户名,密码,性别,爱好,地址
String name="";
String pwd="";
String sex="";
String hobby="";
String address="";
//连接对象
Connection conn=null;
//执行对象
PreparedStatement ps=null;
//结果集对象
ResultSet rs=null;
try{
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立连接
conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "123");
//编写SQL语句
String sql="select * from tb_user where uname=? and upwd=? and usex=? and uhobby=? and uaddress=?";
//将SQL语句传入执行对象中并返回
ps=conn.prepareStatement(sql);
//占位符赋值
ps.setString(1, uname);
ps.setString(2, upwd);
ps.setString(3, usex);
ps.setString(4, uhobby);
ps.setString(5, uaddress);
//返回结果集对象
rs=ps.executeQuery();
//遍历或判断
if(rs.next()){
//有用户返回出来 用变量接收
name=rs.getString(3);
pwd=rs.getString(3);
sex=rs.getString(2);
hobby=rs.getString(3);
address=rs.getString(5);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(conn != null && !conn.isClosed()){
conn.close();
}
if(ps != null){
ps.close();
}
if(rs != null){
rs.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
//页面跳转
out.print(
"用户名:"+name+"
"
+"密码:"+pwd+"
"
+"性别:"+sex+"
"
+"爱好:"+hobby+"
"
+"地址:"+address
);
if(name != "" && pwd != "" && sex !="" && hobby != "" && address != ""){
out.println("");
}else{
request.getRequestDispatcher("Registered1.jsp").forward(request, response);
}
%>
//主页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
欢迎<%= request.getParameter("uname") %> 注册成功