页面跳转方式:
JSP的跳转方式有很多种;
- 使用HTML语言编写跳转方法
- 使用Java语言编写跳转方法
HTML:
- 使用 location.href=“xxx”(在JSP编写中需要使用scrip标签包裹起来)
- 使用标签进行跳转
Java:
转发:request
<% //xx是你需要跳转的jsp文件,也就是你需要跳转的界面 request.getRequestDispatcher("xx.jsp").forward(request, response); %>
- 转发是服务器行为
- 转发可以携带请求(request)中的数据
- 转发的界面路径(跳转后的)不会发生改变
重定向:response
<% //xx是你需要跳转的jsp文件,也就是你需要跳转的界面 response.sendRedirect("xx.jsp"); %>
- 重定向是客户端行为
- 重定向不可以携带请求中的数据
- 重定向的界面路径(跳转后的)会发生改变
JDBC:
使用JDBC前需要载入对应jar包,然后获得驱动。
将jar包放到指定的目录下面(注意不要放错地方了)
右键jar包,点击Build Path,然后点击Add to Build Path(创建奶瓶)
之后就可以连接数据库了
JDBC五部曲:
- 装载相应数据库的JDBC驱动并进行初始化
- 建立JDBC和数据库之间的Connection连接
- 创建Statement或者PreparedStatement接口,执行SQL语句
- 处理和显示结果
- 释放资源
实例:
登录界面:login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<%--
表单(form)
action:表单提交的地址
method:表单提交的方式
* get(默认) 显示在地址栏上,数据长度有限制
* post 不显示在地址栏上,且数据长度没有限制
必须携带name属性,不然接收不到数据
--%>
<form action="doLogin.jsp" method="post">
<p>
<input type="text" name="username" placeholder="请输入用户名">
</p>
<p>
<input type="password" name="password" placeholder="请输入密码">
</p>
<p>
<button>登录</button>
</p>
</form>
</body>
</html>
效果如下:
处理登录请求:doLogin.jsp
<%@page import="java.sql.ResultSet"%>
<%@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");//修改请求中的字符编码
//获取来自于前端的数据
String username=request.getParameter("username");
String password=request.getParameter("password");
//导入驱动(sqlserver,oracle,mysql),一定要执行 build path,且需要导入对应的jar包
//OracleDriver
Class.forName("oracle.jdbc.driver.OracleDriver");//这里使用的是oracle的驱动
//编写连接语句
String URL="jdbc:oracle:thin:@localhost:1521:orcl";
//获得连接
Connection con=DriverManager.getConnection(URL, "scott", "tiger");
//获得预编译对象(执行对象)
String sql="SELECT * FROM TB_USER WHERE USE_NAME=? AND USE_PWD=?";
PreparedStatement ps=con.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2,password);
//获得结果集
ResultSet rs=ps.executeQuery();
//做登录验证
if(rs.next()){
//转发(携带请求数据)
//request.getRequestDispatcher("home.jsp").forward(request, response);
//重定向(不携带请求数据)
response.sendRedirect("home.jsp");
}else{
//账号错误刷新登录界面
response.sendRedirect("login.jsp");
}
//关闭资源
if(con!=null&&!con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
%>
主页:home.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<h1>绥彼岸首页</h1>
<h1>欢迎回家</h1>
<%
//获取转发过来的数据
//request.getParameter("username");
%>
</body>
</html>
登录成功后的效果如下(页面放大200%):