hooyantsing's Blog

第65次课程_重定向和转发

字数统计: 1.5k阅读时长: 8 min
2019/10/16

源辰76班

第65次课程

2019.10.16

内容

重定向和转发[廖彦]

1.请求转发(request)和响应重定向(response)

||请求转发(request) |响应重定向(response) |
|地址栏 |不变 |变化 |
|转发方式 |服务器内部跳转 |服务器外部跳转 |
|效率 |高(C/S交互两次) |低(C/S交互四次) |
|跳转的资源(其他页面)|只能跳转至本服务器内其他资源|可以跳转至外部服务器其他资源|
|传递数据 |使用请求对象 |使用会话对象 |

页面跳转

请求转发

//获取转发器

RequestDispatcher rd =  request.getRequestDispatcher(“url“);

//执行转发

rd.forward(request, response);

响应重定向:

response.sendRedirect(“url“);

A.jsp

首页

| pageEncoding=”utf-8”%>

<!**DOCTYPE** html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd“>

<**html**>

<**head**>

<**meta** http-equiv=_”Content-Type”_ content=_”text/html; charset=utf-8”_>

<**title**>Insert title here</**title**>

</**head**>

<**body**>

<**p**>127.0.0.1/191013_Tomcat/1016/A.jsp</**p**>

<**h1**>A.jsp</**h1**>

<**a** href=_”D.jsp?type=1”_>”请求转发”方式跳转页面</**a**><**br**>

<**a** href=_”D.jsp?type=2”_>”响应重定向”方式跳转页面</**a**><**br**>

<**a** href=_”D.jsp?type=3”_>”请求转发”跳转到外部百度</**a**><**br**>

<**a** href=_”D.jsp?type=4”_>”响应重定向”跳转到外部百度</**a**><**br**>

<**a** href=_”D.jsp?type=0”_>不跳转页面</**a**><**br**>

</**body**>

</**html**>
<%@|

D.jsp

跳转中转页面

| pageEncoding=”utf-8”%>

<!**DOCTYPE** html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd“>

<**html**>

<**head**>

<**meta** http-equiv=_”Content-Type”_ content=_”text/html; charset=utf-8”_>

<**title**>Insert title here</**title**>

</**head**>

<**body**>

<%

    String type = request.getParameter(“type”);

if(“1”.equals(type)){

/*

       请求转发,仅在服务器内部转发,不能转发服务器以外的页面

       */

//获取转发器

       RequestDispatcher rd = request.getRequestDispatcher(“B.jsp”);

//执行转发

       rd.forward(request, response);

    }else if(“2”.equals(type)){

/*

       响应重定向,可以转发服务器以外的页面

       */

       response.sendRedirect(“C.jsp”);

    }else if(“3”.equals(type)){

       request.getRequestDispatcher(“http://www.baidu.com“).forward(request, response);

    }else if(“4”.equals(type)){

       response.sendRedirect(“http://www.baidu.com“);

    }else {

//不转发

    }

%>

<**h1**>D.jsp</**h1**>

</**body**>

</**html**>
<%@|

B.jsp

通过”请求转发”跳转到的页面

| pageEncoding=”utf-8”%>

<!**DOCTYPE** html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd“>

<**html**>

<**head**>

<**meta** http-equiv=_”Content-Type”_ content=_”text/html; charset=utf-8”_>

<**title**>Insert title here</**title**>

</**head**>

<**body**>

<**h1**>B.jsp</**h1**>

</**body**>

</**html**>
<%@|

C.jsp

通过”响应重定向”跳转到的页面

| pageEncoding=”utf-8”%>

<!**DOCTYPE** html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd“>

<**html**>

<**head**>

<**meta** http-equiv=_”Content-Type”_ content=_”text/html; charset=utf-8”_>

<**title**>Insert title here</**title**>

</**head**>

<**body**>

<**h1**>C.jsp</**h1**>

</**body**>

</**html**>
<%@|

2.数据传递

数据传递

请求转发

存入消息

request.setAttribute(“消息名”,参数名);

1
2
3
4
5
例如:
request.setAttribute("mgs","张三");

String name = "张三"
request.setAttribute("mgs",name);

取出消息

request.getAttribute(“消息名”);

响应重定向

存入消息

session.setAttribute(“消息名”, 参数名);

取出消息

response.getAttribute(“消息名”);

login.jsp

首页

通过form表单,提交表单(将表单数据拼接到域名后面,再跳转:域名? * )

| pageEncoding=”utf-8”%>

<!**DOCTYPE** html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd“>

<**html**>

<**head**>

<**meta** http-equiv=_”Content-Type”_ content=_”text/html; charset=utf-8”_>

<**title**>Insert title here</**title**>

</**head**>

<**body**>

<**h1**>登录系统</**h1**>

<**form** action=_”dologin.jsp”_>

<%**if**(request.getAttribute(“msg”)!=**null**){ %>

<**font** color=_”red”_>

<%=request.getAttribute(“msg”) %>

</**font**><**br**>

<%} %>

    账户:<**input** name=_”username”_><**br**>

    密码:<**input** name=_”password”_><**br**>

<**input** type=_”submit”_ value=_”登录”_><**br**>

</**form**>

</**body**>

</**html**>
<%@|

dologin.jsp

跳转中转页面

| pageEncoding=”utf-8”%>

<!**DOCTYPE** html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd“>

<**html**>

<**head**>

<**meta** http-equiv=_”Content-Type”_ content=_”text/html; charset=utf-8”_>

<**title**>Insert title here</**title**>

</**head**>

<**body**>

<%

    String username = request.getParameter(“username”);

    String password = request.getParameter(“password”);

if(“yc”.equals(username) && “123”.equals(password)){

//登陆成功

/*

       如果使用响应重定向跳转网页,推送对象时用会话对象的方法

       */

//使用会话对象推送数据

       session.setAttribute(“loginedUser”, username);

//使用响应重定向跳转页面

       response.sendRedirect(“main.jsp”);

    }else{

//登录失败

/*

       如果使用请求转发跳转网页,推送对象时用请求对象的方法

       */

//使用请求对象推送数据

       request.setAttribute(“msg”, “请填写正确的用户名和密码”);

//使用请求对象跳转页面

       request.getRequestDispatcher(“login.jsp”).forward(request, response);

    }

%>

</**body**>

</**html**>
<%@|

main.jsp

如果登录成功,则跳转至主页面

| pageEncoding=”utf-8”%>

<!**DOCTYPE** html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd“>

<**html**>

<**head**>

<**meta** http-equiv=_”Content-Type”_ content=_”text/html; charset=utf-8”_>

<**title**>Insert title here</**title**>

</**head**>

<**body**>

<**h1**>Hello<%=session.getAttribute(“loginedUser”) %></**h1**>

</**body**>

</**html**>
<%@|

CATALOG