服务器跳转
服务器跳转又叫做服务器端转发还可以叫作服务器端重定向,在大部分的开发中当:
1.用户发送请求到服务器
2.服务器会将请求交给对应的控制器(servlet)处理,在控制器中调用业务层方法取得数据
3.之后将取得的数据保存到request内置对象
4.然后在跳转到页面将保存在request内置对象中的数据再次取出来之后显示到页面(用户看到信息)
服务器端跳转
将雇员的信息保存到request内置对象
package com.xie;
import java.io.IOException;
import java.util.Date;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
public class EmpServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//调用业务层的方法取得雇员信息
Emp emp = new Emp(1001, "雅典娜", "智慧女神", 50000.0, new Date(), 7788, 10000.0, 1);
//将以上的对象保存到request内置对象中
req.setAttribute("emp", emp);
//取得实现服务器端重定向的对象
RequestDispatcher dispatcher = req.getRequestDispatcher("/emp.html");
//跳转到页面(使用的就是服务器端重定向)
dispatcher.forward(req, resp);
}
}
emp.html
<body>
<h1>显示雇员的信息</h1>
<table border="1">
<tr>
<td>雇员编号</td><td>雇员姓名</td><td>雇员职位</td><td>雇员薪资</td><td>部门编号</td>
</tr>
<tr>
<td>7964</td><td>雅典娜</td><td>智慧女神</td><td>50000.00</td><td>10</td>
</tr>
</table>
</body>
此时实现了重定向,但是没有在页面取得保存在request内置对象中的雇员的信息,此时需要将页面改为动态页面(*.jsp)
定义emp.jsp文件取得雇员信息
<body>
<h1>
显示雇员的信息
${emp}
</h1>
<table border="1">
<tr>
<td>雇员编号</td><td>雇员姓名</td><td>雇员职位</td><td>雇员薪资</td><td>入职日期</td><td>部门编号</td>
</tr>
<tr>
<td>${emp.empno}</td><td>${emp.ename}</td><td>${emp.job}</td>
<td>${emp.sal}</td><td>${emp.hiredate}</td><td>${emp.deptno}</td>
</tr>
</table>
</body>
以上在jsp中使用${key 值.对象名}的方式取得保存在request内置对象中的方式叫作EL表达式(Expression language)
总结:
-
服务器端(转发)跳转的特征
实现的方式是调用RequestDispatcher类的forward()方法实现服务器端转发浏览器的地址栏信息不回发生改变
使用服务器端转发后,可以在jsp页面中取得保存在request内置对象中的属性
-
使用${参数名}在jsp中取得对应的值的方式叫作EL表达式