Java Web 03 (页面跳转&JDBC)

今日思维导图:

 


一、页面跳转方式(两种)

1、重定向 response : response.sendRedirect("success.jsp");

2、请求 request : request.getRequestDispatcher("success.jsp").forward(request, response);

两者之间的关系:

两者之间的区别:

//页面跳转方式
//1、重定向语法response ①能够将页面跳转,并且地址栏发生转变,但是不能将值传递到下一个页面 ③能够跳转到任意资源
//在客户端发挥作用
//response.sendRedirect("success.jsp");
//2.、转发 request ②能够将页面跳转,地址栏不发生改变,但是能将值传递到下一个值 ④只能跳转到当前页面
//在服务器端发生作用
//request.getRequestDispatcher("success.jsp").forward(request, response);

二、JDBC(连接数据库Oraacle)

主界面效果图展示如下:

代码展示如下:

 

<%@ 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>
	<h2> 注册界面</h2>
	<form action="dologin.jsp" method="post"> 
	ID:<input type="text" name="iid"><br>
	用户名:<input type="text" name="iname"><br>
	密码:<input type="password" name="ipwd"><br>
	性别:<input type="radio" name="isex" value="男">男
	<input type="radio" name="isex" value="女">女<br>
	爱好:<input type="checkbox" name="ihobby" value="干饭">干饭
	<input type="checkbox" name="ihobby" value="睡觉">睡觉
	<input type="checkbox" name="ihobby" value="网易云">网易云<br>
	地址:<select name="iaddress">
			<option value="湖南省">湖南省</option>
			<option value="湖北省">湖北省</option>
			<option value="河南省">河南省</option>
		</select><br>
	备注:<textarea rows="10" cols="15" name="ibak"></textarea></br>
	<input type="submit" name="登录">
	<input type="reset" name="清空">
	</form>
</body>
</html>

再根据其中name值获取该对象 代码展示如下:

<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="oracle.jdbc.driver.OracleDriver"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	//纯java代码
	//设置编码方式
	request.setCharacterEncoding("utf-8");
	//接收提交过来的值(ID&用户名&密码)
	String id = request.getParameter("iid");
	String name = request.getParameter("iname");
	String pwd = request.getParameter("ipwd");
	//取不同类型的值
	//取性别 地址 备注 都是根据name值获取值
	String sex = request.getParameter("isex");
	String address = request.getParameter("iaddress");
	String bak = request.getParameter("ibak");
	//获取爱好的值
	String[] ss = request.getParameterValues("ihobby");//返回类型是个字符串的数组
	String hobby = "";//用来拼接
	//循环遍历
	for(String s:ss){
		hobby+=s+",";//用逗号隔开 
	}
	//如果看不过最后的那个逗号 可以用substring截取掉
	//out.print(hobby);
	
	//jdbc连接Oracle  插入到数据库中
	
	//两个静态常量
	String URL="jdbc:oracle:thin:@localhost:1521:orcl";
	String CNAME="oracle.jdbc.driver.OracleDriver";
	//OracleDriver
	
	//记载驱动
	Class.forName(CNAME);
	
	//创建连接
	Connection con = DriverManager.getConnection(URL,"scott","tiger");
	
	//定义sql语句
	String sql="insert into tb_0325(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 查rs
	int n = ps.executeUpdate();//影响行数
	
	//关闭资源 增删改2个 查3个
	if(con!=null&&con.isClosed()==false){
		con.close();
	}
	else{
		ps.close();
	}
	//判断
	if(n>0){
		out.print("插入成功");
	}
	else{
		out.print("插入失败");
	}	
	//out.print(name+" "+pwd+" "+sex+" "+address+" "+bak);
	//页面跳转方式
	//假设法:假设数据表里存在用户名为admin 密码为123456
	//if("admin".equals(name)&&"123456".equals(pwd)){
		//说明登录成功 跳转到success.jsp
		//页面跳转方式2中
		//1、重定向语法response ①能够将页面跳转,并且地址栏发生转变,但是不能将值传递到下一个页面 ③能够跳转到任意资源
		//在客户端发挥作用
		//response.sendRedirect("success.jsp");
		//2.、转发 request ②能够将页面跳转,地址栏不发生改变,但是能将值传递到下一个值 ④只能跳转到当前页面
		//在服务器端发生作用
		//request.getRequestDispatcher("success.jsp").forward(request, response);//req.getreq.for
		
	//}
	//else{
		//说明登录失败 提示用户并返回登录界面 js的跳转属于重定向 因为地址栏发生了改变
		//out.print("<script>alert('用户名或密码有误');location.href='login.jsp';</script>");//输送到页面
		
	//}
%>

好了,以上就是今天的内容了,本节完。