JavaWEB(页面跳转方式&JDBC交互)

22 篇文章 1 订阅

一.页面跳转方式

1.1 JavaScript方式跳转

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!-- 
		页面跳转的方式 
			1.通过HTML超链接的方式进行跳转
				<a href = "路径">资源地址</a>
			2.通过js的location对象进行页面跳转
				window.location.href = "路径";
	-->
	<!-- 通过超链接跳转到index.jsp页面 -->
	
	<button onclick = "add();">跳转到index.jsp</button>
	<script type="text/javascript">
		function add(){
			/* 通过js的location对象进行页面跳转  */
			location.href = "index.jsp?result=123";
		}
	</script>
</body>
</html>


<%@ page import="java.util.Scanner" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h2>欢迎来到我的主页</h2>
	<%
		request.setCharacterEncoding("utf-8");//设置编码
		//获取超链接上携带的参数
		String username = request.getParameter("username");
		out.println("用户名为: "+username);
		
		/* 获取jslocation对象.href中携带的参数 */
		String result = request.getParameter("result");
		out.println("<br/>result = "+result);
	%>
</body>
</html>

1.2 Java方式跳转

① 转发 

概述 : 由服务端进行的页面跳转

方式 : 

(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) 转发或重定向后续的代码是否还会运行?
    无论转发或重定向后续的代码都会执行

④ 重定向和转发的区别

 

二.JDBC

1.1 主要功能

与数据库建立连接,执行SQL语句,处理结果

1.2 常用对象

① DriverManager 
    依据数据库的不同,管理JDBC驱动

② Connection 
    负责连接数据库并担任传送数据的任务

③ PreparedStatement 
    由 Connection 产生、负责执行SQL语句

④ ResultSet
    负责保存Statement执行后所产生的查询结果

1.3 java通过jdbc连接Oracle数据库进行交互的步骤

① 加载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"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="doRegistered.jsp" method="post">
     <table>
	     <h2>注册界面</h2>
		<tr>
			<td>用户名:</td>
			<td><input type="text" name="uname"></td>
		</tr>
		<tr>
			<td>密码:</td>
			<td><input type="password" name="upwd"></td>
		</tr>
		<tr>
			<td>性别:</td>
			<td><input type="text" name="usex"></td>
		</tr>
		<tr>
			<td>爱好:</td>
			<td><input type="text" name="uhobby"></td>
		</tr>
		<tr>
			<td>地址:</td>
			<td><input type="text" name="uaddress"></td>
		</tr>
         <tr>
			<td rowspan="2"><input type="submit" value="注册"></td>
		</tr>
	</table>
     </form>
</body>
</html>

//中转页面

<%@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+"<br>"
        		+"密码:"+pwd+"<br>"
        		+"性别:"+sex+"<br>"
        		+"爱好:"+hobby+"<br>"
        		+"地址:"+address
        		);
        
        if(name != "" && pwd != "" && sex !="" && hobby != "" && address != ""){
        	out.println("<script>");
     		out.println("alert('该用户已被注册,请重新进行注册');");
     		out.println("location.href='Registered.jsp'");
     		out.println("</script>");
        }else{
        	request.getRequestDispatcher("Registered1.jsp").forward(request, response); 
        }
        
        
    %>

//主页面

<%@ 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>欢迎<%= request.getParameter("uname") %>  注册成功</h1>
</body>
</html>

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值