标签:服务 request xtend alt code std 职位 throw prot
一、服务器重定向
服务器重定向又叫做服务器转发和服务器跳转,在大部分的开发中从用户发送请求到看到数据会经历如下过程:
1.用户发送请求到服务器
2.服务器会将请求交给对应的控制器(目前是Servlet)处理,在控制器中调用业务层方法取得数据
3.之后将取得数据保存到request内置对象
4.然后在跳转到页面将保存在request内置对象中的数据再次取出来之后显示到页面,用户就有能够看到信息
总结:服务器端重定向(跳转,转发)的特征
1.实现的方式是调用RequestDispatcher类的forword()方法
2.服务器端转发浏览器的地址栏信息不会发生改变
3.使用服务器端转发之后,可以在jsp页面中取得保存在request内置对象中的属性
4.使用${参数名}在jsp中取得对应的值的方式叫做EL表达式
服务器重定向简单demo,实现数据库中的雇员信息保存到request内置对象并在jsp中显示
public class EmpServlet extends HttpServlet{ //取得业务层实现类对象 private IEmpService empservice=(IEmpService)ServiceFactory.getInstance(IEmpServiceImpl.class); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //将雇员信息保存到requset内置对象 Integer empno = Integer.parseInt(req.getParameter("id")); try { //将查询到的数据保存到request内置对象 req.setAttribute("emp", empservice.findEmpById(empno)); //跳转显示雇员的页面 //取得实现跳转的对象 RequestDispatcher dispatcher = req.getRequestDispatcher("/pages/emp.jsp"); //开始转发 dispatcher.forward(req, resp); } catch (Exception e) { e.printStackTrace(); } } }
jsp代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1> 显示雇员的信息 ${emp} </h1> <table border="1"> <tr> <td>编号</td><td>姓名</td><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.mgr}</td> <td>${emp.hiredate}</td> <td>${emp.sal}</td> <td>${emp.comm}</td> <td>${emp.deptno}</td> </tr> </table> </body> </html>
二、客户端重定向
客户端重定向又叫做客户端转发,就是每次进行的转发都是客户端的一个新的请求。实现客户端转发的方式有很多,如页面的超链接转发、表单提交、js中使用window.locatino.href实现 的都是客户端转发,但是以上的的转发是在客户端直接实现的,也可以在servlet中实现客户端转发,要在servlet实现客户端转发需要使用到response内置对象的一个方法sendRedirect("转发的路径")。
总结:客户端重定向(转发)的特征
1.浏览器地址栏信息改变,不再是提交表单的路径
2.客户端转发就是发送了一次新的请求,在整个登录中发送了两次请求,第一次点击登录按钮提交表单时候的请求,第二次在servlet中使用sendRediect方法实现的跳转(跳转到欢迎页面)
3.客户端转发之后保存在request内置对象中的属性不存在了,因为是一次新的请求,而request只能表示当次表示请求
与服务器端转发的区别
1.服务器端转发时浏览器的地址栏信息没有发生改变
2.服务器端转发欢迎页面(jsp页面)之后依然可以取得保存在request内置对象中的属性
3.服务器端转发对于客户端来就只发送了一次请求
标签:服务 request xtend alt code std 职位 throw prot
原文地址:https://www.cnblogs.com/whymoney1000/p/10742580.html