javaWeb----页面跳转方式&jdbc交互

 

一、页面跳转方式

 
    (1)javascript方式跳转
            window.location.href = "跳转的地址"

 



    (2)java方式跳转
        ① 转发
            1.1 概述
                由服务器端进行的页面跳转


            1.2 方法
                (1)获取转发器

         

              RequestDispatcher rd =  request.getRequestDispatcher("/跳转的地址")


                (2)实现转发

                         转发器对象.forward(request,response);
                        通常简写:  request.getRequestDispatcher("/跳转的地址").forward(request,response);


            1.3 特点
                (1)地址栏不发生变化,显示的是上一个页面的地址
                (2)请求次数:只有1次请求,因为转发是服务端行为。
                (3)根目录:http://localhost:8080/项目地址/,包含了项目的访问地址
                (4)请求域中数据不会丢失


       ② 重定向
            2.1 概述
                由浏览器端进行的页面跳转


            2.2 方法
                response.sendRedirect("要跳转的地址");


            2.3 特点
                (1)地址栏:显示新的地址
                (2)请求次数:2次
                (3)根目录:http://localhost:8080/ 没有项目的名字
                (4)请求域中的数据会丢失,因为是2次请求


        ③ 注意事项
            3.1 什么时候使用转发,什么时候使用重定向?
                   如果要保留请求域中的数据,使用转发,否则使用重定向。
                   以后访问数据库,增删改使用重定向,查询使用转发。


            3.2 转发或重定向后续的代码是否还会运行?
                    无论转发或重定向后续的代码都会执行


        ④ 重定向和转发的区别


            

 
 <%
     //设置编码格式
   

  request.setCharacterEncoding("utf-8");


     //获取用户名和密码
     

String username = request.getParameter("username");
     String password = request.getParameter("password");
 


     

     if("admin".equals(username)){
         out.println("<script>");
         out.println("alert('该用户已被注册,请重新进行注册');");
         out.println("location.href='register.jsp'");
         out.println("</script>");


   

 }else{//可以注册
         //直接可以跳转到index.jsp
         /* 通过location页面跳转 */
         
           out.println("<script>");
           out.println("location.href='index.jsp'");
           out.println("</script>"); 


         
         /* 通过Java的方式  转发进行跳转 */
         //response 内置对象  响应

          request.getRequestDispatcher("index.jsp").forward(request, response);     
         


         
         /* 通过Java的方式   重定向进行跳转 */
   

     response.sendRedirect("index.jsp");


         
         
         /* lcoation和重定向(response.sendRedirect("index.jsp");)是一样
            地址栏发生改变,数据不会保留
         */
         /* 转发
             地址栏不会发生改变,数据会保留  可以通过request对象进行获取。
         */
     

 request.getRequestDispatcher("index.jsp").forward(request, response); 
     }


     
     
 
 %>
(3)超链接方式

             <a href = "路径">资源地址</a>

           携带参数的注意事项:  第一个参数之前 (?)  参数与参数之间使用(&)

 
    <!-- 携带参数的注意事项:  第一个参数之前 (?)  参数与参数之间使用(&) -->
    <a href = "index.jsp?username=admin&password=123">跳转到主页</a>
    
    <!-- js跳转 -->
    <hr/>
    <!-- 通过location跳转可以携带参数    后面可以通过request对象进行获取 -->
    <button onclick = "add();">跳转到index.jsp</button>
    <script type="text/javascript">
        function add(){
            /* 通过js的location对象进行页面跳转  */
            location.href = "index.jsp?result=123";
        }
    </script>
    
二、JDBC API
    (1)主要功能
            与数据库建立连接、执行SQL 语句、处理结果


    (2)常用对象
        ① DriverManager 
            依据数据库的不同,管理JDBC驱动
        ② Connection 
            负责连接数据库并担任传送数据的任务
        ③ PreparedStatement 
            由 Connection 产生、负责执行SQL语句
        ④ ResultSet
            负责保存Statement执行后所产生的查询结果
   (3) 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.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
  <%


        //1.设置编码
 

       request.setCharacterEncoding("utf-8");


        //2.获取数据
      

  String username = request.getParameter("username");
        String password = request.getParameter("password");


        
        //进行Oracle数据库交互
        //定义两个变量存储用户名以及密码
   

     String uname = "";
        String pwd = "";
            


        //连接对象定义
      

  Connection conn = null;
        PreparedStatement ps = null;//执行对象


        //结果集对象
     

   ResultSet rs = null;
        try{
            //加载驱动
            Class.forName("oracle.jdbc.driver.OracleDriver");
            //b.建立连接
            String url = "jdbc:oracle:thin:@localhost:1521:orcl";
            conn = DriverManager.getConnection(url, "scott", "123");
            //编写sql语句传入执行方法返回执行对象
            String sql = "select * from tb_users where username = ? and upassword = ?";
            ps = conn.prepareStatement(sql);
            //占位符赋值
            ps.setString(1, username);
            ps.setString(2, password);
            //返回结果集对象
            rs = ps.executeQuery();
            //遍历或者判断
            if(rs.next()){
                uname = rs.getString(2);
                pwd = rs.getString(3);
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            if(conn!=null&&!conn.isClosed()){
                conn.close();
            }
            if(ps!=null){
                ps.close();
            }
            if(rs!=null){
                rs.close();
            }
        }
        
        if(uname!="" && pwd!=""){
            out.println("<script>alert('你已注册,请登录');location.href='login.jsp';</script>");
        }else{
            request.getRequestDispatcher("registerhome.jsp").forward(request, response);
        }
         
    %>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值