JavaWeb03(页面跳转方式&JDBC)

目录

1.实现管理员登录

2.使用JSP访问数据库

3.实现新闻发布的功能

使用response对象处理响应

(2)重定向

response对象用于响应客户请求并向客户端输出信息 

代码如下:

out.print("<srcipt>alert('登录失败');location.href='login.jsp';<srcipt>");

使用JDBC访问数据库

 客户端向服务器1发送一次请求,服务器没有数据后,客户端再向服务器发送一次请求,以此类推,直到拿到数据为止

 

 

转发和重定向的区别:

1.转发是在服务器端发挥作用,通过forward方法将提交信息在多个页面间进行传递。
2.转发是在服务器内部控制权的转移,客户端浏览器的地址栏不会显示出转向后的地址
3.重定向是在客户端发挥作用,通过请求新的地址实现页面转向
4.重定向是通过浏览器重新请求地址,在地址栏中可以显示转向后的地址

页面的转发:

转发的作用:在多个页面交互过程中实现请求数据的共享

转发的实现: RequestDispatcher对象 forward()方法

JDBC:

JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力

 JDBC API可做三件事:与数据库建立连接、执行SQL 语句、处理结果

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

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

Statement :由 Connection 产生、负责执行SQL语句  

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

案例:

js的跳转属于哪一种?是属于重定  因为地址栏发生了改变login->dologin->login

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    //设置编码方式
    request.setCharacterEncoding("utf-8");
    //接收表单的值:用户名 密码 根据name值取value的值
    String name=request.getParameter("iname");
    String pwd=request.getParameter("ipwd");
    //假设我的数据表里面已经存在用户admin  密码为123456
    if("admin".equals(name)&&"123456".equals(pwd)){
    	//说明登录成功  跳转到success.jsp
    	//页面跳转两种方式
    	//1.重定向response
    	//能够将页面跳转 地址栏发生了改变 但是不能将值传递到下一个界面能够跳转到任意资源
    	response.sendRedirect("http://www.baidu.com");
    	
    	//2.转发requset
    	//能够将页面跳转  能够将值传递下一个界面  但是地址栏不发生改变而是停留在了之前的界面
    	//只能够转发到当前的项目资源  
         //request.getRequestDispatcher("success.jsp").forward(request,response);
    }else{
    	//说明登录失败 提示用户并返回登录界面  js的跳转属于哪一种?是属于重定  因为地址栏发生了改变login->dologin->login
    	out.print("<srcipt>alert('用户名或者密码有误');location.href='login.jsp';<srcipt>");
    }
    //out.print(name+" "+pwd);
%>

 

<%@page import="jdk.internal.org.objectweb.asm.tree.IntInsnNode"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
//设置编码方式
request.setCharacterEncoding("utf-8");
//接收表单的值: id 用户名 密码 根据name值取value值
String id=request.getParameter("iid");
String name=request.getParameter("iname");
String pwd=request.getParameter("ipwd");
//取表单的其它的值
//取性别 地址 备注
String sex=request.getParameter("isex");
String address=request.getParameter("iaddress");
String bak=request.getParameter("ibak");
//取爱好 多选
String[] ss=request.getParameterValues("ihobby");
String hobby="";//做拼接
//循环遍历
for(String a:ss){
 out.print(a);
 hobby+=a+",";//拼接 用逗号隔开
 
} 
//如果看不惯最后那个逗号 建议大家用substring截取掉
//out.print(hobby);

//jdbc连接Oracle把这个用户信息保存到数据库中
//作业:用触发器+序列实现标识列效果 sid

//两个字符串
String URL="jdbc:oracle:thin:@localhost:1521:orcl";
String CNAME="oracle.jdbc.driver.OracleDriver";
//OracleDriver

//加载驱动
Class.forName(CNAME);

//创建连接
Connection con=DriverManager.getConnection(URL,"scott","123");

//定义sql字符串
String sql="insert into tb_0328(sid,sname,spwd,ssex,shobby,saddress,sbak)values(?,?,?,?,?,?,?)";

//获得执行对象
PreparedStatement ps=con.prepareStatement(sql);

//给占位符赋值
ps.setInt(1,Integer.parseInt(id));//string-->int
ps.setString(2,name);
ps.setString(3,pwd);
ps.setString(4,sex);
ps.setString(5,hobby);
ps.setString(6,address);
ps.setString(7,bak);

//开始执行
//---增删改 影响行数 int
//---查 结果集 集合
int n=ps.executeUpdate();//获取影响行数

//关闭资源
//---增删改 2个
//---查 3个
if(con!=null&&!con.isClosed()){//不为空且没有关
 con.close();
}
if(ps!=null){
 ps.close();
}

//判断
if(n>0){
 response.sendRedirect("success.jsp");
}
else{
 out.print("插入失败");
}


//out.print(sex+" "+address+" "+bak);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值